Maint: upgrade qdm12/golibs
This commit is contained in:
@@ -72,7 +72,7 @@ func main() {
|
||||
tun := tun.New()
|
||||
netLinker := netlink.New()
|
||||
cli := cli.New()
|
||||
env := params.NewEnv()
|
||||
env := params.New()
|
||||
cmder := command.NewCmder()
|
||||
|
||||
errorCh := make(chan error)
|
||||
@@ -117,7 +117,7 @@ var (
|
||||
|
||||
//nolint:gocognit,gocyclo
|
||||
func _main(ctx context.Context, buildInfo models.BuildInformation,
|
||||
args []string, logger logging.ParentLogger, env params.Env,
|
||||
args []string, logger logging.ParentLogger, env params.Interface,
|
||||
tun tun.Interface, netLinker netlink.NetLinker, cmder command.RunStarter,
|
||||
cli cli.CLIer) error {
|
||||
if len(args) > 1 { // cli operation
|
||||
@@ -127,7 +127,7 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
|
||||
case "clientkey":
|
||||
return cli.ClientKey(args[2:])
|
||||
case "openvpnconfig":
|
||||
return cli.OpenvpnConfig(logger)
|
||||
return cli.OpenvpnConfig(logger, env)
|
||||
case "update":
|
||||
return cli.Update(ctx, args[2:], logger)
|
||||
default:
|
||||
|
||||
2
go.mod
2
go.mod
@@ -6,7 +6,7 @@ require (
|
||||
github.com/fatih/color v1.12.0
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/qdm12/dns v1.11.0
|
||||
github.com/qdm12/golibs v0.0.0-20210819192647-0793e710c4e2
|
||||
github.com/qdm12/golibs v0.0.0-20210822203818-5c568b0777b6
|
||||
github.com/qdm12/goshutdown v0.1.0
|
||||
github.com/qdm12/gosplash v0.1.0
|
||||
github.com/qdm12/ss-server v0.3.0
|
||||
|
||||
4
go.sum
4
go.sum
@@ -100,8 +100,8 @@ github.com/qdm12/dns v1.11.0 h1:jpcD5DZXXQSQe5a263PL09ghukiIdptvXFOZvyKEm6Q=
|
||||
github.com/qdm12/dns v1.11.0/go.mod h1:FmQsNOUcrrZ4UFzWAiED56AKXeNgaX3ySbmPwEfNjjE=
|
||||
github.com/qdm12/golibs v0.0.0-20210603202746-e5494e9c2ebb/go.mod h1:15RBzkun0i8XB7ADIoLJWp9ITRgsz3LroEI2FiOXLRg=
|
||||
github.com/qdm12/golibs v0.0.0-20210723175634-a75ca7fd74c2/go.mod h1:6aRbg4Z/bTbm9JfxsGXfWKHi7zsOvPfUTK1S5HuAFKg=
|
||||
github.com/qdm12/golibs v0.0.0-20210819192647-0793e710c4e2 h1:knh82t+/xYiNqr/4zJFrWaI4q4TwG1qfIJpsvCBCc1c=
|
||||
github.com/qdm12/golibs v0.0.0-20210819192647-0793e710c4e2/go.mod h1:6aRbg4Z/bTbm9JfxsGXfWKHi7zsOvPfUTK1S5HuAFKg=
|
||||
github.com/qdm12/golibs v0.0.0-20210822203818-5c568b0777b6 h1:bge5AL7cjHJMPz+5IOz5yF01q/l8No6+lIEBieA8gMg=
|
||||
github.com/qdm12/golibs v0.0.0-20210822203818-5c568b0777b6/go.mod h1:6aRbg4Z/bTbm9JfxsGXfWKHi7zsOvPfUTK1S5HuAFKg=
|
||||
github.com/qdm12/goshutdown v0.1.0 h1:lmwnygdXtnr2pa6VqfR/bm8077/BnBef1+7CP96B7Sw=
|
||||
github.com/qdm12/goshutdown v0.1.0/go.mod h1:/LP3MWLqI+wGH/ijfaUG+RHzBbKXIiVKnrg5vXOCf6Q=
|
||||
github.com/qdm12/gosplash v0.1.0 h1:Sfl+zIjFZFP7b0iqf2l5UkmEY97XBnaKkH3FNY6Gf7g=
|
||||
|
||||
@@ -13,10 +13,10 @@ import (
|
||||
)
|
||||
|
||||
type HealthChecker interface {
|
||||
HealthCheck(ctx context.Context, env params.Env, logger logging.Logger) error
|
||||
HealthCheck(ctx context.Context, env params.Interface, logger logging.Logger) error
|
||||
}
|
||||
|
||||
func (c *CLI) HealthCheck(ctx context.Context, env params.Env,
|
||||
func (c *CLI) HealthCheck(ctx context.Context, env params.Interface,
|
||||
logger logging.Logger) error {
|
||||
// Extract the health server port from the configuration.
|
||||
config := configuration.Health{}
|
||||
|
||||
@@ -14,12 +14,12 @@ import (
|
||||
)
|
||||
|
||||
type OpenvpnConfigMaker interface {
|
||||
OpenvpnConfig(logger logging.Logger) error
|
||||
OpenvpnConfig(logger logging.Logger, env params.Interface) error
|
||||
}
|
||||
|
||||
func (c *CLI) OpenvpnConfig(logger logging.Logger) error {
|
||||
func (c *CLI) OpenvpnConfig(logger logging.Logger, env params.Interface) error {
|
||||
var allSettings configuration.Settings
|
||||
err := allSettings.Read(params.NewEnv(), logger)
|
||||
err := allSettings.Read(env, logger)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ var (
|
||||
ErrDNSAddressNotAnIP = errors.New("DNS plaintext address is not an IP address")
|
||||
)
|
||||
|
||||
func (settings *DNS) readDNSPlaintext(env params.Env) error {
|
||||
func (settings *DNS) readDNSPlaintext(env params.Interface) error {
|
||||
s, err := env.Get("DNS_PLAINTEXT_ADDRESS", params.Default("1.1.1.1"))
|
||||
if err != nil {
|
||||
return fmt.Errorf("environment variable DNS_PLAINTEXT_ADDRESS: %w", err)
|
||||
|
||||
@@ -36,7 +36,7 @@ var (
|
||||
ErrInvalidPrivateAddress = errors.New("private address is not a valid IP or CIDR range")
|
||||
)
|
||||
|
||||
func (settings *DNS) readPrivateAddresses(env params.Env) (err error) {
|
||||
func (settings *DNS) readPrivateAddresses(env params.Interface) (err error) {
|
||||
privateAddresses, err := env.CSV("DOT_PRIVATE_ADDRESS")
|
||||
if err != nil {
|
||||
return fmt.Errorf("environment variable DOT_PRIVATE_ADDRESS: %w", err)
|
||||
|
||||
@@ -73,7 +73,7 @@ func (settings *Firewall) read(r reader) (err error) {
|
||||
return settings.readOutboundSubnets(r)
|
||||
}
|
||||
|
||||
func (settings *Firewall) readVPNInputPorts(env params.Env) (err error) {
|
||||
func (settings *Firewall) readVPNInputPorts(env params.Interface) (err error) {
|
||||
settings.VPNInputPorts, err = readCSVPorts(env, "FIREWALL_VPN_INPUT_PORTS")
|
||||
if err != nil {
|
||||
return fmt.Errorf("environment variable FIREWALL_VPN_INPUT_PORTS: %w", err)
|
||||
@@ -81,7 +81,7 @@ func (settings *Firewall) readVPNInputPorts(env params.Env) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (settings *Firewall) readInputPorts(env params.Env) (err error) {
|
||||
func (settings *Firewall) readInputPorts(env params.Interface) (err error) {
|
||||
settings.InputPorts, err = readCSVPorts(env, "FIREWALL_INPUT_PORTS")
|
||||
if err != nil {
|
||||
return fmt.Errorf("environment variable FIREWALL_INPUT_PORTS: %w", err)
|
||||
|
||||
@@ -32,7 +32,7 @@ func (settings *Health) lines() (lines []string) {
|
||||
}
|
||||
|
||||
// Read is to be used for the healthcheck query mode.
|
||||
func (settings *Health) Read(env params.Env, logger logging.Logger) (err error) {
|
||||
func (settings *Health) Read(env params.Interface, logger logging.Logger) (err error) {
|
||||
reader := newReader(env, logger)
|
||||
return settings.read(reader)
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ func Test_Health_read(t *testing.T) {
|
||||
|
||||
ctrl := gomock.NewController(t)
|
||||
|
||||
env := mock_params.NewMockEnv(ctrl)
|
||||
env := mock_params.NewMockInterface(ctrl)
|
||||
logger := mock_logging.NewMockLogger(ctrl)
|
||||
|
||||
env.EXPECT().ListeningAddress("HEALTH_SERVER_ADDRESS", gomock.Any()).
|
||||
|
||||
@@ -119,7 +119,7 @@ func Test_Provider_readIpvanish(t *testing.T) {
|
||||
t.Parallel()
|
||||
ctrl := gomock.NewController(t)
|
||||
|
||||
env := mock_params.NewMockEnv(ctrl)
|
||||
env := mock_params.NewMockInterface(ctrl)
|
||||
if testCase.targetIP.call {
|
||||
env.EXPECT().Get("OPENVPN_TARGET_IP").
|
||||
Return(testCase.targetIP.value, testCase.targetIP.err)
|
||||
|
||||
@@ -119,7 +119,7 @@ func Test_Provider_readIvpn(t *testing.T) {
|
||||
t.Parallel()
|
||||
ctrl := gomock.NewController(t)
|
||||
|
||||
env := mock_params.NewMockEnv(ctrl)
|
||||
env := mock_params.NewMockInterface(ctrl)
|
||||
if testCase.protocol.call {
|
||||
env.EXPECT().Inside("PROTOCOL", []string{constants.TCP, constants.UDP}, gomock.Any()).
|
||||
Return(testCase.protocol.value, testCase.protocol.err)
|
||||
|
||||
@@ -43,7 +43,7 @@ func (settings *Provider) readMullvad(r reader) (err error) {
|
||||
return settings.ServerSelection.OpenVPN.readMullvad(r.env)
|
||||
}
|
||||
|
||||
func (settings *OpenVPNSelection) readMullvad(env params.Env) (err error) {
|
||||
func (settings *OpenVPNSelection) readMullvad(env params.Interface) (err error) {
|
||||
settings.TCP, err = readProtocol(env)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -39,7 +39,7 @@ func (settings *Provider) readNordvpn(r reader) (err error) {
|
||||
return settings.ServerSelection.OpenVPN.readProtocolOnly(r.env)
|
||||
}
|
||||
|
||||
func readNordVPNServerNumbers(env params.Env) (numbers []uint16, err error) {
|
||||
func readNordVPNServerNumbers(env params.Interface) (numbers []uint16, err error) {
|
||||
const possiblePortsCount = 65537
|
||||
possibilities := make([]string, possiblePortsCount)
|
||||
for i := range possibilities {
|
||||
|
||||
@@ -176,7 +176,7 @@ func (settings *OpenVPN) read(r reader, serviceProvider string) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func readProtocol(env params.Env) (tcp bool, err error) {
|
||||
func readProtocol(env params.Interface) (tcp bool, err error) {
|
||||
protocol, err := env.Inside("PROTOCOL", []string{constants.TCP, constants.UDP}, params.Default(constants.UDP))
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("environment variable PROTOCOL: %w", err)
|
||||
@@ -189,7 +189,7 @@ const openvpnIntfRegexString = `^.*[0-9]$`
|
||||
var openvpnIntfRegexp = regexp.MustCompile(openvpnIntfRegexString)
|
||||
var errInterfaceNameNotValid = errors.New("interface name is not valid")
|
||||
|
||||
func readInterface(env params.Env) (intf string, err error) {
|
||||
func readInterface(env params.Interface) (intf string, err error) {
|
||||
intf, err = env.Get("OPENVPN_INTERFACE", params.Default("tun0"))
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("environment variable OPENVPN_INTERFACE: %w", err)
|
||||
|
||||
@@ -130,7 +130,7 @@ func protoToString(tcp bool) string {
|
||||
return constants.UDP
|
||||
}
|
||||
|
||||
func readTargetIP(env params.Env) (targetIP net.IP, err error) {
|
||||
func readTargetIP(env params.Interface) (targetIP net.IP, err error) {
|
||||
targetIP, err = readIP(env, "OPENVPN_TARGET_IP")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("environment variable OPENVPN_TARGET_IP: %w", err)
|
||||
@@ -138,7 +138,7 @@ func readTargetIP(env params.Env) (targetIP net.IP, err error) {
|
||||
return targetIP, nil
|
||||
}
|
||||
|
||||
func readOpenVPNCustomPort(env params.Env, tcp bool,
|
||||
func readOpenVPNCustomPort(env params.Interface, tcp bool,
|
||||
allowedTCP, allowedUDP []uint16) (port uint16, err error) {
|
||||
port, err = readPortOrZero(env, "PORT")
|
||||
if err != nil {
|
||||
@@ -167,7 +167,7 @@ func readOpenVPNCustomPort(env params.Env, tcp bool,
|
||||
ErrInvalidPort, port, portsToString(allowedUDP))
|
||||
}
|
||||
|
||||
func readWireguardCustomPort(env params.Env, allowed []uint16) (port uint16, err error) {
|
||||
func readWireguardCustomPort(env params.Interface, allowed []uint16) (port uint16, err error) {
|
||||
port, err = readPortOrZero(env, "WIREGUARD_PORT")
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("environment variable WIREGUARD_PORT: %w", err)
|
||||
|
||||
@@ -386,7 +386,7 @@ func Test_readProtocol(t *testing.T) {
|
||||
t.Parallel()
|
||||
ctrl := gomock.NewController(t)
|
||||
|
||||
env := mock_params.NewMockEnv(ctrl)
|
||||
env := mock_params.NewMockInterface(ctrl)
|
||||
env.EXPECT().
|
||||
Inside("PROTOCOL", []string{"tcp", "udp"}, gomock.Any()).
|
||||
Return(testCase.mockStr, testCase.mockErr)
|
||||
|
||||
@@ -13,12 +13,12 @@ import (
|
||||
)
|
||||
|
||||
type reader struct {
|
||||
env params.Env
|
||||
env params.Interface
|
||||
logger logging.Logger
|
||||
regex verification.Regex
|
||||
}
|
||||
|
||||
func newReader(env params.Env, logger logging.Logger) reader {
|
||||
func newReader(env params.Interface, logger logging.Logger) reader {
|
||||
return reader{
|
||||
env: env,
|
||||
logger: logger,
|
||||
@@ -36,7 +36,7 @@ var (
|
||||
ErrInvalidPort = errors.New("invalid port")
|
||||
)
|
||||
|
||||
func readCSVPorts(env params.Env, key string) (ports []uint16, err error) {
|
||||
func readCSVPorts(env params.Interface, key string) (ports []uint16, err error) {
|
||||
s, err := env.Get(key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -63,7 +63,7 @@ var (
|
||||
ErrInvalidIPNet = errors.New("invalid IP network")
|
||||
)
|
||||
|
||||
func readCSVIPNets(env params.Env, key string, options ...params.OptionSetter) (
|
||||
func readCSVIPNets(env params.Interface, key string, options ...params.OptionSetter) (
|
||||
ipNets []net.IPNet, err error) {
|
||||
s, err := env.Get(key, options...)
|
||||
if err != nil {
|
||||
@@ -92,7 +92,7 @@ var (
|
||||
ErrInvalidIP = errors.New("invalid IP address")
|
||||
)
|
||||
|
||||
func readIP(env params.Env, key string) (ip net.IP, err error) {
|
||||
func readIP(env params.Interface, key string) (ip net.IP, err error) {
|
||||
s, err := env.Get(key)
|
||||
if s == "" {
|
||||
return nil, nil
|
||||
@@ -108,7 +108,7 @@ func readIP(env params.Env, key string) (ip net.IP, err error) {
|
||||
return ip, nil
|
||||
}
|
||||
|
||||
func readPortOrZero(env params.Env, key string) (port uint16, err error) {
|
||||
func readPortOrZero(env params.Interface, key string) (port uint16, err error) {
|
||||
s, err := env.Get(key, params.Default("0"))
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
||||
@@ -124,12 +124,12 @@ func (settings *OpenVPNSelection) lines() (lines []string) {
|
||||
return lines
|
||||
}
|
||||
|
||||
func (settings *OpenVPNSelection) readProtocolOnly(env params.Env) (err error) {
|
||||
func (settings *OpenVPNSelection) readProtocolOnly(env params.Interface) (err error) {
|
||||
settings.TCP, err = readProtocol(env)
|
||||
return err
|
||||
}
|
||||
|
||||
func (settings *OpenVPNSelection) readProtocolAndPort(env params.Env) (err error) {
|
||||
func (settings *OpenVPNSelection) readProtocolAndPort(env params.Interface) (err error) {
|
||||
settings.TCP, err = readProtocol(env)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -61,7 +61,7 @@ var (
|
||||
|
||||
// Read obtains all configuration options for the program and returns an error as soon
|
||||
// as an error is encountered reading them.
|
||||
func (settings *Settings) Read(env params.Env, logger logging.Logger) (err error) {
|
||||
func (settings *Settings) Read(env params.Interface, logger logging.Logger) (err error) {
|
||||
r := newReader(env, logger)
|
||||
|
||||
settings.VersionInformation, err = r.env.OnOff("VERSION_INFORMATION", params.Default("on"))
|
||||
|
||||
@@ -71,7 +71,7 @@ func (settings *ShadowSocks) read(r reader) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (settings *ShadowSocks) getAddress(env params.Env) (
|
||||
func (settings *ShadowSocks) getAddress(env params.Interface) (
|
||||
warning string, err error) {
|
||||
address, err := env.Get("SHADOWSOCKS_LISTENING_ADDRESS")
|
||||
if err != nil {
|
||||
|
||||
@@ -59,7 +59,7 @@ var (
|
||||
ErrInvalidDNSOverTLSProvider = errors.New("invalid DNS over TLS provider")
|
||||
)
|
||||
|
||||
func (settings *DNS) readUnboundProviders(env params.Env) (err error) {
|
||||
func (settings *DNS) readUnboundProviders(env params.Interface) (err error) {
|
||||
s, err := env.Get("DOT_PROVIDERS", params.Default("cloudflare"))
|
||||
if err != nil {
|
||||
return fmt.Errorf("environment variable DOT_PROVIDERS: %w", err)
|
||||
|
||||
@@ -60,7 +60,7 @@ func Test_DNS_readUnboundProviders(t *testing.T) {
|
||||
|
||||
ctrl := gomock.NewController(t)
|
||||
|
||||
env := mock_params.NewMockEnv(ctrl)
|
||||
env := mock_params.NewMockInterface(ctrl)
|
||||
env.EXPECT().Get("DOT_PROVIDERS", gomock.Any()).
|
||||
Return(testCase.envValue, testCase.envErr)
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ func (settings *VPN) read(r reader) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (settings VPN) isOpenVPNCustomConfig(env params.Env) (ok bool) {
|
||||
func (settings VPN) isOpenVPNCustomConfig(env params.Interface) (ok bool) {
|
||||
if settings.Type != constants.OpenVPN {
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ func (settings *Provider) readWindscribe(r reader) (err error) {
|
||||
return settings.ServerSelection.Wireguard.readWindscribe(r.env)
|
||||
}
|
||||
|
||||
func (settings *OpenVPNSelection) readWindscribe(env params.Env) (err error) {
|
||||
func (settings *OpenVPNSelection) readWindscribe(env params.Interface) (err error) {
|
||||
settings.TCP, err = readProtocol(env)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -54,7 +54,7 @@ func (settings *OpenVPNSelection) readWindscribe(env params.Env) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (settings *WireguardSelection) readWindscribe(env params.Env) (err error) {
|
||||
func (settings *WireguardSelection) readWindscribe(env params.Interface) (err error) {
|
||||
settings.CustomPort, err = readWireguardCustomPort(env,
|
||||
[]uint16{53, 80, 123, 443, 1194, 65142})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user