123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package config
- import (
- "os"
- "github.com/0xJacky/Nginx-UI/internal/helper"
- "github.com/0xJacky/Nginx-UI/internal/nginx"
- "github.com/0xJacky/Nginx-UI/model"
- "github.com/0xJacky/Nginx-UI/query"
- "github.com/uozi-tech/cosy"
- "gorm.io/gen/field"
- )
- func Save(absPath string, content string, cfg *model.Config) (err error) {
- q := query.Config
- if cfg == nil {
- cfg, err = q.Assign(field.Attrs(&model.Config{
- Filepath: absPath,
- })).Where(q.Filepath.Eq(absPath)).FirstOrCreate()
- if err != nil {
- return
- }
- }
- if !helper.IsUnderDirectory(absPath, nginx.GetConfPath()) {
- return ErrPathIsNotUnderTheNginxConfDir
- }
- origContent, err := os.ReadFile(absPath)
- if err != nil {
- return
- }
- if content == string(origContent) {
- return
- }
- err = CheckAndCreateHistory(absPath, content)
- if err != nil {
- return
- }
- err = os.WriteFile(absPath, []byte(content), 0644)
- if err != nil {
- return
- }
- output, err := nginx.Reload()
- if err != nil {
- return
- }
- if nginx.GetLogLevel(output) >= nginx.Warn {
- return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output)
- }
- err = SyncToRemoteServer(cfg)
- if err != nil {
- return
- }
- return
- }
|