cert.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package model
  2. import (
  3. "github.com/0xJacky/Nginx-UI/server/pkg/nginx"
  4. "os"
  5. )
  6. const (
  7. AutoCertEnabled = 1
  8. AutoCertDisabled = -1
  9. )
  10. type Cert struct {
  11. Model
  12. Name string `json:"name"`
  13. Domain string `json:"domain"`
  14. SSLCertificatePath string `json:"ssl_certificate_path"`
  15. SSLCertificateKeyPath string `json:"ssl_certificate_key_path"`
  16. AutoCert int `json:"auto_cert"`
  17. }
  18. func FirstCert(domain string) (c Cert, err error) {
  19. err = db.First(&c, &Cert{
  20. Domain: domain,
  21. }).Error
  22. return
  23. }
  24. func FirstOrCreateCert(domain string) (c Cert, err error) {
  25. err = db.FirstOrCreate(&c, &Cert{Domain: domain}).Error
  26. return
  27. }
  28. func GetAutoCertList() (c []Cert) {
  29. var t []Cert
  30. db.Where("auto_cert", AutoCertEnabled).Find(&t)
  31. // check if this domain is enabled
  32. enabledConfig, err := os.ReadDir(nginx.GetConfPath("sites-enabled"))
  33. if err != nil {
  34. return
  35. }
  36. enabledConfigMap := make(map[string]bool)
  37. for i := range enabledConfig {
  38. enabledConfigMap[enabledConfig[i].Name()] = true
  39. }
  40. for _, v := range t {
  41. if enabledConfigMap[v.Domain] == true {
  42. c = append(c, v)
  43. }
  44. }
  45. return
  46. }
  47. func GetCertList(name, domain string) (c []Cert) {
  48. tx := db
  49. if name != "" {
  50. tx = tx.Where("name LIKE ? or domain LIKE ?", "%"+name+"%", "%"+name+"%")
  51. }
  52. if domain != "" {
  53. tx = tx.Where("domain LIKE ?", "%"+domain+"%")
  54. }
  55. tx.Find(&c)
  56. return
  57. }
  58. func FirstCertByID(id int) (c Cert, err error) {
  59. err = db.First(&c, id).Error
  60. return
  61. }
  62. func (c *Cert) Updates(n *Cert) error {
  63. return db.Model(c).Updates(n).Error
  64. }
  65. func (c *Cert) Remove() error {
  66. return db.Where("domain", c.Domain).Delete(c).Error
  67. }