1
0

auto_cert.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package sites
  2. import (
  3. "github.com/0xJacky/Nginx-UI/api"
  4. "github.com/0xJacky/Nginx-UI/internal/helper"
  5. "github.com/0xJacky/Nginx-UI/model"
  6. "github.com/gin-gonic/gin"
  7. "github.com/go-acme/lego/v4/certcrypto"
  8. "github.com/uozi-tech/cosy"
  9. "net/http"
  10. )
  11. func AddDomainToAutoCert(c *gin.Context) {
  12. name := c.Param("name")
  13. var json struct {
  14. DnsCredentialID uint64 `json:"dns_credential_id"`
  15. ChallengeMethod string `json:"challenge_method"`
  16. Domains []string `json:"domains"`
  17. KeyType certcrypto.KeyType `json:"key_type"`
  18. }
  19. if !cosy.BindAndValid(c, &json) {
  20. return
  21. }
  22. certModel, err := model.FirstOrCreateCert(name, helper.GetKeyType(json.KeyType))
  23. if err != nil {
  24. api.ErrHandler(c, err)
  25. return
  26. }
  27. err = certModel.Updates(&model.Cert{
  28. Name: name,
  29. Domains: json.Domains,
  30. AutoCert: model.AutoCertEnabled,
  31. DnsCredentialID: json.DnsCredentialID,
  32. ChallengeMethod: json.ChallengeMethod,
  33. })
  34. if err != nil {
  35. api.ErrHandler(c, err)
  36. return
  37. }
  38. c.JSON(http.StatusOK, certModel)
  39. }
  40. func RemoveDomainFromAutoCert(c *gin.Context) {
  41. name := c.Param("name")
  42. certModel, err := model.FirstCert(name)
  43. if err != nil {
  44. api.ErrHandler(c, err)
  45. return
  46. }
  47. err = certModel.Updates(&model.Cert{
  48. AutoCert: model.AutoCertDisabled,
  49. })
  50. if err != nil {
  51. api.ErrHandler(c, err)
  52. return
  53. }
  54. c.JSON(http.StatusOK, nil)
  55. }