Skip to content

Commit f237d78

Browse files
committed
build: v3.2.7
1 parent 36b75b2 commit f237d78

File tree

1 file changed

+19
-66
lines changed

1 file changed

+19
-66
lines changed

cmd/server/main.go

Lines changed: 19 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -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

377330
func 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

Comments
 (0)