dns_credential.go 2.4 KB

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