This commit is contained in:
VastBlast 2025-02-21 09:21:49 +08:00 committed by GitHub
commit 0c662b2c4b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 199 additions and 0 deletions

View file

@ -33,6 +33,12 @@ type DeviceConfig struct {
CheckAliveInterval int
}
type UDPProxyTunnelConfig struct {
BindAddress string
Target string
InactivityTimeout int
}
type TCPClientTunnelConfig struct {
BindAddress *net.TCPAddr
Target string
@ -435,6 +441,34 @@ func parseHTTPConfig(section *ini.Section) (RoutineSpawner, error) {
return config, nil
}
func parseUDPProxyTunnelConfig(section *ini.Section) (RoutineSpawner, error) {
config := &UDPProxyTunnelConfig{}
bindAddress, err := parseString(section, "BindAddress")
if err != nil {
return nil, err
}
config.BindAddress = bindAddress
target, err := parseString(section, "Target")
if err != nil {
return nil, err
}
config.Target = target
inactivityTimeout := 0
if sectionKey, err := section.GetKey("InactivityTimeout"); err == nil {
timeoutVal, err := sectionKey.Int()
if err != nil {
return nil, err
}
inactivityTimeout = timeoutVal
}
config.InactivityTimeout = inactivityTimeout
return config, nil
}
// Takes a function that parses an individual section into a config, and apply it on all
// specified sections
func parseRoutinesConfig(routines *[]RoutineSpawner, cfg *ini.File, sectionName string, f func(*ini.Section) (RoutineSpawner, error)) error {
@ -519,6 +553,11 @@ func ParseConfig(path string) (*Configuration, error) {
return nil, err
}
err = parseRoutinesConfig(&routinesSpawners, cfg, "UDPProxyTunnel", parseUDPProxyTunnelConfig)
if err != nil {
return nil, err
}
return &Configuration{
Device: device,
Routines: routinesSpawners,