router.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package routers
  2. import (
  3. "fmt"
  4. "github.com/astaxie/beego"
  5. "github.com/astaxie/beego/context"
  6. "github.com/astaxie/beego/logs"
  7. "nginx-ui/server/base"
  8. config2 "nginx-ui/server/config"
  9. "nginx-ui/server/constants"
  10. "nginx-ui/server/middleware"
  11. "nginx-ui/server/modules/agent_server"
  12. "nginx-ui/server/modules/auth_token"
  13. "nginx-ui/server/modules/ldap"
  14. "nginx-ui/server/modules/nginx/nginx_controller"
  15. "nginx-ui/server/modules/oauth2"
  16. "nginx-ui/server/modules/proxy"
  17. "nginx-ui/server/modules/settings"
  18. "nginx-ui/server/modules/user"
  19. "nginx-ui/server/modules/wechat"
  20. "nginx-ui/server/utils"
  21. "regexp"
  22. "strings"
  23. )
  24. var NginxR = "/nginx"
  25. var NginxGetR = "/nginx/:id"
  26. var NginxRefreshR = "/nginx/:id/http/refresh"
  27. var NginxStartR = "/nginx/:id/start"
  28. var NginxStopR = "/nginx/:id/stop"
  29. var NginxStatusR = "/nginx/:id/status"
  30. func init() {
  31. config := config2.Config
  32. userController := user.NewUserController()
  33. logs.Info("baseApi", config.BaseApi)
  34. agentServer := agent_server.NewServer()
  35. ns := beego.NewNamespace(config.BaseApi,
  36. beego.NSRouter(NginxR, &nginx_controller.NginxController{}),
  37. beego.NSRouter(NginxGetR, &nginx_controller.NginxController{}, "post:Update"),
  38. beego.NSRouter(NginxGetR, &nginx_controller.NginxController{}, "get:GetNginx"),
  39. beego.NSRouter(NginxGetR, &nginx_controller.NginxController{}, "delete:DelNginx"),
  40. beego.NSRouter(NginxRefreshR, &nginx_controller.NginxController{}, "post:RefreshHttp"),
  41. beego.NSRouter(NginxStartR, &nginx_controller.NginxController{}, "post:StartNginx"),
  42. beego.NSRouter(NginxStopR, &nginx_controller.NginxController{}, "post:StopNginx"),
  43. beego.NSRouter(NginxStatusR, &nginx_controller.NginxController{}, "post:StatusNginx"),
  44. // certs
  45. beego.NSRouter("/nginx/:id/certs", &nginx_controller.CertController{}),
  46. beego.NSRouter("/nginx/:id/certs/sync", &nginx_controller.CertController{}, "post:Sync"),
  47. // nginx server apis
  48. beego.NSRouter("/nginx/:id/server", &nginx_controller.ServerController{}),
  49. beego.NSRouter("/nginx/:id/server/refresh", &nginx_controller.ServerController{}, "post:Refresh"),
  50. // file upload download
  51. beego.NSRouter("/nginx/:id/file/deploy", &nginx_controller.FileController{}, "post:Deploy"),
  52. beego.NSRouter("/file", &nginx_controller.FileController{}),
  53. beego.NSRouter(constants.DownloadFileUrl, &nginx_controller.FileController{}, "get:Download"),
  54. beego.NSRouter("/logger", &nginx_controller.LoggerController{}),
  55. // 角色
  56. beego.NSRouter("/role/list", &user.RoleController{}, "post:List"),
  57. beego.NSRouter("/role/save", &user.RoleController{}, "post:Save"),
  58. beego.NSRouter("/role/delete", &user.RoleController{}, "post:Delete"),
  59. // 用户
  60. beego.NSRouter("/user/login", userController, "post:Login"),
  61. beego.NSRouter("/user/logout", userController, "post:Logout"),
  62. beego.NSRouter("/user/info", userController, "get:User"),
  63. beego.NSRouter("/user/info", userController, "post:UpdateUserInfo"),
  64. beego.NSRouter("/user/register", userController, "post:Register"),
  65. beego.NSRouter("/user/list", userController, "post:Users"),
  66. beego.NSRouter("/user/detail", userController, "get:GetDetail"),
  67. beego.NSRouter("/user/save", userController, "post:Update"),
  68. beego.NSRouter("/user/modifyPassword", userController, "post:UpdatePassword"),
  69. beego.NSRouter("/user/resetPassword", userController, "post:ResetPassword"),
  70. beego.NSRouter("/oauth2", &oauth2.Controller{}),
  71. beego.NSRouter("/oauth2/callback", &oauth2.Controller{}, "post:Callback"),
  72. // settings
  73. beego.NSRouter("/settings/list", &settings.SettingController{}, "post:List"),
  74. beego.NSRouter("/settings/save", &settings.SettingController{}, "post:Save"),
  75. beego.NSRouter("/settings/delete", &settings.SettingController{}, "post:Delete"),
  76. // 路由
  77. beego.NSRouter("/settings/route/list", &settings.RouteController{}, "post:List"),
  78. beego.NSRouter("/settings/route/save", &settings.RouteController{}, "post:Save"),
  79. beego.NSRouter("/settings/route/delete", &settings.RouteController{}, "post:Delete"),
  80. // 其它设置
  81. beego.NSRouter("/wechat/webhook/gitlab", &wechat.Controller{}, "post:WebhookFromGitlab"),
  82. // 代理设置
  83. beego.NSRouter("/proxy/list", proxy.Instance, "post:List"),
  84. beego.NSRouter("/proxy/save", proxy.Instance, "post:Save"),
  85. beego.NSRouter("/proxy/remove", proxy.Instance, "post:Remove"),
  86. // auth-token
  87. beego.NSRouter("/auth-token/list", auth_token.AuthController, "post:List"),
  88. beego.NSRouter("/auth-token/create", auth_token.AuthController, "post:Create"),
  89. beego.NSRouter("/auth-token/update", auth_token.AuthController, "post:Update"),
  90. beego.NSRouter("/auth-token/remove", auth_token.AuthController, "post:DeleteById"),
  91. beego.NSRouter("/auth-token/detail", auth_token.AuthController, "get:GetDetail"),
  92. // agent
  93. beego.NSHandler(constants.AgentConnectUrl, agentServer),
  94. )
  95. beego.AddNamespace(ns)
  96. // LDAP路由
  97. beego.AddNamespace(ldap.InitRouter(config.BaseApi))
  98. proxy.Proxy.AddNoProxy(regexp.MustCompile(fmt.Sprintf("^(%s)", config.BaseApi)))
  99. beego.InsertFilter("/**", beego.BeforeRouter, proxy.Proxy.Filter)
  100. beego.InsertFilter(fmt.Sprintf("%s/**", config.BaseApi), beego.BeforeRouter, middleware.AuthFilter)
  101. beego.Router(fmt.Sprintf("%s/config.js", config.ContextPath), &nginx_controller.ConfigController{})
  102. // portal static assets
  103. beego.SetStaticPath(config.ContextPath, utils.GetStaticDir())
  104. //
  105. webPrefix := config.ContextPath
  106. if !strings.HasSuffix(webPrefix, "/") {
  107. webPrefix = webPrefix + "/"
  108. }
  109. beego.Get("/", func(ctx *context.Context) {
  110. ctx.Redirect(301, webPrefix)
  111. })
  112. beego.ErrorController(&base.ErrorController{})
  113. }