1
0

list.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package sites
  2. import (
  3. "github.com/0xJacky/Nginx-UI/api"
  4. "github.com/0xJacky/Nginx-UI/internal/config"
  5. "github.com/0xJacky/Nginx-UI/internal/nginx"
  6. "github.com/gin-gonic/gin"
  7. "net/http"
  8. "os"
  9. "strings"
  10. )
  11. func GetSiteList(c *gin.Context) {
  12. name := c.Query("name")
  13. enabled := c.Query("enabled")
  14. orderBy := c.Query("order_by")
  15. sort := c.DefaultQuery("sort", "desc")
  16. configFiles, err := os.ReadDir(nginx.GetConfPath("sites-available"))
  17. if err != nil {
  18. api.ErrHandler(c, err)
  19. return
  20. }
  21. enabledConfig, err := os.ReadDir(nginx.GetConfPath("sites-enabled"))
  22. if err != nil {
  23. api.ErrHandler(c, err)
  24. return
  25. }
  26. enabledConfigMap := make(map[string]bool)
  27. for i := range enabledConfig {
  28. enabledConfigMap[enabledConfig[i].Name()] = true
  29. }
  30. var configs []config.Config
  31. for i := range configFiles {
  32. file := configFiles[i]
  33. fileInfo, _ := file.Info()
  34. if !file.IsDir() {
  35. // name filter
  36. if name != "" && !strings.Contains(file.Name(), name) {
  37. continue
  38. }
  39. // status filter
  40. if enabled != "" {
  41. if enabled == "true" && !enabledConfigMap[file.Name()] {
  42. continue
  43. }
  44. if enabled == "false" && enabledConfigMap[file.Name()] {
  45. continue
  46. }
  47. }
  48. configs = append(configs, config.Config{
  49. Name: file.Name(),
  50. ModifiedAt: fileInfo.ModTime(),
  51. Size: fileInfo.Size(),
  52. IsDir: fileInfo.IsDir(),
  53. Enabled: enabledConfigMap[file.Name()],
  54. })
  55. }
  56. }
  57. configs = config.Sort(orderBy, sort, configs)
  58. c.JSON(http.StatusOK, gin.H{
  59. "data": configs,
  60. })
  61. }