1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package config
- import (
- "net/http"
- "path/filepath"
- "time"
- "github.com/0xJacky/Nginx-UI/internal/config"
- "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/gin-gonic/gin"
- "github.com/uozi-tech/cosy"
- "gorm.io/gen/field"
- )
- type EditConfigJson struct {
- Content string `json:"content" binding:"required"`
- }
- func EditConfig(c *gin.Context) {
- relativePath := helper.UnescapeURL(c.Param("path"))
- var json struct {
- Content string `json:"content"`
- SyncOverwrite bool `json:"sync_overwrite"`
- SyncNodeIds []uint64 `json:"sync_node_ids"`
- }
- if !cosy.BindAndValid(c, &json) {
- return
- }
- absPath := nginx.GetConfPath(relativePath)
- if !helper.FileExists(absPath) {
- c.JSON(http.StatusNotFound, gin.H{
- "message": "file not found",
- })
- return
- }
- q := query.Config
- cfg, err := q.Assign(field.Attrs(&model.Config{
- Filepath: absPath,
- })).Where(q.Filepath.Eq(absPath)).FirstOrCreate()
- if err != nil {
- return
- }
- // Update database record
- _, err = q.Where(q.Filepath.Eq(absPath)).
- Select(q.SyncNodeIds, q.SyncOverwrite).
- Updates(&model.Config{
- SyncNodeIds: json.SyncNodeIds,
- SyncOverwrite: json.SyncOverwrite,
- })
- if err != nil {
- return
- }
- cfg.SyncNodeIds = json.SyncNodeIds
- cfg.SyncOverwrite = json.SyncOverwrite
- content := json.Content
- err = config.Save(absPath, content, cfg)
- if err != nil {
- cosy.ErrHandler(c, err)
- return
- }
- c.JSON(http.StatusOK, config.Config{
- Name: filepath.Base(absPath),
- Content: content,
- FilePath: absPath,
- ModifiedAt: time.Now(),
- Dir: filepath.Dir(relativePath),
- SyncNodeIds: cfg.SyncNodeIds,
- SyncOverwrite: cfg.SyncOverwrite,
- })
- }
|