dns_credential.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package api
  2. import (
  3. "github.com/0xJacky/Nginx-UI/server/model"
  4. "github.com/0xJacky/Nginx-UI/server/pkg/cert/dns"
  5. "github.com/0xJacky/Nginx-UI/server/query"
  6. "github.com/gin-gonic/gin"
  7. "github.com/spf13/cast"
  8. "net/http"
  9. )
  10. func GetDnsCredential(c *gin.Context) {
  11. id := cast.ToInt(c.Param("id"))
  12. d := query.DnsCredential
  13. dnsCredential, err := d.FirstByID(id)
  14. if err != nil {
  15. ErrHandler(c, err)
  16. return
  17. }
  18. type apiDnsCredential struct {
  19. model.Model
  20. Name string `json:"name"`
  21. dns.Config
  22. }
  23. c.JSON(http.StatusOK, apiDnsCredential{
  24. Model: dnsCredential.Model,
  25. Name: dnsCredential.Name,
  26. Config: *dnsCredential.Config,
  27. })
  28. }
  29. func GetDnsCredentialList(c *gin.Context) {
  30. d := query.DnsCredential
  31. provider := c.Query("provider")
  32. var data []*model.DnsCredential
  33. var err error
  34. if provider != "" {
  35. data, err = d.Where(d.Provider.Eq(provider)).Find()
  36. } else {
  37. data, err = d.Find()
  38. }
  39. if err != nil {
  40. ErrHandler(c, err)
  41. return
  42. }
  43. c.JSON(http.StatusOK, gin.H{
  44. "data": data,
  45. })
  46. }
  47. type DnsCredentialManageJson struct {
  48. Name string `json:"name" binding:"required"`
  49. Provider string `json:"provider"`
  50. dns.Config
  51. }
  52. func AddDnsCredential(c *gin.Context) {
  53. var json DnsCredentialManageJson
  54. if !BindAndValid(c, &json) {
  55. return
  56. }
  57. json.Config.Name = json.Provider
  58. dnsCredential := model.DnsCredential{
  59. Name: json.Name,
  60. Config: &json.Config,
  61. Provider: json.Provider,
  62. }
  63. d := query.DnsCredential
  64. err := d.Create(&dnsCredential)
  65. if err != nil {
  66. ErrHandler(c, err)
  67. return
  68. }
  69. c.JSON(http.StatusOK, dnsCredential)
  70. }
  71. func EditDnsCredential(c *gin.Context) {
  72. id := cast.ToInt(c.Param("id"))
  73. var json DnsCredentialManageJson
  74. if !BindAndValid(c, &json) {
  75. return
  76. }
  77. d := query.DnsCredential
  78. dnsCredential, err := d.FirstByID(id)
  79. if err != nil {
  80. ErrHandler(c, err)
  81. return
  82. }
  83. json.Config.Name = json.Provider
  84. _, err = d.Where(d.ID.Eq(dnsCredential.ID)).Updates(&model.DnsCredential{
  85. Name: json.Name,
  86. Config: &json.Config,
  87. Provider: json.Provider,
  88. })
  89. if err != nil {
  90. ErrHandler(c, err)
  91. return
  92. }
  93. GetDnsCredential(c)
  94. }
  95. func DeleteDnsCredential(c *gin.Context) {
  96. id := cast.ToInt(c.Param("id"))
  97. d := query.DnsCredential
  98. dnsCredential, err := d.FirstByID(id)
  99. if err != nil {
  100. ErrHandler(c, err)
  101. return
  102. }
  103. err = d.DeleteByID(dnsCredential.ID)
  104. if err != nil {
  105. ErrHandler(c, err)
  106. return
  107. }
  108. c.JSON(http.StatusNoContent, nil)
  109. }