package api import ( "github.com/gin-gonic/gin" "hightube/internal/stream" ) // SetupRouter configures the Gin router and defines API endpoints func SetupRouter(streamServer *stream.RTMPServer) *gin.Engine { // 设置为发布模式,消除 "[WARNING] Running in debug mode" 警告 gin.SetMode(gin.ReleaseMode) r := gin.Default() BindAdminDependencies(streamServer) // Use CORS middleware to allow web access r.Use(CORSMiddleware(), RequestMetricsMiddleware()) // 清除代理信任警告 "[WARNING] You trusted all proxies" r.SetTrustedProxies(nil) // Public routes r.POST("/api/register", Register) r.POST("/api/login", Login) r.POST("/api/admin/login", AdminLogin) r.GET("/api/rooms/active", GetActiveRooms) r.GET("/live/:room_id", streamServer.HandleHTTPFLV) // WebSocket endpoint for live chat r.GET("/api/ws/room/:room_id", WSHandler) r.GET("/admin", AdminPage) r.GET("/api/admin/logs/stream", AuthMiddleware(), AdminMiddleware(), StreamAdminLogs) // Protected routes (require JWT) authGroup := r.Group("/api") authGroup.Use(AuthMiddleware()) { authGroup.GET("/room/my", GetMyRoom) authGroup.POST("/user/change-password", ChangePassword) adminGroup := authGroup.Group("/admin") adminGroup.Use(AdminMiddleware()) { adminGroup.GET("/session", GetAdminSession) adminGroup.GET("/overview", GetAdminOverview) adminGroup.GET("/health", GetAdminHealth) adminGroup.GET("/logs", ListAdminLogs) adminGroup.POST("/logout", AdminLogout) adminGroup.GET("/users", ListUsers) adminGroup.PATCH("/users/:id/role", UpdateUserRole) adminGroup.PATCH("/users/:id/enabled", UpdateUserEnabled) adminGroup.POST("/users/:id/reset-password", ResetUserPassword) adminGroup.DELETE("/users/:id", DeleteUser) } } return r }