mirror of
https://github.com/wyx2685/V2bX.git
synced 2025-01-22 18:08:14 -05:00
82 lines
3.2 KiB
Go
82 lines
3.2 KiB
Go
package conf
|
|
|
|
import "log"
|
|
|
|
type OldConfig struct {
|
|
NodesConfig []*struct {
|
|
ApiConfig *OldApiConfig `yaml:"ApiConfig"`
|
|
ControllerConfig *OldControllerConfig `yaml:"ControllerConfig"`
|
|
} `yaml:"Nodes"`
|
|
}
|
|
|
|
type OldControllerConfig struct {
|
|
ListenIP string `yaml:"ListenIP"`
|
|
SendIP string `yaml:"SendIP"`
|
|
EnableDNS bool `yaml:"EnableDNS"`
|
|
DNSType string `yaml:"DNSType"`
|
|
DisableUploadTraffic bool `yaml:"DisableUploadTraffic"`
|
|
DisableGetRule bool `yaml:"DisableGetRule"`
|
|
EnableProxyProtocol bool `yaml:"EnableProxyProtocol"`
|
|
EnableFallback bool `yaml:"EnableFallback"`
|
|
DisableIVCheck bool `yaml:"DisableIVCheck"`
|
|
DisableSniffing bool `yaml:"DisableSniffing"`
|
|
FallBackConfigs []*FallBackConfig `yaml:"FallBackConfigs"`
|
|
EnableIpRecorder bool `yaml:"EnableIpRecorder"`
|
|
IpRecorderConfig *IpReportConfig `yaml:"IpRecorderConfig"`
|
|
EnableDynamicSpeedLimit bool `yaml:"EnableDynamicSpeedLimit"`
|
|
DynamicSpeedLimitConfig *DynamicSpeedLimitConfig `yaml:"DynamicSpeedLimitConfig"`
|
|
CertConfig *CertConfig `yaml:"CertConfig"`
|
|
}
|
|
|
|
type OldApiConfig struct {
|
|
APIHost string `yaml:"ApiHost"`
|
|
NodeID int `yaml:"NodeID"`
|
|
Key string `yaml:"ApiKey"`
|
|
NodeType string `yaml:"NodeType"`
|
|
EnableVless bool `yaml:"EnableVless"`
|
|
Timeout int `yaml:"Timeout"`
|
|
SpeedLimit int `yaml:"SpeedLimit"`
|
|
DeviceLimit int `yaml:"DeviceLimit"`
|
|
RuleListPath string `yaml:"RuleListPath"`
|
|
DisableCustomConfig bool `yaml:"DisableCustomConfig"`
|
|
}
|
|
|
|
func migrateOldConfig(c *Conf, old *OldConfig) {
|
|
changed := false
|
|
for i, n := range c.NodesConfig {
|
|
if i >= len(old.NodesConfig) {
|
|
break
|
|
}
|
|
// limit config
|
|
if old.NodesConfig[i].ApiConfig.SpeedLimit != 0 {
|
|
n.ControllerConfig.LimitConfig.SpeedLimit = old.NodesConfig[i].ApiConfig.SpeedLimit
|
|
changed = true
|
|
}
|
|
if old.NodesConfig[i].ApiConfig.DeviceLimit != 0 {
|
|
n.ControllerConfig.LimitConfig.IPLimit = old.NodesConfig[i].ApiConfig.DeviceLimit
|
|
changed = true
|
|
}
|
|
if old.NodesConfig[i].ControllerConfig.EnableDynamicSpeedLimit {
|
|
n.ControllerConfig.LimitConfig.EnableDynamicSpeedLimit = true
|
|
changed = true
|
|
}
|
|
if old.NodesConfig[i].ControllerConfig.DynamicSpeedLimitConfig != nil {
|
|
n.ControllerConfig.LimitConfig.DynamicSpeedLimitConfig =
|
|
old.NodesConfig[i].ControllerConfig.DynamicSpeedLimitConfig
|
|
changed = true
|
|
}
|
|
if old.NodesConfig[i].ControllerConfig.EnableIpRecorder {
|
|
n.ControllerConfig.LimitConfig.EnableIpRecorder = true
|
|
changed = true
|
|
}
|
|
if old.NodesConfig[i].ControllerConfig.IpRecorderConfig != nil {
|
|
n.ControllerConfig.LimitConfig.IpRecorderConfig =
|
|
old.NodesConfig[i].ControllerConfig.IpRecorderConfig
|
|
changed = true
|
|
}
|
|
}
|
|
if changed {
|
|
log.Println("Warning: This config file is old.")
|
|
}
|
|
}
|