save.go 915 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package config
  2. import (
  3. "os"
  4. "github.com/0xJacky/Nginx-UI/internal/helper"
  5. "github.com/0xJacky/Nginx-UI/internal/nginx"
  6. "github.com/0xJacky/Nginx-UI/model"
  7. "github.com/0xJacky/Nginx-UI/query"
  8. "gorm.io/gen/field"
  9. )
  10. func Save(absPath string, content string, cfg *model.Config) (err error) {
  11. q := query.Config
  12. if cfg == nil {
  13. cfg, err = q.Assign(field.Attrs(&model.Config{
  14. Filepath: absPath,
  15. })).Where(q.Filepath.Eq(absPath)).FirstOrCreate()
  16. if err != nil {
  17. return
  18. }
  19. }
  20. if !helper.IsUnderDirectory(absPath, nginx.GetConfPath()) {
  21. return ErrPathIsNotUnderTheNginxConfDir
  22. }
  23. err = CheckAndCreateHistory(absPath, content)
  24. if err != nil {
  25. return
  26. }
  27. err = os.WriteFile(absPath, []byte(content), 0644)
  28. if err != nil {
  29. return
  30. }
  31. res := nginx.Control(nginx.Reload)
  32. if res.IsError() {
  33. return res.GetError()
  34. }
  35. err = SyncToRemoteServer(cfg)
  36. if err != nil {
  37. return
  38. }
  39. return
  40. }