package main import ( "fmt" "log" "github.com/freefire/jiang13-bbs/config" "github.com/freefire/jiang13-bbs/model" "github.com/freefire/jiang13-bbs/router" "github.com/freefire/jiang13-bbs/service" "github.com/freefire/jiang13-bbs/version" ) func main() { cfg, err := config.Parse() if err != nil { log.Fatalf("配置解析失败: %v", err) } if err := model.InitDB(cfg.DBDSN); err != nil { log.Fatalf("数据库初始化失败: %v", err) } // 启用 __Host- 认证 cookie 前缀(须在路由注册、读写 cookie 前配置)。 // 以前是 !DevMode 硬绑定,现在解耦:根据 SITE_URL scheme 或 FORCE_HTTPS 判断, // 内网 HTTP 部署零配置即可跑,反代 TLS 但后端只看到 HTTP 时设 FORCE_HTTPS=true。 service.ConfigureCookieNames(cfg.IsSecureOrigin()) // 过期/已吊销 refresh token 定期清理 service.StartRefreshTokenCleanup(model.DB) // 悬赏过期退回 / 抽奖到期开奖 service.StartTypedPostSettler(service.NewPostService(model.DB).WithDevMode(cfg.DevMode)) r, err := router.Setup(cfg) if err != nil { log.Fatalf("路由初始化失败: %v", err) } addr := fmt.Sprintf(":%d", cfg.Port) log.Printf("[jiang13-bbs] 服务启动于 %s (version=%s commit=%s dev=%v workPath=%s dataDir=%s)", addr, version.Version, version.Commit, cfg.DevMode, cfg.WorkPath, cfg.DataDir) if err := r.Run(addr); err != nil { log.Fatalf("服务启动失败: %v", err) } }