get.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. "path/filepath"
  13. )
  14. type APIConfigResp struct {
  15. config.Config
  16. SyncNodeIds []uint64 `json:"sync_node_ids" gorm:"serializer:json"`
  17. SyncOverwrite bool `json:"sync_overwrite"`
  18. }
  19. func GetConfig(c *gin.Context) {
  20. relativePath := c.Param("path")
  21. absPath := nginx.GetConfPath(relativePath)
  22. if !helper.IsUnderDirectory(absPath, nginx.GetConfPath()) {
  23. c.JSON(http.StatusForbidden, gin.H{
  24. "message": "path is not under the nginx conf path",
  25. })
  26. return
  27. }
  28. stat, err := os.Stat(absPath)
  29. if err != nil {
  30. api.ErrHandler(c, err)
  31. return
  32. }
  33. content, err := os.ReadFile(absPath)
  34. if err != nil {
  35. api.ErrHandler(c, err)
  36. return
  37. }
  38. q := query.Config
  39. g := query.ChatGPTLog
  40. chatgpt, err := g.Where(g.Name.Eq(absPath)).FirstOrCreate()
  41. if err != nil {
  42. api.ErrHandler(c, err)
  43. return
  44. }
  45. if chatgpt.Content == nil {
  46. chatgpt.Content = make([]openai.ChatCompletionMessage, 0)
  47. }
  48. cfg, err := q.Where(q.Filepath.Eq(absPath)).FirstOrInit()
  49. if err != nil {
  50. api.ErrHandler(c, err)
  51. return
  52. }
  53. c.JSON(http.StatusOK, APIConfigResp{
  54. Config: config.Config{
  55. Name: stat.Name(),
  56. Content: string(content),
  57. ChatGPTMessages: chatgpt.Content,
  58. FilePath: absPath,
  59. ModifiedAt: stat.ModTime(),
  60. Dir: filepath.Dir(relativePath),
  61. },
  62. SyncNodeIds: cfg.SyncNodeIds,
  63. SyncOverwrite: cfg.SyncOverwrite,
  64. })
  65. }