mirror of
https://github.com/woodchen-ink/proxy-go.git
synced 2025-07-18 00:21:56 +08:00
优化配置管理逻辑,确保路径配置的扩展名规则在更新时得到正确处理,移除冗余代码以简化回调逻辑。
This commit is contained in:
parent
1d84c0c614
commit
4156b64ac6
1
.gitignore
vendored
1
.gitignore
vendored
@ -33,7 +33,6 @@ data/metrics/metrics.json
|
|||||||
data/metrics/path_stats.json
|
data/metrics/path_stats.json
|
||||||
data/metrics/referer_stats.json
|
data/metrics/referer_stats.json
|
||||||
data/metrics/status_codes.json
|
data/metrics/status_codes.json
|
||||||
data/config.example.json
|
|
||||||
data/config.json
|
data/config.json
|
||||||
.env
|
.env
|
||||||
data/cache
|
data/cache
|
||||||
|
61
data/config.example.json
Normal file
61
data/config.example.json
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"MAP": {
|
||||||
|
"/path1": {
|
||||||
|
"DefaultTarget": "https://path1.com/path/path/path",
|
||||||
|
"ExtensionMap": [
|
||||||
|
{
|
||||||
|
"Extensions": "jpg,png,avif",
|
||||||
|
"Target": "https://path1-img.com/path/path/path",
|
||||||
|
"SizeThreshold": 204800,
|
||||||
|
"MaxSize": 5242880
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Extensions": "mp4,webm",
|
||||||
|
"Target": "https://path1-video.com/path/path/path",
|
||||||
|
"SizeThreshold": 204800,
|
||||||
|
"MaxSize": 5242880
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Extensions": "*",
|
||||||
|
"Target": "https://path1-wildcard.com/path/path/path",
|
||||||
|
"SizeThreshold": 204800,
|
||||||
|
"MaxSize": 5242880
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/path2": "https://path2.com",
|
||||||
|
"/path3": {
|
||||||
|
"DefaultTarget": "https://path3.com",
|
||||||
|
"ExtensionMap": [
|
||||||
|
{
|
||||||
|
"Extensions": "*",
|
||||||
|
"Target": "https://path3-wildcard.com",
|
||||||
|
"SizeThreshold": 512000,
|
||||||
|
"MaxSize": 10485760
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"SizeThreshold": 512000
|
||||||
|
},
|
||||||
|
"/wildcard-no-limits": {
|
||||||
|
"DefaultTarget": "https://default.example.com",
|
||||||
|
"ExtensionMap": [
|
||||||
|
{
|
||||||
|
"Extensions": "*",
|
||||||
|
"Target": "https://unlimited.example.com",
|
||||||
|
"SizeThreshold": 0,
|
||||||
|
"MaxSize": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Compression": {
|
||||||
|
"Gzip": {
|
||||||
|
"Enabled": false,
|
||||||
|
"Level": 6
|
||||||
|
},
|
||||||
|
"Brotli": {
|
||||||
|
"Enabled": false,
|
||||||
|
"Level": 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -41,8 +41,9 @@ func NewConfigManager(configPath string) (*ConfigManager, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 确保所有路径配置的扩展名规则都已更新
|
// 确保所有路径配置的扩展名规则都已更新
|
||||||
for _, pathConfig := range config.MAP {
|
for path, pc := range config.MAP {
|
||||||
pathConfig.ProcessExtensionMap()
|
pc.ProcessExtensionMap()
|
||||||
|
config.MAP[path] = pc // 更新回原始map
|
||||||
}
|
}
|
||||||
|
|
||||||
cm.config.Store(config)
|
cm.config.Store(config)
|
||||||
@ -131,8 +132,9 @@ func RegisterUpdateCallback(callback func(*Config)) {
|
|||||||
// TriggerCallbacks 触发所有回调
|
// TriggerCallbacks 触发所有回调
|
||||||
func TriggerCallbacks(cfg *Config) {
|
func TriggerCallbacks(cfg *Config) {
|
||||||
// 确保所有路径配置的扩展名规则都已更新
|
// 确保所有路径配置的扩展名规则都已更新
|
||||||
for _, pathConfig := range cfg.MAP {
|
for path, pc := range cfg.MAP {
|
||||||
pathConfig.ProcessExtensionMap()
|
pc.ProcessExtensionMap()
|
||||||
|
cfg.MAP[path] = pc // 更新回原始map
|
||||||
}
|
}
|
||||||
|
|
||||||
callbackMutex.RLock()
|
callbackMutex.RLock()
|
||||||
@ -151,8 +153,9 @@ func (c *configImpl) Update(newConfig *Config) {
|
|||||||
defer c.Unlock()
|
defer c.Unlock()
|
||||||
|
|
||||||
// 确保所有路径配置的扩展名规则都已更新
|
// 确保所有路径配置的扩展名规则都已更新
|
||||||
for _, pathConfig := range newConfig.MAP {
|
for path, pc := range newConfig.MAP {
|
||||||
pathConfig.ProcessExtensionMap()
|
pc.ProcessExtensionMap()
|
||||||
|
newConfig.MAP[path] = pc // 更新回原始map
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新配置
|
// 更新配置
|
||||||
@ -191,8 +194,9 @@ func (cm *ConfigManager) loadConfig() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 确保所有路径配置的扩展名规则都已更新
|
// 确保所有路径配置的扩展名规则都已更新
|
||||||
for _, pathConfig := range config.MAP {
|
for path, pc := range config.MAP {
|
||||||
pathConfig.ProcessExtensionMap()
|
pc.ProcessExtensionMap()
|
||||||
|
config.MAP[path] = pc // 更新回原始map
|
||||||
}
|
}
|
||||||
|
|
||||||
cm.config.Store(config)
|
cm.config.Store(config)
|
||||||
|
@ -179,11 +179,7 @@ func NewProxyHandler(cfg *config.Config) *ProxyHandler {
|
|||||||
|
|
||||||
// 注册配置更新回调
|
// 注册配置更新回调
|
||||||
config.RegisterUpdateCallback(func(newCfg *config.Config) {
|
config.RegisterUpdateCallback(func(newCfg *config.Config) {
|
||||||
// 确保所有路径配置的processedExtMap都已更新
|
// 注意:config包已经在回调触发前处理了所有ExtRules,这里无需再次处理
|
||||||
for _, pathConfig := range newCfg.MAP {
|
|
||||||
pathConfig.ProcessExtensionMap()
|
|
||||||
}
|
|
||||||
|
|
||||||
handler.pathMap = newCfg.MAP
|
handler.pathMap = newCfg.MAP
|
||||||
handler.prefixTree.update(newCfg.MAP) // 更新前缀匹配树
|
handler.prefixTree.update(newCfg.MAP) // 更新前缀匹配树
|
||||||
handler.config = newCfg
|
handler.config = newCfg
|
||||||
|
Loading…
x
Reference in New Issue
Block a user