cert.go 1.7 KB

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