|
1 | 1 | package singleton |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "fmt" |
4 | 5 | "log" |
| 6 | + "os" |
| 7 | + "path/filepath" |
5 | 8 | "time" |
6 | 9 |
|
7 | 10 | "github.com/patrickmn/go-cache" |
@@ -84,10 +87,52 @@ func debugServersStatus() { |
84 | 87 | // InitConfigFromPath 从给出的文件路径中加载配置 |
85 | 88 | func InitConfigFromPath(path string) { |
86 | 89 | Conf = &model.Config{} |
| 90 | + |
| 91 | + // 检查配置文件是否存在 |
| 92 | + if _, err := os.Stat(path); os.IsNotExist(err) { |
| 93 | + log.Printf("NG>> 配置文件不存在: %s", path) |
| 94 | + // 尝试创建目录 |
| 95 | + dir := filepath.Dir(path) |
| 96 | + if err := os.MkdirAll(dir, 0750); err != nil { |
| 97 | + log.Printf("NG>> 创建目录失败: %v", err) |
| 98 | + panic(fmt.Errorf("配置文件目录创建失败: %v", err)) |
| 99 | + } |
| 100 | + |
| 101 | + // 创建一个基本的配置文件模板 |
| 102 | + defaultConfig := `# 配置文件 |
| 103 | +debug: true |
| 104 | +language: zh-CN |
| 105 | +site: |
| 106 | + brand: "ServerStatus" |
| 107 | + cookiename: "serverstatus-dashboard" |
| 108 | + theme: "default" |
| 109 | + dashboardtheme: "default" |
| 110 | +oauth2: |
| 111 | + type: "github" # 这里需要根据实际情况修改 |
| 112 | + admin: "admin" # 管理员用户名,多个用户名用逗号分隔 |
| 113 | + clientid: "your-client-id" |
| 114 | + clientsecret: "your-client-secret" |
| 115 | +httpport: 8080 |
| 116 | +grpcport: 5555 |
| 117 | +location: "Asia/Shanghai" |
| 118 | +` |
| 119 | + // 写入默认配置 |
| 120 | + if err := os.WriteFile(path, []byte(defaultConfig), 0600); err != nil { |
| 121 | + log.Printf("NG>> 创建默认配置文件失败: %v", err) |
| 122 | + panic(fmt.Errorf("创建默认配置文件失败: %v", err)) |
| 123 | + } |
| 124 | + log.Printf("NG>> 已创建默认配置文件: %s,请修改后重新启动", path) |
| 125 | + panic(fmt.Errorf("已创建默认配置文件: %s,请修改后重新启动", path)) |
| 126 | + } |
| 127 | + |
| 128 | + // 读取配置 |
87 | 129 | err := Conf.Read(path) |
88 | 130 | if err != nil { |
| 131 | + log.Printf("NG>> 读取配置文件失败: %v", err) |
89 | 132 | panic(err) |
90 | 133 | } |
| 134 | + |
| 135 | + log.Printf("NG>> 配置文件加载成功: %s", path) |
91 | 136 | } |
92 | 137 |
|
93 | 138 | // InitDBFromPath 从给出的文件路径中加载数据库 |
|
0 commit comments