routers.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package router
  2. import (
  3. "bufio"
  4. "github.com/0xJacky/Nginx-UI/server/api"
  5. "github.com/gin-contrib/static"
  6. "github.com/gin-gonic/gin"
  7. "net/http"
  8. "strings"
  9. )
  10. func InitRouter() *gin.Engine {
  11. r := gin.New()
  12. r.Use(gin.Logger())
  13. r.Use(recovery())
  14. r.Use(cacheJs())
  15. r.Use(static.Serve("/", mustFS("")))
  16. r.NoRoute(func(c *gin.Context) {
  17. accept := c.Request.Header.Get("Accept")
  18. if strings.Contains(accept, "text/html") {
  19. file, _ := mustFS("").Open("index.html")
  20. defer file.Close()
  21. stat, _ := file.Stat()
  22. c.DataFromReader(http.StatusOK, stat.Size(), "text/html",
  23. bufio.NewReader(file), nil)
  24. return
  25. }
  26. })
  27. root := r.Group("/api")
  28. {
  29. root.GET("install", api.InstallLockCheck)
  30. root.POST("install", api.InstallNginxUI)
  31. root.POST("/login", api.Login)
  32. root.DELETE("/logout", api.Logout)
  33. g := root.Group("/", authRequired())
  34. {
  35. g.GET("analytic", api.Analytic)
  36. g.GET("analytic/init", api.GetAnalyticInit)
  37. g.GET("users", api.GetUsers)
  38. g.GET("user/:id", api.GetUser)
  39. g.POST("user", api.AddUser)
  40. g.POST("user/:id", api.EditUser)
  41. g.DELETE("user/:id", api.DeleteUser)
  42. g.GET("domains", api.GetDomains)
  43. g.GET("domain/:name", api.GetDomain)
  44. // Modify site configuration directly
  45. g.POST("domain/:name", api.EditDomain)
  46. // Transform NgxConf to nginx configuration
  47. g.POST("ngx/build_config", api.BuildNginxConfig)
  48. // Tokenized nginx configuration to NgxConf
  49. g.POST("ngx/tokenize_config", api.TokenizeNginxConfig)
  50. // Format nginx configuration code
  51. g.POST("ngx/format_code", api.FormatNginxConfig)
  52. g.POST("domain/:name/enable", api.EnableDomain)
  53. g.POST("domain/:name/disable", api.DisableDomain)
  54. g.DELETE("domain/:name", api.DeleteDomain)
  55. g.GET("configs", api.GetConfigs)
  56. g.GET("config/*name", api.GetConfig)
  57. g.POST("config", api.AddConfig)
  58. g.POST("config/*name", api.EditConfig)
  59. //g.GET("backups", api.GetFileBackupList)
  60. //g.GET("backup/:id", api.GetFileBackup)
  61. g.GET("template", api.GetTemplate)
  62. g.GET("template/configs", api.GetTemplateConfList)
  63. g.GET("template/blocks", api.GetTemplateBlockList)
  64. g.GET("template/block/:name", api.GetTemplateBlock)
  65. g.GET("cert/issue", api.IssueCert)
  66. g.GET("certs", api.GetCertList)
  67. g.GET("cert/:id", api.GetCert)
  68. g.POST("cert", api.AddCert)
  69. g.POST("cert/:id", api.ModifyCert)
  70. g.DELETE("cert/:id", api.RemoveCert)
  71. // Add domain to auto-renew cert list
  72. g.POST("auto_cert/:domain", api.AddDomainToAutoCert)
  73. // Delete domain from auto-renew cert list
  74. g.DELETE("auto_cert/:domain", api.RemoveDomainFromAutoCert)
  75. // pty
  76. g.GET("pty", api.Pty)
  77. // Nginx log
  78. g.GET("nginx_log", api.NginxLog)
  79. g.POST("nginx_log", api.GetNginxLogPage)
  80. // Settings
  81. g.GET("settings", api.GetSettings)
  82. g.POST("settings", api.SaveSettings)
  83. }
  84. }
  85. return r
  86. }