@@ -5,12 +5,10 @@ import (
55 "NodePassDash/internal/dashboard"
66 dbPkg "NodePassDash/internal/db"
77 "NodePassDash/internal/endpoint"
8- "NodePassDash/internal/endpointcache"
9- "NodePassDash/internal/nodepass"
10- "NodePassDash/internal/router"
11-
128 // "NodePassDash/internal/lifecycle"
139 log "NodePassDash/internal/log"
10+ "NodePassDash/internal/nodepass"
11+ "NodePassDash/internal/router"
1412 "NodePassDash/internal/sse"
1513 "NodePassDash/internal/tunnel"
1614 "NodePassDash/internal/websocket"
@@ -56,7 +54,7 @@ func serveStaticFile(c *gin.Context, fsys fs.FS, fileName, contentType string) {
5654}
5755
5856// parseFlags 解析命令行参数并处理基础配置
59- func parseFlags () (resetPwd bool , port , certFile , keyFile string , showVersion , disableLogin , sseDebugLog bool ) {
57+ func parseFlags () (resetPwd bool , port , certFile , keyFile string , showVersion , disableLogin bool ) {
6058 // 命令行参数处理
6159 resetPwdCmd := flag .Bool ("resetpwd" , false , "重置管理员密码" )
6260 portFlag := flag .String ("port" , "" , "HTTP 服务端口 (优先级高于环境变量 PORT),默认 3000" )
@@ -68,8 +66,6 @@ func parseFlags() (resetPwd bool, port, certFile, keyFile string, showVersion, d
6866 tlsKeyFlag := flag .String ("key" , "" , "TLS 私钥文件路径" )
6967 // 禁用用户名密码登录参数
7068 disableLoginFlag := flag .Bool ("disable-login" , false , "禁用用户名密码登录,仅允许 OAuth2 登录" )
71- // SSE 调试日志参数
72- sseDebugLogFlag := flag .Bool ("sse-debug-log" , false , "启用 SSE 消息调试日志" )
7369
7470 flag .Parse ()
7571
@@ -113,16 +109,7 @@ func parseFlags() (resetPwd bool, port, certFile, keyFile string, showVersion, d
113109 }
114110 }
115111
116- // 设置 SSE 调试日志配置
117- // 优先级:命令行参数 > 环境变量
118- sseDebugLog = * sseDebugLogFlag
119- if ! sseDebugLog {
120- if env := os .Getenv ("SSE_DEBUG_LOG" ); env == "true" || env == "1" {
121- sseDebugLog = true
122- }
123- }
124-
125- return * resetPwdCmd , port , certFile , keyFile , * versionFlag || * vFlag , disableLogin , sseDebugLog
112+ return * resetPwdCmd , port , certFile , keyFile , * versionFlag || * vFlag , disableLogin
126113}
127114
128115// setupStaticFiles 配置静态文件服务
@@ -192,7 +179,7 @@ func setupStaticFiles(ginRouter *gin.Engine) error {
192179}
193180
194181// initializeServices 初始化所有服务
195- func initializeServices (sseDebugLog bool ) (* gorm.DB , * auth.Service , * endpoint.Service , * tunnel.Service , * dashboard.Service , * sse.Service , * sse.Manager , * websocket.Service , error ) {
182+ func initializeServices () (* gorm.DB , * auth.Service , * endpoint.Service , * tunnel.Service , * dashboard.Service , * sse.Service , * sse.Manager , * websocket.Service , error ) {
196183 // 获取GORM数据库连接
197184 gormDB := dbPkg .GetDB ()
198185 log .Info ("数据库连接成功" )
@@ -203,20 +190,13 @@ func initializeServices(sseDebugLog bool) (*gorm.DB, *auth.Service, *endpoint.Se
203190 log .Errorf ("系统初始化失败: %v" , err )
204191 }
205192
206- // 初始化NodePass客户端缓存(用于API调用)
193+ // 初始化端点缓存
207194 if err := nodepass .InitializeCache (gormDB ); err != nil {
208- log .Errorf ("初始化NodePass客户端缓存失败 : %v" , err )
195+ log .Errorf ("初始化端点缓存失败 : %v" , err )
209196 } else {
210- log .Infof ("NodePass客户端缓存初始化成功 ,加载了 %d 个端点" , nodepass .GetCache ().Count ())
197+ log .Infof ("端点缓存初始化成功 ,加载了 %d 个端点" , nodepass .GetCache ().Count ())
211198 }
212199
213- // 初始化Endpoint内存缓存(类似Nezha的ServerShared)
214- if err := endpointcache .InitShared (gormDB ); err != nil {
215- log .Errorf ("初始化Endpoint内存缓存失败: %v" , err )
216- return nil , nil , nil , nil , nil , nil , nil , nil , fmt .Errorf ("初始化Endpoint缓存失败: %v" , err )
217- }
218- log .Infof ("✅ Endpoint内存缓存初始化成功,已加载 %d 个端点" , endpointcache .Shared .Count ())
219-
220200 // 初始化其他服务
221201 endpointService := endpoint .NewService (gormDB )
222202 tunnelService := tunnel .NewService (gormDB )
@@ -229,7 +209,7 @@ func initializeServices(sseDebugLog bool) (*gorm.DB, *auth.Service, *endpoint.Se
229209 if err != nil {
230210 return nil , nil , nil , nil , nil , nil , nil , nil , fmt .Errorf ("获取底层sql.DB失败: %v" , err )
231211 }
232- sseManager := sse .NewManager (sqlDB , sseService , sseDebugLog )
212+ sseManager := sse .NewManager (sqlDB , sseService )
233213
234214 // 设置Manager引用到Service(避免循环依赖)
235215 sseService .SetManager (sseManager )
@@ -282,25 +262,6 @@ func startBackgroundServices(gormDB *gorm.DB, sseService *sse.Service, sseManage
282262 log .Info ("流量数据优化调度器已启动" )
283263 }()
284264
285- // 启动Endpoint缓存定时持久化任务(每30秒持久化一次变更)
286- go func () {
287- ticker := time .NewTicker (30 * time .Second )
288- defer ticker .Stop ()
289-
290- for range ticker .C {
291- if err := endpointcache .Shared .PersistIfNeeded (gormDB ); err != nil {
292- log .Errorf ("❌ 持久化Endpoint缓存失败: %v" , err )
293- } else {
294- stats := endpointcache .Shared .GetStats ()
295- dirtyCount := stats ["dirty_count" ].(int )
296- if dirtyCount > 0 {
297- log .Debugf ("💾 持久化了 %d 个变更的端点" , dirtyCount )
298- }
299- }
300- }
301- }()
302- log .Info ("Endpoint缓存定时持久化任务已启动(间隔: 30秒)" )
303-
304265 // 启动SSE相关服务
305266 go func () {
306267 sseService .StartStoreWorkers (4 ) // 减少worker数量
@@ -323,59 +284,51 @@ func startBackgroundServices(gormDB *gorm.DB, sseService *sse.Service, sseManage
323284}
324285
325286// gracefulShutdown 优雅关闭服务
326- func gracefulShutdown (server * http.Server , gormDB * gorm. DB , trafficScheduler * dashboard.TrafficScheduler , wsService * websocket.Service , sseManager * sse.Manager , sseService * sse.Service ) {
287+ func gracefulShutdown (server * http.Server , trafficScheduler * dashboard.TrafficScheduler , wsService * websocket.Service , sseManager * sse.Manager , sseService * sse.Service ) {
327288 // 等待中断信号
328289 quit := make (chan os.Signal , 1 )
329290 signal .Notify (quit , syscall .SIGINT , syscall .SIGTERM )
330291 <- quit
331292
332293 // 关闭服务
333- log .Infof ("⏳ 正在关闭服务器..." )
334-
335- // 1. 优先持久化Endpoint缓存(保证数据不丢失)
336- log .Infof ("💾 正在持久化Endpoint缓存..." )
337- if err := endpointcache .Shared .Shutdown (gormDB ); err != nil {
338- log .Errorf ("❌ 关闭Endpoint缓存失败: %v" , err )
339- } else {
340- log .Infof ("✅ Endpoint缓存已成功关闭并持久化" )
341- }
294+ log .Infof ("正在关闭服务器..." )
342295
343296 // 关闭增强系统(暂时注释掉)
344297 // if err := lifecycleManager.Shutdown(); err != nil {
345298 // log.Errorf("增强系统关闭失败: %v", err)
346299 // }
347300
348- // 2. 关闭流量调度器
301+ // 关闭流量调度器
349302 if trafficScheduler != nil {
350303 trafficScheduler .Stop ()
351304 }
352305
353- // 3. 关闭WebSocket系统
306+ // 关闭WebSocket系统
354307 if wsService != nil {
355308 wsService .Stop ()
356309 }
357310
358- // 4. 关闭SSE系统
311+ // 关闭SSE系统
359312 if sseManager != nil {
360313 sseManager .Close ()
361314 }
362315 if sseService != nil {
363316 sseService .Close ()
364317 }
365318
366- // 5. 优雅关闭HTTP服务器
319+ // 优雅关闭HTTP服务器
367320 shutdownCtx , shutdownCancel := context .WithTimeout (context .Background (), 5 * time .Second )
368321 defer shutdownCancel ()
369322
370323 if err := server .Shutdown (shutdownCtx ); err != nil {
371324 log .Errorf ("服务器关闭错误: %v" , err )
372325 }
373326
374- log .Infof ("✅ 服务器已安全关闭 " )
327+ log .Infof ("服务器已关闭 " )
375328}
376329
377330func main () {
378- resetPwd , port , certFile , keyFile , showVersion , disableLogin , sseDebugLog := parseFlags ()
331+ resetPwd , port , certFile , keyFile , showVersion , disableLogin := parseFlags ()
379332
380333 // 如果指定了版本参数,显示版本信息后退出
381334 if showVersion {
@@ -397,7 +350,7 @@ func main() {
397350 }
398351
399352 // 初始化所有服务
400- gormDB , authService , endpointService , tunnelService , dashboardService , sseService , sseManager , wsService , err := initializeServices (sseDebugLog )
353+ gormDB , authService , endpointService , tunnelService , dashboardService , sseService , sseManager , wsService , err := initializeServices ()
401354 if err != nil {
402355 log .Errorf ("服务初始化失败: %v" , err )
403356 return
@@ -463,5 +416,5 @@ func main() {
463416 _ = ctx
464417
465418 // 优雅关闭服务
466- gracefulShutdown (server , gormDB , trafficScheduler , wsService , sseManager , sseService )
419+ gracefulShutdown (server , trafficScheduler , wsService , sseManager , sseService )
467420}
0 commit comments