按意图重做在 huakui 代码底: - 删除数据埋点逻辑:移除 pub/dataReport、reportser、srv_report、 eventmod、上报定时任务及注册/登录/点赞/收藏/评论/解锁/订单处的 上报调用和 reportSdkConfig 配置下发 - app 认证改为按设备ID识别用户:去掉 token 校验、Register/Login/ ResetPassword/GuestLogin 接口,新增 ResolveDeviceUser 和设备缓存 - 广告改为按 AppId 从媒资中心拉取:pub/storage 新增 QueryAdvitise, UpdateAdvitiseData 替代 UpdateAdvitiseDataFromJt - 后台登录取消谷歌二次验证,密码正确即登录 - 短剧/专题 slug 改为 10 位大小写字母+数字混合 - 本地 app.yaml/web.yaml 保留 HKDJNET_* 模板(不提交生产凭据) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
119 lines
3.0 KiB
Go
119 lines
3.0 KiB
Go
package router
|
|
|
|
import (
|
|
"hkdj-web-server/app/api/home"
|
|
"hkdj-web-server/app/appg"
|
|
"hkdj-web-server/app/middleware/auth"
|
|
"hkdj-web-server/app/middleware/cors"
|
|
"hkdj-web-server/app/middleware/ipblacklist"
|
|
"hkdj-web-server/app/middleware/ipstat"
|
|
"hkdj-web-server/app/middleware/reptilerecord"
|
|
"hkdj-web-server/app/middleware/templatecache"
|
|
"hkdj-web-server/app/middleware/visit"
|
|
"hkdj-web-server/pub/common"
|
|
"hkdj-web-server/pub/common/enum/consts"
|
|
"hkdj-web-server/pub/common/log"
|
|
"hkdj-web-server/pub/common/useragent"
|
|
"net/http"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/DeanThompson/ginpprof"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func Init() (engine *gin.Engine) {
|
|
// 设置启动模式
|
|
switch appg.Conf.RunMod {
|
|
case "dev":
|
|
gin.SetMode(gin.DebugMode)
|
|
case "test":
|
|
gin.SetMode(gin.TestMode)
|
|
case "prod":
|
|
gin.SetMode(gin.ReleaseMode)
|
|
default:
|
|
gin.SetMode(gin.DebugMode)
|
|
}
|
|
// 初始化gin引擎
|
|
engine = gin.Default()
|
|
if appg.Conf.TrustedProxies != "" {
|
|
proxies := strings.Split(appg.Conf.TrustedProxies, ",")
|
|
for i, p := range proxies {
|
|
proxies[i] = strings.TrimSpace(p)
|
|
}
|
|
_ = engine.SetTrustedProxies(proxies)
|
|
log.Infof("SetTrustedProxies: %v", proxies)
|
|
} else {
|
|
_ = engine.SetTrustedProxies([]string{})
|
|
log.Infof("SetTrustedProxies: none (direct TCP IP mode)")
|
|
}
|
|
engine.HandleMethodNotAllowed = true
|
|
engine.MaxMultipartMemory = 60 << 20
|
|
|
|
common.InitGinSecret(appg.Conf.ResKey, consts.RunMod(appg.Conf.RunMod))
|
|
// 注册中间件
|
|
registeMiddleware(engine)
|
|
// 注册路由
|
|
registeRouter(engine)
|
|
// 是否开启监控服务
|
|
if appg.Conf.Pprof {
|
|
ginpprof.Wrap(engine)
|
|
}
|
|
return
|
|
}
|
|
|
|
func registeMiddleware(engine *gin.Engine) {
|
|
engine.Use(
|
|
// gin.Recovery(),
|
|
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", "X-User-Agent",
|
|
"device", "api_version", "x-api-key", "channel",
|
|
"sid",
|
|
"device_brand", "device-brand",
|
|
"device_model", "device-model",
|
|
"system_name", "system-name",
|
|
"system_version", "system-version",
|
|
useragent.SDKCommonHeader,
|
|
},
|
|
ExposedHeaders: []string{"Content-Disposition"},
|
|
OptionsSuccessStatus: http.StatusOK,
|
|
}),
|
|
// 必须是此顺序, happens before原则
|
|
//monitor.Check,
|
|
ipblacklist.IpBlackListMiddleware,
|
|
reptilerecord.ReptileRecord,
|
|
ipstat.IpStatMiddleware,
|
|
useragent.UserAgent,
|
|
auth.Auth,
|
|
// calllimit.Check,
|
|
visit.Visit,
|
|
)
|
|
}
|
|
|
|
// 注册路由
|
|
func registeRouter(r *gin.Engine) {
|
|
videoRouter(r)
|
|
playletRouter(r)
|
|
playletThemeRouter(r)
|
|
commentRouter(r)
|
|
coinRouter(r)
|
|
feedbackRouter(r)
|
|
contactUsRouter(r)
|
|
userCenterRouter(r)
|
|
authRouter(r)
|
|
rechargeRouter(r)
|
|
rechargePackageRouter(r)
|
|
uploadRouter(r)
|
|
healthRouter(r)
|
|
configRouter(r)
|
|
appInfoRouter(r)
|
|
translationRouter(r)
|
|
navigationRouter(r)
|
|
statcenterRouter(r)
|
|
r.GET("/notpage", templatecache.WithCache(time.Minute*1), home.PageNotFound)
|
|
|
|
}
|