conf: bring over changes from wireguard-windows#10
https://github.com/WireGuard/wireguard-windows/pull/10 don't appear to be of interest, and now need big rebasing. Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
parent
77158f3dde
commit
d5812860fc
6 changed files with 128 additions and 4 deletions
35
conf/dnsresolver_other.go
Normal file
35
conf/dnsresolver_other.go
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
/* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package conf
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
func resolveHostname(name string) (resolvedIPString string, err error) {
|
||||||
|
ips, err := net.LookupIP(name)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
var ip net.IP
|
||||||
|
for _, iterip := range ips {
|
||||||
|
if ip4 := iterip.To4(); ip4 != nil {
|
||||||
|
ip = ip4
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if ip == nil {
|
||||||
|
ip = iterip
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ip == nil {
|
||||||
|
return "", fmt.Errorf("unable to resolve IP address of endpoint %q (%v)", name, ips)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ip.String(), nil
|
||||||
|
}
|
18
conf/path.go
Normal file
18
conf/path.go
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package conf
|
||||||
|
|
||||||
|
var cachedConfigFileDir string
|
||||||
|
var cachedRootDir string
|
||||||
|
var disableAutoMigration bool
|
||||||
|
|
||||||
|
// PresetRootDirectory causes RootDirectory() to not try any automatic deduction, and instead
|
||||||
|
// uses what's passed to it. This isn't used by wireguard-windows, but is useful for external
|
||||||
|
// consumers of our libraries who might want to do strange things.
|
||||||
|
func PresetRootDirectory(root string) {
|
||||||
|
cachedRootDir = root
|
||||||
|
disableAutoMigration = true
|
||||||
|
}
|
39
conf/path_other.go
Normal file
39
conf/path_other.go
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
/* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package conf
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func tunnelConfigurationsDirectory() (string, error) {
|
||||||
|
if cachedConfigFileDir != "" {
|
||||||
|
return cachedConfigFileDir, nil
|
||||||
|
}
|
||||||
|
root, err := RootDirectory()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
// on linux the configs are just in /etc/wireguard
|
||||||
|
cachedConfigFileDir = root
|
||||||
|
return cachedConfigFileDir, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func RootDirectory() (string, error) {
|
||||||
|
if cachedRootDir != "" {
|
||||||
|
return cachedRootDir, nil
|
||||||
|
}
|
||||||
|
c := filepath.Join("/etc", "wireguard")
|
||||||
|
err := os.MkdirAll(c, os.ModeDir|0700)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
cachedRootDir = c
|
||||||
|
return cachedRootDir, nil
|
||||||
|
}
|
|
@ -10,8 +10,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"golang.zx2c4.com/wireguard/windows/conf/dpapi"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const configFileSuffix = ".conf.dpapi"
|
const configFileSuffix = ".conf.dpapi"
|
||||||
|
@ -71,7 +69,7 @@ func LoadFromPath(path string) (*Config, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(path, configFileSuffix) {
|
if strings.HasSuffix(path, configFileSuffix) {
|
||||||
bytes, err = dpapi.Decrypt(bytes, name)
|
bytes, err = platformUnenvelope(bytes, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -110,7 +108,7 @@ func (config *Config) Save(overwrite bool) error {
|
||||||
}
|
}
|
||||||
filename := filepath.Join(configFileDir, config.Name+configFileSuffix)
|
filename := filepath.Join(configFileDir, config.Name+configFileSuffix)
|
||||||
bytes := []byte(config.ToWgQuick())
|
bytes := []byte(config.ToWgQuick())
|
||||||
bytes, err = dpapi.Encrypt(bytes, config.Name)
|
bytes, err = platformEnvelope(bytes, config.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
16
conf/store_other.go
Normal file
16
conf/store_other.go
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
/* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package conf
|
||||||
|
|
||||||
|
func platformEnvelope(bytes []byte, name string) ([]byte, error) {
|
||||||
|
return bytes, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func platformUnenvelope(bytes []byte, name string) ([]byte, error) {
|
||||||
|
return bytes, nil
|
||||||
|
}
|
18
conf/store_windows.go
Normal file
18
conf/store_windows.go
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/* SPDX-License-Identifier: MIT
|
||||||
|
*
|
||||||
|
* Copyright (C) 2019 WireGuard LLC. All Rights Reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package conf
|
||||||
|
|
||||||
|
import (
|
||||||
|
"golang.zx2c4.com/wireguard/windows/conf/dpapi"
|
||||||
|
)
|
||||||
|
|
||||||
|
func platformEnvelope(bytes []byte, name string) ([]byte, error) {
|
||||||
|
return dpapi.Encrypt(bytes, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func platformUnenvelope(bytes []byte, name string) ([]byte, error) {
|
||||||
|
return dpapi.Decrypt(bytes, name)
|
||||||
|
}
|
Loading…
Reference in a new issue