template.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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/0xJacky/Nginx-UI/server/settings"
  6. "github.com/gin-gonic/gin"
  7. "net/http"
  8. "strings"
  9. )
  10. func GetTemplate(c *gin.Context) {
  11. content := `proxy_set_header Host $host;
  12. proxy_set_header X-Real_IP $remote_addr;
  13. proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
  14. proxy_pass http://127.0.0.1:{{ HTTP01PORT }};
  15. `
  16. content = strings.ReplaceAll(content, "{{ HTTP01PORT }}",
  17. settings.ServerSettings.HTTPChallengePort)
  18. var ngxConfig *nginx.NgxConfig
  19. ngxConfig = &nginx.NgxConfig{
  20. Servers: []*nginx.NgxServer{
  21. {
  22. Directives: []*nginx.NgxDirective{
  23. {
  24. Directive: "listen",
  25. Params: "80",
  26. },
  27. {
  28. Directive: "listen",
  29. Params: "[::]:80",
  30. },
  31. {
  32. Directive: "server_name",
  33. },
  34. {
  35. Directive: "root",
  36. },
  37. {
  38. Directive: "index",
  39. },
  40. },
  41. Locations: []*nginx.NgxLocation{
  42. {
  43. Path: "/.well-known/acme-challenge",
  44. Content: content,
  45. },
  46. },
  47. },
  48. },
  49. }
  50. c.JSON(http.StatusOK, gin.H{
  51. "message": "ok",
  52. "template": ngxConfig.BuildConfig(),
  53. "tokenized": ngxConfig,
  54. })
  55. }
  56. func GetTemplateConfList(c *gin.Context) {
  57. configList, err := service.GetTemplateList("conf")
  58. if err != nil {
  59. ErrHandler(c, err)
  60. return
  61. }
  62. c.JSON(http.StatusOK, gin.H{
  63. "data": configList,
  64. })
  65. }
  66. func GetTemplateBlockList(c *gin.Context) {
  67. configList, err := service.GetTemplateList("block")
  68. if err != nil {
  69. ErrHandler(c, err)
  70. return
  71. }
  72. c.JSON(http.StatusOK, gin.H{
  73. "data": configList,
  74. })
  75. }
  76. func GetTemplateBlock(c *gin.Context) {
  77. type resp struct {
  78. service.ConfigInfoItem
  79. service.ConfigDetail
  80. }
  81. detail, err := service.ParseTemplate("block", c.Param("name"))
  82. if err != nil {
  83. ErrHandler(c, err)
  84. return
  85. }
  86. c.JSON(http.StatusOK, resp{
  87. service.GetTemplateInfo("block", c.Param("name")),
  88. detail,
  89. })
  90. }