dns_credential.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package certificate
  2. import (
  3. "net/http"
  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. "github.com/uozi-tech/cosy"
  10. )
  11. func GetDnsCredential(c *gin.Context) {
  12. id := cast.ToUint64(c.Param("id"))
  13. d := query.DnsCredential
  14. dnsCredential, err := d.FirstByID(id)
  15. if err != nil {
  16. cosy.ErrHandler(c, err)
  17. return
  18. }
  19. type apiDnsCredential struct {
  20. model.Model
  21. Name string `json:"name"`
  22. Provider string `json:"provider"`
  23. dns.Config
  24. }
  25. c.JSON(http.StatusOK, apiDnsCredential{
  26. Model: dnsCredential.Model,
  27. Name: dnsCredential.Name,
  28. Provider: dnsCredential.Provider,
  29. Config: *dnsCredential.Config,
  30. })
  31. }
  32. func GetDnsCredentialList(c *gin.Context) {
  33. cosy.Core[model.DnsCredential](c).
  34. SetEqual("provider").
  35. SetFussy("name").
  36. PagingList()
  37. }
  38. type DnsCredentialManageJson struct {
  39. Name string `json:"name" binding:"required"`
  40. Provider string `json:"provider"`
  41. dns.Config
  42. }
  43. func AddDnsCredential(c *gin.Context) {
  44. var json DnsCredentialManageJson
  45. if !cosy.BindAndValid(c, &json) {
  46. return
  47. }
  48. json.Config.Name = json.Provider
  49. dnsCredential := model.DnsCredential{
  50. Name: json.Name,
  51. Config: &json.Config,
  52. Provider: json.Provider,
  53. }
  54. d := query.DnsCredential
  55. err := d.Create(&dnsCredential)
  56. if err != nil {
  57. cosy.ErrHandler(c, err)
  58. return
  59. }
  60. c.JSON(http.StatusOK, dnsCredential)
  61. }
  62. func EditDnsCredential(c *gin.Context) {
  63. id := cast.ToUint64(c.Param("id"))
  64. var json DnsCredentialManageJson
  65. if !cosy.BindAndValid(c, &json) {
  66. return
  67. }
  68. d := query.DnsCredential
  69. dnsCredential, err := d.FirstByID(id)
  70. if err != nil {
  71. cosy.ErrHandler(c, err)
  72. return
  73. }
  74. json.Config.Name = json.Provider
  75. _, err = d.Where(d.ID.Eq(dnsCredential.ID)).Updates(&model.DnsCredential{
  76. Name: json.Name,
  77. Config: &json.Config,
  78. Provider: json.Provider,
  79. })
  80. if err != nil {
  81. cosy.ErrHandler(c, err)
  82. return
  83. }
  84. GetDnsCredential(c)
  85. }
  86. func DeleteDnsCredential(c *gin.Context) {
  87. cosy.Core[model.DnsCredential](c).Destroy()
  88. }