mirror of
https://github.com/woodchen-ink/proxy-go.git
synced 2025-07-18 08:31:55 +08:00
feat(config): 添加默认配置文件创建功能
- 实现 createDefaultConfig 方法,在配置文件不存在时自动创建默认配置 - 移除 config.json 中的固定路径配置 - 支持自动创建配置文件目录 - 提供默认的压缩和路由配置
This commit is contained in:
parent
7f4a964163
commit
64423b00e2
@ -23,17 +23,5 @@
|
||||
"Enabled": false,
|
||||
"Level": 4
|
||||
}
|
||||
},
|
||||
"FixedPaths": [
|
||||
{
|
||||
"Path": "/cdnjs",
|
||||
"TargetHost": "cdnjs.cloudflare.com",
|
||||
"TargetURL": "https://cdnjs.cloudflare.com"
|
||||
},
|
||||
{
|
||||
"Path": "/jsdelivr",
|
||||
"TargetHost": "cdn.jsdelivr.net",
|
||||
"TargetURL": "https://cdn.jsdelivr.net"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package config
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
@ -48,10 +49,55 @@ func Load(path string) (*Config, error) {
|
||||
once.Do(func() {
|
||||
instance = &configImpl{}
|
||||
err = instance.reload(path)
|
||||
// 如果文件不存在,创建默认配置并重新加载
|
||||
if err != nil && os.IsNotExist(err) {
|
||||
if createErr := createDefaultConfig(path); createErr == nil {
|
||||
err = instance.reload(path)
|
||||
} else {
|
||||
err = createErr
|
||||
}
|
||||
}
|
||||
})
|
||||
return &instance.Config, err
|
||||
}
|
||||
|
||||
// createDefaultConfig 创建默认配置文件
|
||||
func createDefaultConfig(path string) error {
|
||||
// 创建目录(如果不存在)
|
||||
dir := path[:strings.LastIndex(path, "/")]
|
||||
if err := os.MkdirAll(dir, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 创建默认配置
|
||||
defaultConfig := Config{
|
||||
MAP: map[string]PathConfig{
|
||||
"/": {
|
||||
DefaultTarget: "http://localhost:8080",
|
||||
},
|
||||
},
|
||||
Compression: CompressionConfig{
|
||||
Gzip: CompressorConfig{
|
||||
Enabled: true,
|
||||
Level: 6,
|
||||
},
|
||||
Brotli: CompressorConfig{
|
||||
Enabled: true,
|
||||
Level: 6,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// 序列化为JSON
|
||||
data, err := json.MarshalIndent(defaultConfig, "", " ")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 写入文件
|
||||
return os.WriteFile(path, data, 0644)
|
||||
}
|
||||
|
||||
// RegisterUpdateCallback 注册配置更新回调函数
|
||||
func RegisterUpdateCallback(callback func(*Config)) {
|
||||
callbackMutex.Lock()
|
||||
|
Loading…
x
Reference in New Issue
Block a user