浏览代码

fix: symbol links are not displayed in config list #272

0xJacky 1 年之前
父节点
当前提交
abe43c5c4d
共有 3 个文件被更改,包括 87 次插入87 次删除
  1. 45 44
      api/config/get.go
  2. 2 2
      api/config/list.go
  3. 40 41
      api/config/modify.go

+ 45 - 44
api/config/get.go

@@ -1,51 +1,52 @@
 package config
 
 import (
-	"github.com/0xJacky/Nginx-UI/api"
-	"github.com/0xJacky/Nginx-UI/internal/config"
-	"github.com/0xJacky/Nginx-UI/internal/nginx"
-	"github.com/0xJacky/Nginx-UI/query"
-	"github.com/gin-gonic/gin"
-	"github.com/sashabaranov/go-openai"
-	"net/http"
-	"os"
+    "github.com/0xJacky/Nginx-UI/api"
+    "github.com/0xJacky/Nginx-UI/internal/config"
+    "github.com/0xJacky/Nginx-UI/internal/nginx"
+    "github.com/0xJacky/Nginx-UI/query"
+    "github.com/gin-gonic/gin"
+    "github.com/sashabaranov/go-openai"
+    "net/http"
+    "os"
 )
 
 func GetConfig(c *gin.Context) {
-	name := c.Param("name")
-	path := nginx.GetConfPath("/", name)
-
-	stat, err := os.Stat(path)
-
-	if err != nil {
-		api.ErrHandler(c, err)
-		return
-	}
-
-	content, err := os.ReadFile(path)
-
-	if err != nil {
-		api.ErrHandler(c, err)
-		return
-	}
-
-	g := query.ChatGPTLog
-	chatgpt, err := g.Where(g.Name.Eq(path)).FirstOrCreate()
-
-	if err != nil {
-		api.ErrHandler(c, err)
-		return
-	}
-
-	if chatgpt.Content == nil {
-		chatgpt.Content = make([]openai.ChatCompletionMessage, 0)
-	}
-
-	c.JSON(http.StatusOK, config.Config{
-		Name:            name,
-		Content:         string(content),
-		ChatGPTMessages: chatgpt.Content,
-		FilePath:        path,
-		ModifiedAt:      stat.ModTime(),
-	})
+    name := c.Param("name")
+
+    path := nginx.GetConfPath("/", name)
+
+    stat, err := os.Stat(path)
+
+    if err != nil {
+        api.ErrHandler(c, err)
+        return
+    }
+
+    content, err := os.ReadFile(path)
+
+    if err != nil {
+        api.ErrHandler(c, err)
+        return
+    }
+
+    g := query.ChatGPTLog
+    chatgpt, err := g.Where(g.Name.Eq(path)).FirstOrCreate()
+
+    if err != nil {
+        api.ErrHandler(c, err)
+        return
+    }
+
+    if chatgpt.Content == nil {
+        chatgpt.Content = make([]openai.ChatCompletionMessage, 0)
+    }
+
+    c.JSON(http.StatusOK, config.Config{
+        Name:            name,
+        Content:         string(content),
+        ChatGPTMessages: chatgpt.Content,
+        FilePath:        path,
+        ModifiedAt:      stat.ModTime(),
+    })
 }

+ 2 - 2
api/config/list.go

@@ -35,7 +35,7 @@ func GetConfigs(c *gin.Context) {
 			}
 		case mode&os.ModeSymlink != 0: // is a symbol
 			var targetPath string
-			targetPath, err = os.Readlink(nginx.GetConfPath(file.Name()))
+			targetPath, err = os.Readlink(nginx.GetConfPath(dir, file.Name()))
 			if err != nil {
 				logger.Error("Read Symlink Error", targetPath, err)
 				continue
@@ -47,7 +47,7 @@ func GetConfigs(c *gin.Context) {
 				logger.Error("Stat Error", targetPath, err)
 				continue
 			}
-			// but target file is not a dir
+			// hide the file if it's target file is a directory
 			if targetInfo.IsDir() {
 				continue
 			}

+ 40 - 41
api/config/modify.go

@@ -1,51 +1,50 @@
 package config
 
 import (
-	"github.com/0xJacky/Nginx-UI/api"
-	"github.com/0xJacky/Nginx-UI/internal/nginx"
-	"github.com/gin-gonic/gin"
-	"net/http"
-	"os"
+    "github.com/0xJacky/Nginx-UI/api"
+    "github.com/0xJacky/Nginx-UI/internal/nginx"
+    "github.com/gin-gonic/gin"
+    "net/http"
+    "os"
 )
 
 type EditConfigJson struct {
-	Content string `json:"content" binding:"required"`
+    Content string `json:"content" binding:"required"`
 }
 
 func EditConfig(c *gin.Context) {
-	name := c.Param("name")
-	var request EditConfigJson
-	err := c.BindJSON(&request)
-	if err != nil {
-		api.ErrHandler(c, err)
-		return
-	}
-	path := nginx.GetConfPath("/", name)
-	content := request.Content
-
-	origContent, err := os.ReadFile(path)
-	if err != nil {
-		api.ErrHandler(c, err)
-		return
-	}
-
-	if content != "" && content != string(origContent) {
-		// model.CreateBackup(path)
-		err = os.WriteFile(path, []byte(content), 0644)
-		if err != nil {
-			api.ErrHandler(c, err)
-			return
-		}
-	}
-
-	output := nginx.Reload()
-
-	if nginx.GetLogLevel(output) >= nginx.Warn {
-		c.JSON(http.StatusInternalServerError, gin.H{
-			"message": output,
-		})
-		return
-	}
-
-	GetConfig(c)
+    name := c.Param("name")
+    var request EditConfigJson
+    err := c.BindJSON(&request)
+    if err != nil {
+        api.ErrHandler(c, err)
+        return
+    }
+    path := nginx.GetConfPath("/", name)
+    content := request.Content
+
+    origContent, err := os.ReadFile(path)
+    if err != nil {
+        api.ErrHandler(c, err)
+        return
+    }
+
+    if content != "" && content != string(origContent) {
+        err = os.WriteFile(path, []byte(content), 0644)
+        if err != nil {
+            api.ErrHandler(c, err)
+            return
+        }
+    }
+
+    output := nginx.Reload()
+
+    if nginx.GetLogLevel(output) >= nginx.Warn {
+        c.JSON(http.StatusInternalServerError, gin.H{
+            "message": output,
+        })
+        return
+    }
+
+    GetConfig(c)
 }