router.go 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package routers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/astaxie/beego"
  6. "github.com/astaxie/beego/context"
  7. "github.com/astaxie/beego/logs"
  8. "net/http"
  9. config2 "nginx-ui/server/config"
  10. "nginx-ui/server/controllers"
  11. "nginx-ui/server/middleware"
  12. "nginx-ui/server/models"
  13. "nginx-ui/server/modules/ldap"
  14. "strings"
  15. )
  16. var NginxR = "/nginx"
  17. var NginxGetR = "/nginx/:id"
  18. var NginxRefreshR = "/nginx/:id/http/refresh"
  19. var NginxStartR = "/nginx/:id/start"
  20. var NginxStopR = "/nginx/:id/stop"
  21. var NginxStatusR = "/nginx/:id/status"
  22. func init() {
  23. config := config2.Config
  24. userController := controllers.NewUserController()
  25. logs.Info("baseApi", config.BaseApi)
  26. ns := beego.NewNamespace(config.BaseApi,
  27. beego.NSRouter(NginxR, &controllers.NginxController{}),
  28. beego.NSRouter(NginxGetR, &controllers.NginxController{}, "post:Update"),
  29. beego.NSRouter(NginxGetR, &controllers.NginxController{}, "get:GetNginx"),
  30. beego.NSRouter(NginxGetR, &controllers.NginxController{}, "delete:DelNginx"),
  31. beego.NSRouter(NginxRefreshR, &controllers.NginxController{}, "post:RefreshHttp"),
  32. beego.NSRouter(NginxStartR, &controllers.NginxController{}, "post:StartNginx"),
  33. beego.NSRouter(NginxStopR, &controllers.NginxController{}, "post:StopNginx"),
  34. beego.NSRouter(NginxStatusR, &controllers.NginxController{}, "post:StatusNginx"),
  35. // certs
  36. beego.NSRouter("/nginx/:id/certs", &controllers.CertController{}),
  37. beego.NSRouter("/nginx/:id/certs/sync", &controllers.CertController{}, "post:Sync"),
  38. // nginx server apis
  39. beego.NSRouter("/nginx/:id/server", &controllers.ServerController{}),
  40. beego.NSRouter("/nginx/:id/server/refresh", &controllers.ServerController{}, "post:Refresh"),
  41. // file upload download
  42. beego.NSRouter("/nginx/:id/file/deploy", &controllers.FileController{}, "post:Deploy"),
  43. beego.NSRouter("/file", &controllers.FileController{}),
  44. beego.NSRouter("/logger", &controllers.LoggerController{}),
  45. beego.NSRouter("/user/login", userController, "post:Login"),
  46. beego.NSRouter("/user/info", userController, "get:User"),
  47. beego.NSRouter("/user/register", userController, "post:Register"),
  48. beego.NSRouter("/oauth2", &controllers.Oauth2Controller{}),
  49. beego.NSRouter("/oauth2/callback", &controllers.Oauth2Controller{}, "post:Callback"),
  50. )
  51. beego.AddNamespace(ns)
  52. // LDAP路由
  53. beego.AddNamespace(ldap.InitRouter(config.BaseApi))
  54. beego.InsertFilter(fmt.Sprintf("%s/**", config.BaseApi), beego.BeforeRouter, middleware.AuthFilter)
  55. beego.Router(fmt.Sprintf("%s/config.js", config.ContextPath), &controllers.ConfigController{})
  56. // portal static assets
  57. beego.SetStaticPath(config.ContextPath, "static/web")
  58. beego.Get("/", func(ctx *context.Context) {
  59. ctx.Redirect(301, fmt.Sprintf("%s/index.html", config.ContextPath))
  60. })
  61. beego.ErrorHandler("404", func(writer http.ResponseWriter, request *http.Request) {
  62. accept := request.Header.Get("accept")
  63. logs.Warn("404", accept)
  64. if strings.Contains(accept, "json") {
  65. writer.Header().Set("content-type", "application/json")
  66. writer.WriteHeader(200)
  67. resp := models.RespData{
  68. Code: -2,
  69. Msg: "server error",
  70. }
  71. str, _ := json.Marshal(&resp)
  72. writer.Write(str)
  73. } else {
  74. writer.WriteHeader(404)
  75. writer.Write([]byte(""))
  76. }
  77. })
  78. }