cert.go 959 B

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