package router import ( "91porn-server/web/middleware/limitHandler" "fmt" "net/http" "runtime/debug" "91porn-server/common" "91porn-server/common/constant" "91porn-server/common/tg" "91porn-server/middleware/cors" "91porn-server/middleware/ginzap" "91porn-server/middleware/ip" "91porn-server/web/middleware/authweb" "91porn-server/web/middleware/checkPermission" "91porn-server/web/service/certificateser" "91porn-server/web/webg" "github.com/gin-contrib/pprof" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) // SetupGin 初始化gin router func SetupGin() *gin.Engine { gin.SetMode(gin.DebugMode) if webg.Conf.Base.Env == constant.ProdEnv { gin.SetMode(gin.ReleaseMode) } router := gin.New() router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) if webg.Conf.Base.PProf { pprof.Register(router) // 性能分析工具 } router.ForwardedByClientIP = true router.Use(ip.RealIP) router.Use( ginzap.Logger([]string{constant.CtxAdminAct, constant.CtxIP}), ginzap.Recovery(true, func(err interface{}) { stack := string(debug.Stack()) common.Go(func() { _ = webg.Bot.Send(tg.Msg{ChatId: tg.ChatIdServerTeam, Text: fmt.Sprintf("[Web-Server] panic:%+v stack:%s", err, stack)}) }) })) router.Use(cors.Cors(&cors.Options{ Origin: nil, // "*" Methods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodHead, http.MethodDelete}, AllowedHeaders: []string{"Content-Length", "Content-Type", "Authorization"}, ExposedHeaders: []string{"Content-Disposition", "Refresh-Authorization"}, OptionsSuccessStatus: http.StatusOK, })) router.HandleMethodNotAllowed = true router.NoMethod(func(c *gin.Context) { c.JSON(http.StatusMethodNotAllowed, gin.H{"result": false, "error": "Method Not Allowed"}) }) router.NoRoute(func(c *gin.Context) { c.JSON(http.StatusNotFound, gin.H{"result": false, "error": "Endpoint Not Found"}) }) registerRouter(router) return router } func registerRouter(router *gin.Engine) { //root Router 根组 rootRouter := router.Group("/api/web", authweb.Auth, checkPermission.CheckPermission, limitHandler.LoginLimit, ) { //web后台管理 admin := rootRouter.Group("/admin") { newActivityRoute(admin) productRouter(admin) paymentGuideRouter(admin) sceneBannerRouter(admin) vipCardExperimentRouter(admin) productBenefitRouter(admin) tagRouter(admin) updownloadRouter(admin) locationRoute(admin) toneRoute(admin) vidRouter(admin) imageTopRouter(admin) adsRouter(admin) logRouter(admin) annouRouter(admin) userRouter(admin) versionRouter(admin) adminRouter(admin) authorRouter(admin) exportRouter(admin) activityRouter(admin) withdrawRouter(admin) rechargeRouter(admin) sourceRouter(admin) proxyRouter(admin) promoteUrlRouter(admin) syncCdnRouter(admin) filterRouter(admin) ipblockRouter(admin) ipwhiteRouter(admin) infmtRoute(admin) exchangeCodeRouter(admin) chatRobotRouter(admin) daichongRouter(admin) goldCfgRouter(admin) extendRouter(admin) freeVidCfgRouter(admin) ldyRouter(admin) fictionRouter(admin) taskRouter(admin) currencyRouter(admin) moduleConfRouter(admin) operationLogRouter(admin) videoActivityRouter(admin) activeRouter(admin) rejectTemp(admin) aiUndressRouter(admin) integralConfigRouter(admin) officialRouter(admin) commentRouter(admin) statRouter(admin) aiChangeFaceRouter(admin) videoGoldCoinRouter(admin) advanceOrderRouter(admin) advanceConfigRouter(admin) userBackpackRouter(admin) integralExchangeRouter(admin) quickSearchRouter(admin) aiMateRouter(admin) aiMateV2Router(admin) sysConfRouter(admin) bannerJumpRouter(admin) mediaRouter(admin) mediaContentRouter(admin) mediaTagRouter(admin) mediaTagDimensionRouter(admin) jingangRouter(admin) imGroupRouter(admin) imGroupMemberRouter(admin) imMessageRouter(admin) nakedChatRouter(admin) nakedChatOrderRouter(admin) aiTextToImageRouter(admin) aiImageToVideoRouter(admin) aiTemplateModuleRouter(admin) aiPlazaRouter(admin) aiModRouter(admin) aiTextToNovelRouter(admin) laosijiRouter(admin) adGroupRouter(admin) checkinRouter(admin) sensitiveWordRouter(admin) newOfficialWebsiteRoute(admin) contentReviewRouter(admin) imRouter(admin) } } // openclaw still 接口 openclawRouter := router.Group("/customer") { commentAgentRouter(openclawRouter) } ext := router.Group("/ext") //对H5接口的 { certificate := ext.Group("certificate") { certificate.POST("/qr", certificateser.QrCode) } } thirdRouter := router.Group("/3rd") { defrayRouter(thirdRouter) daichongCallBackRouter(thirdRouter) addWelfareBackRouter(thirdRouter) } //代充接口 测试时环境 如此配置 ,生产环境 移动到group下 daichongRouter := router.Group("/") { daichongCallBackRouter(daichongRouter) } //数据同步,内部数据中心 syncDataRouter := router.Group("/services") { syncRouter(syncDataRouter) } }