http.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package server
  2. import (
  3. "github.com/gin-gonic/gin"
  4. apiV1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  5. "github.com/go-nunu/nunu-layout-advanced/docs"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/handler"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/middleware"
  8. "github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
  9. "github.com/go-nunu/nunu-layout-advanced/pkg/log"
  10. "github.com/go-nunu/nunu-layout-advanced/pkg/server/http"
  11. "github.com/spf13/viper"
  12. swaggerfiles "github.com/swaggo/files"
  13. ginSwagger "github.com/swaggo/gin-swagger"
  14. )
  15. func NewHTTPServer(
  16. logger *log.Logger,
  17. conf *viper.Viper,
  18. jwt *jwt.JWT,
  19. userHandler *handler.UserHandler,
  20. gameShieldHandler *handler.GameShieldHandler,
  21. webForwardingHandler *handler.WebForwardingHandler,
  22. weblimitHandler *handler.WebLimitHandler,
  23. tcpForwardingHandler *handler.TcpforwardingHandler,
  24. udpForwardingHandler *handler.UdpForWardingHandler,
  25. tcpLimitHandler *handler.TcpLimitHandler,
  26. udpLimitHandler *handler.UdpLimitHandler,
  27. ) *http.Server {
  28. gin.SetMode(gin.DebugMode)
  29. s := http.NewServer(
  30. gin.Default(),
  31. logger,
  32. http.WithServerHost(conf.GetString("http.host")),
  33. http.WithServerPort(conf.GetInt("http.port")),
  34. )
  35. // swagger doc
  36. docs.SwaggerInfo.BasePath = "/v1"
  37. s.GET("/swagger/*any", ginSwagger.WrapHandler(
  38. swaggerfiles.Handler,
  39. //ginSwagger.URL(fmt.Sprintf("http://localhost:%d/swagger/doc.json", conf.GetInt("app.http.port"))),
  40. ginSwagger.DefaultModelsExpandDepth(-1),
  41. ginSwagger.PersistAuthorization(true),
  42. ))
  43. s.Use(
  44. middleware.CORSMiddleware(),
  45. middleware.ResponseLogMiddleware(logger),
  46. middleware.RequestLogMiddleware(logger),
  47. //middleware.SignMiddleware(log),
  48. )
  49. s.GET("/", func(ctx *gin.Context) {
  50. logger.WithContext(ctx).Info("hello")
  51. apiV1.HandleSuccess(ctx, map[string]interface{}{
  52. ":)": "Thank you for using nunu!",
  53. })
  54. })
  55. v1 := s.Group("/v1")
  56. {
  57. // No route group has permission
  58. noAuthRouter := v1.Group("/")
  59. {
  60. noAuthRouter.POST("/register", userHandler.Register)
  61. noAuthRouter.POST("/login", userHandler.Login)
  62. noAuthRouter.POST("/gameShield/add", gameShieldHandler.SubmitGameShield)
  63. noAuthRouter.POST("/gameShield/getField", gameShieldHandler.GetGameShieldField)
  64. noAuthRouter.POST("/gameShield/getKey", gameShieldHandler.GetGameShieldKey)
  65. noAuthRouter.POST("/gameShield/edit", gameShieldHandler.EditGameShield)
  66. noAuthRouter.POST("/gameShield/delete", gameShieldHandler.DeleteGameShield)
  67. noAuthRouter.POST("/webForward/add", webForwardingHandler.AddWebForwarding)
  68. noAuthRouter.POST("/webForward/edit", webForwardingHandler.EditWebForwarding)
  69. noAuthRouter.POST("/webForward/delete", webForwardingHandler.DeleteWebForwarding)
  70. noAuthRouter.POST("/webLimit/add", weblimitHandler.AddWebLimit)
  71. noAuthRouter.POST("/webLimit/edit", weblimitHandler.EditWebLimit)
  72. noAuthRouter.POST("/webLimit/delete", weblimitHandler.DeleteWebLimit)
  73. noAuthRouter.POST("/tcpForward/add", tcpForwardingHandler.AddTcpForwarding)
  74. noAuthRouter.POST("/tcpForward/edit", tcpForwardingHandler.EditTcpForwarding)
  75. noAuthRouter.POST("/tcpForward/delete", tcpForwardingHandler.DeleteTcpForwarding)
  76. noAuthRouter.POST("/udpForward/add", udpForwardingHandler.AddUdpForWarding)
  77. noAuthRouter.POST("/udpForward/edit", udpForwardingHandler.EditUdpForWarding)
  78. noAuthRouter.POST("/udpForward/delete", udpForwardingHandler.DeleteUdpForWarding)
  79. noAuthRouter.POST("/tcpLimit/add", tcpLimitHandler.AddTcpLimit)
  80. noAuthRouter.POST("/tcpLimit/edit", tcpLimitHandler.EditTcpLimit)
  81. noAuthRouter.POST("/tcpLimit/delete", tcpLimitHandler.DeleteTcpLimit)
  82. noAuthRouter.POST("/udpLimit/add", udpLimitHandler.AddUdpLimit)
  83. noAuthRouter.POST("/udpLimit/edit", udpLimitHandler.EditUdpLimit)
  84. noAuthRouter.POST("/udpLimit/delete", udpLimitHandler.DeleteUdpLimit)
  85. }
  86. // Non-strict permission routing group
  87. noStrictAuthRouter := v1.Group("/").Use(middleware.NoStrictAuth(jwt, logger))
  88. {
  89. noStrictAuthRouter.GET("/user", userHandler.GetProfile)
  90. }
  91. // Strict permission routing group
  92. strictAuthRouter := v1.Group("/").Use(middleware.StrictAuth(jwt, logger))
  93. {
  94. strictAuthRouter.PUT("/user", userHandler.UpdateProfile)
  95. }
  96. }
  97. return s
  98. }