get.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package config
  2. import (
  3. "github.com/0xJacky/Nginx-UI/api"
  4. "github.com/0xJacky/Nginx-UI/internal/config"
  5. "github.com/0xJacky/Nginx-UI/internal/helper"
  6. "github.com/0xJacky/Nginx-UI/internal/nginx"
  7. "github.com/0xJacky/Nginx-UI/query"
  8. "github.com/gin-gonic/gin"
  9. "github.com/sashabaranov/go-openai"
  10. "net/http"
  11. "os"
  12. )
  13. func GetConfig(c *gin.Context) {
  14. name := c.Param("name")
  15. path := nginx.GetConfPath("/", name)
  16. if !helper.IsUnderDirectory(path, nginx.GetConfPath()) {
  17. c.JSON(http.StatusForbidden, gin.H{
  18. "message": "path is not under the nginx conf path",
  19. })
  20. return
  21. }
  22. stat, err := os.Stat(path)
  23. if err != nil {
  24. api.ErrHandler(c, err)
  25. return
  26. }
  27. content, err := os.ReadFile(path)
  28. if err != nil {
  29. api.ErrHandler(c, err)
  30. return
  31. }
  32. g := query.ChatGPTLog
  33. chatgpt, err := g.Where(g.Name.Eq(path)).FirstOrCreate()
  34. if err != nil {
  35. api.ErrHandler(c, err)
  36. return
  37. }
  38. if chatgpt.Content == nil {
  39. chatgpt.Content = make([]openai.ChatCompletionMessage, 0)
  40. }
  41. c.JSON(http.StatusOK, config.Config{
  42. Name: stat.Name(),
  43. Content: string(content),
  44. ChatGPTMessages: chatgpt.Content,
  45. FilePath: path,
  46. ModifiedAt: stat.ModTime(),
  47. })
  48. }