cert.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package model
  2. import (
  3. "github.com/0xJacky/Nginx-UI/server/pkg/nginx"
  4. "os"
  5. "path/filepath"
  6. )
  7. type Cert struct {
  8. Model
  9. Domain string `json:"domain"`
  10. SSLCertificatePath string `json:"ssl_certificate_path"`
  11. }
  12. func FirstCert(domain string) (c Cert, err error) {
  13. err = db.First(&c, &Cert{
  14. Domain: domain,
  15. }).Error
  16. return
  17. }
  18. func FirstOrCreateCert(domain string) (c Cert, err error) {
  19. err = db.FirstOrCreate(&c, &Cert{Domain: domain}).Error
  20. return
  21. }
  22. func GetAutoCertList() (c []Cert) {
  23. var t []Cert
  24. db.Find(&t)
  25. // check if this domain is enabled
  26. enabledConfig, err := os.ReadDir(filepath.Join(nginx.GetNginxConfPath("sites-enabled")))
  27. if err != nil {
  28. return
  29. }
  30. enabledConfigMap := make(map[string]bool)
  31. for i := range enabledConfig {
  32. enabledConfigMap[enabledConfig[i].Name()] = true
  33. }
  34. for _, v := range t {
  35. if enabledConfigMap[v.Domain] == true {
  36. c = append(c, v)
  37. }
  38. }
  39. return
  40. }
  41. func (c *Cert) Updates(n *Cert) error {
  42. return db.Model(c).Updates(n).Error
  43. }
  44. func (c *Cert) Remove() error {
  45. return db.Where("domain", c.Domain).Delete(c).Error
  46. }