template.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package api
  2. import (
  3. "github.com/0xJacky/Nginx-UI/server/pkg/nginx"
  4. "github.com/0xJacky/Nginx-UI/server/service"
  5. "github.com/gin-gonic/gin"
  6. "net/http"
  7. )
  8. func GetTemplate(c *gin.Context) {
  9. var ngxConfig *nginx.NgxConfig
  10. ngxConfig = &nginx.NgxConfig{
  11. Servers: []*nginx.NgxServer{
  12. {
  13. Directives: []*nginx.NgxDirective{
  14. {
  15. Directive: "listen",
  16. Params: "80",
  17. },
  18. {
  19. Directive: "listen",
  20. Params: "[::]:80",
  21. },
  22. {
  23. Directive: "server_name",
  24. },
  25. {
  26. Directive: "root",
  27. },
  28. {
  29. Directive: "index",
  30. },
  31. },
  32. },
  33. },
  34. }
  35. c.JSON(http.StatusOK, gin.H{
  36. "message": "ok",
  37. "template": ngxConfig.BuildConfig(),
  38. "tokenized": ngxConfig,
  39. })
  40. }
  41. func GetTemplateConfList(c *gin.Context) {
  42. configList, err := service.GetTemplateList("conf")
  43. if err != nil {
  44. ErrHandler(c, err)
  45. return
  46. }
  47. c.JSON(http.StatusOK, gin.H{
  48. "data": configList,
  49. })
  50. }
  51. func GetTemplateBlockList(c *gin.Context) {
  52. configList, err := service.GetTemplateList("block")
  53. if err != nil {
  54. ErrHandler(c, err)
  55. return
  56. }
  57. c.JSON(http.StatusOK, gin.H{
  58. "data": configList,
  59. })
  60. }
  61. func GetTemplateBlock(c *gin.Context) {
  62. type resp struct {
  63. service.ConfigInfoItem
  64. service.ConfigDetail
  65. }
  66. var bindData map[string]service.TVariable
  67. _ = c.ShouldBindJSON(&bindData)
  68. info := service.GetTemplateInfo("block", c.Param("name"))
  69. if bindData == nil {
  70. bindData = info.Variables
  71. }
  72. detail, err := service.ParseTemplate("block", c.Param("name"), bindData)
  73. if err != nil {
  74. ErrHandler(c, err)
  75. return
  76. }
  77. info.Variables = bindData
  78. c.JSON(http.StatusOK, resp{
  79. info,
  80. detail,
  81. })
  82. }