mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-30 15:49:11 +02:00
Add files via upload
This commit is contained in:
+28
-4
@@ -1,11 +1,15 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"cyberstrike-ai/internal/app"
|
"cyberstrike-ai/internal/app"
|
||||||
"cyberstrike-ai/internal/config"
|
"cyberstrike-ai/internal/config"
|
||||||
"cyberstrike-ai/internal/logger"
|
"cyberstrike-ai/internal/logger"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -31,15 +35,35 @@ func main() {
|
|||||||
// 初始化日志
|
// 初始化日志
|
||||||
log := logger.New(cfg.Log.Level, cfg.Log.Output)
|
log := logger.New(cfg.Log.Level, cfg.Log.Output)
|
||||||
|
|
||||||
|
// 创建可取消的根 context,用于优雅关闭
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
// 监听系统信号
|
||||||
|
sigCh := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
|
||||||
|
|
||||||
// 创建应用
|
// 创建应用
|
||||||
application, err := app.New(cfg, log)
|
application, err := app.New(cfg, log)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("应用初始化失败", "error", err)
|
log.Fatal("应用初始化失败", "error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 启动服务器
|
// 在后台监听信号
|
||||||
if err := application.Run(); err != nil {
|
go func() {
|
||||||
log.Fatal("服务器启动失败", "error", err)
|
sig := <-sigCh
|
||||||
|
log.Info("收到系统信号,开始优雅关闭: " + sig.String())
|
||||||
|
application.Shutdown()
|
||||||
|
cancel()
|
||||||
|
}()
|
||||||
|
|
||||||
|
// 启动服务器(传入 context 以支持优雅关闭)
|
||||||
|
if err := application.RunWithContext(ctx); err != nil {
|
||||||
|
// context 取消导致的关闭不视为错误
|
||||||
|
if ctx.Err() != nil {
|
||||||
|
log.Info("服务器已优雅关闭")
|
||||||
|
} else {
|
||||||
|
log.Fatal("服务器启动失败", "error", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-11
@@ -37,21 +37,15 @@ func main() {
|
|||||||
fmt.Printf(" URL: %s\n", srv.URL)
|
fmt.Printf(" URL: %s\n", srv.URL)
|
||||||
fmt.Printf(" Description: %s\n", srv.Description)
|
fmt.Printf(" Description: %s\n", srv.Description)
|
||||||
fmt.Printf(" Timeout: %d seconds\n", srv.Timeout)
|
fmt.Printf(" Timeout: %d seconds\n", srv.Timeout)
|
||||||
fmt.Printf(" Enabled: %v\n", srv.Enabled)
|
fmt.Printf(" ExternalMCPEnable: %v\n", srv.ExternalMCPEnable)
|
||||||
fmt.Printf(" Disabled: %v\n", srv.Disabled)
|
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTransport(srv config.ExternalMCPServerConfig) string {
|
func getTransport(srv config.ExternalMCPServerConfig) string {
|
||||||
if srv.Transport != "" {
|
t := srv.GetTransportType()
|
||||||
return srv.Transport
|
if t == "" {
|
||||||
|
return "unknown"
|
||||||
}
|
}
|
||||||
if srv.Command != "" {
|
return t
|
||||||
return "stdio"
|
|
||||||
}
|
|
||||||
if srv.URL != "" {
|
|
||||||
return "http"
|
|
||||||
}
|
|
||||||
return "unknown"
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,8 +52,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
fmt.Printf(" Description: %s\n", srv.Description)
|
fmt.Printf(" Description: %s\n", srv.Description)
|
||||||
fmt.Printf(" Timeout: %d seconds\n", srv.Timeout)
|
fmt.Printf(" Timeout: %d seconds\n", srv.Timeout)
|
||||||
fmt.Printf(" Enabled: %v\n", srv.Enabled)
|
fmt.Printf(" ExternalMCPEnable: %v\n", srv.ExternalMCPEnable)
|
||||||
fmt.Printf(" Disabled: %v\n", srv.Disabled)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取统计信息
|
// 获取统计信息
|
||||||
@@ -67,7 +66,7 @@ func main() {
|
|||||||
// 测试启动(仅测试启用的)
|
// 测试启动(仅测试启用的)
|
||||||
fmt.Println("\n=== 测试启动 ===")
|
fmt.Println("\n=== 测试启动 ===")
|
||||||
for name, srv := range cfg.ExternalMCP.Servers {
|
for name, srv := range cfg.ExternalMCP.Servers {
|
||||||
if srv.Enabled && !srv.Disabled {
|
if srv.ExternalMCPEnable {
|
||||||
fmt.Printf("\n尝试启动 %s...\n", name)
|
fmt.Printf("\n尝试启动 %s...\n", name)
|
||||||
// 注意:实际启动可能会失败,因为需要真实的MCP服务器
|
// 注意:实际启动可能会失败,因为需要真实的MCP服务器
|
||||||
err := manager.StartClient(name)
|
err := manager.StartClient(name)
|
||||||
@@ -131,15 +130,10 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getTransport(srv config.ExternalMCPServerConfig) string {
|
func getTransport(srv config.ExternalMCPServerConfig) string {
|
||||||
if srv.Transport != "" {
|
t := srv.GetTransportType()
|
||||||
return srv.Transport
|
if t == "" {
|
||||||
|
return "unknown"
|
||||||
}
|
}
|
||||||
if srv.Command != "" {
|
return t
|
||||||
return "stdio"
|
|
||||||
}
|
|
||||||
if srv.URL != "" {
|
|
||||||
return "http"
|
|
||||||
}
|
|
||||||
return "unknown"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user