allow importing a wireguard config #27

This commit is contained in:
octeep 2022-03-31 09:47:47 +01:00 committed by octeep
parent e382a3b78f
commit 898c557b8c
2 changed files with 33 additions and 5 deletions

View file

@ -49,7 +49,7 @@ go build ./cmd/wireproxy
# Sample config file
```
# The [Interface] and [Peer] configurations follow the same sematics and meaning
# The [Interface] and [Peer] configurations follow the same semantics and meaning
# of a wg-quick configuration. To understand what these fields mean, please refer to:
# https://wiki.archlinux.org/title/WireGuard#Persistent_configuration
# https://www.wireguard.com/#simple-network-interface
@ -92,6 +92,22 @@ BindAddress = 127.0.0.1:25344
#Password = ...
```
Alternatively, if you already have a wireguard config, you can import it in the
wireproxy config file like this:
```
WGConfig = <path to the wireguard config>
# Same semantics as above
[TCPClientTunnel]
...
[TCPServerTunnel]
...
[Socks5]
...
```
## Stargazers over time

View file

@ -311,10 +311,12 @@ func parseRoutinesConfig(routines *[]RoutineSpawner, cfg *ini.File, sectionName
}
func ParseConfig(path string) (*Configuration, error) {
cfg, err := ini.LoadSources(ini.LoadOptions{
iniOpt := ini.LoadOptions{
Insensitive: true,
AllowShadows: true,
}, path)
}
cfg, err := ini.LoadSources(iniOpt, path)
if err != nil {
return nil, err
}
@ -325,12 +327,22 @@ func ParseConfig(path string) (*Configuration, error) {
MTU: 1420,
}
err = ParseInterface(cfg, device)
root := cfg.Section("")
wgConf, err := root.GetKey("WGConfig")
wgCfg := cfg
if err == nil {
wgCfg, err = ini.LoadSources(iniOpt, wgConf.String())
if err != nil {
return nil, err
}
}
err = ParseInterface(wgCfg, device)
if err != nil {
return nil, err
}
err = ParsePeer(cfg, device)
err = ParsePeer(wgCfg, device)
if err != nil {
return nil, err
}