router.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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 "server/config"
  10. "server/controllers"
  11. "server/middleware"
  12. "strings"
  13. )
  14. func init() {
  15. config := config2.Config
  16. ns := beego.NewNamespace(config.BaseApi,
  17. beego.NSRouter("/nginx", &controllers.NginxController{}),
  18. beego.NSRouter("/nginx/:id", &controllers.NginxController{}, "get:GetNginx"),
  19. beego.NSRouter("/nginx/:id", &controllers.NginxController{}, "delete:DelNginx"),
  20. beego.NSRouter("/http/refresh", &controllers.NginxController{}, "post:RefreshHttp"),
  21. beego.NSRouter("/nginx/:id/start", &controllers.NginxController{}, "post:StartNginx"),
  22. beego.NSRouter("/nginx/:id/stop", &controllers.NginxController{}, "post:StopNginx"),
  23. beego.NSRouter("/nginx/:id/status", &controllers.NginxController{}, "post:StatusNginx"),
  24. // certs
  25. beego.NSRouter("/nginx/:id/certs", &controllers.CertController{}),
  26. beego.NSRouter("/nginx/:id/certs/sync", &controllers.CertController{}, "post:Sync"),
  27. // nginx server apis
  28. beego.NSRouter("/server", &controllers.ServerController{}),
  29. beego.NSRouter("/server/refresh", &controllers.ServerController{}, "post:Refresh"),
  30. // file upload download
  31. beego.NSRouter("/file", &controllers.FileController{}),
  32. beego.NSRouter("/file/deploy", &controllers.FileController{}, "post:Deploy"),
  33. beego.NSRouter("/user/login", &controllers.UserController{}, "post:Login"),
  34. beego.NSRouter("/user/register", &controllers.UserController{}, "post:Register"),
  35. beego.NSRouter("/oauth2", &controllers.UserController{}),
  36. beego.NSRouter("/oauth2/callback", &controllers.UserController{}, "post:Callback"),
  37. )
  38. beego.AddNamespace(ns)
  39. beego.InsertFilter(fmt.Sprintf("%s/**", config.BaseApi), beego.BeforeRouter, middleware.AuthFilter)
  40. beego.Router(fmt.Sprintf("%s/config.js", config.ContextPath), &controllers.ConfigController{})
  41. // portal static assets
  42. beego.SetStaticPath(config.ContextPath, "static/web")
  43. beego.Get("/", func(ctx *context.Context) {
  44. ctx.Redirect(301, fmt.Sprintf("%s/index.html", config.ContextPath))
  45. })
  46. beego.ErrorHandler("404", func(writer http.ResponseWriter, request *http.Request) {
  47. accept := request.Header.Get("accept")
  48. logs.Warn("404", accept)
  49. if strings.Contains(accept, "json") {
  50. writer.Header().Set("content-type", "application/json")
  51. writer.WriteHeader(200)
  52. resp := controllers.RespData{
  53. Code: -2,
  54. Msg: "server error",
  55. }
  56. str, _ := json.Marshal(&resp)
  57. writer.Write(str)
  58. } else {
  59. writer.WriteHeader(404)
  60. writer.Write([]byte(""))
  61. }
  62. })
  63. }