Maint: upgrade qdm12 dependencies

- Upgrade qdm12/golibs
- Upgrade qdm12/dns to v1.11.0
This commit is contained in:
Quentin McGaw (laptop)
2021-07-24 17:59:22 +00:00
parent 7e343d7006
commit 3f1fb52fcb
11 changed files with 107 additions and 29 deletions

View File

@@ -71,7 +71,7 @@ func main() {
unix := unix.New()
cli := cli.New()
env := params.NewEnv()
cmder := command.NewCommander()
cmder := command.NewCmder()
errorCh := make(chan error)
go func() {
@@ -114,7 +114,7 @@ var (
//nolint:gocognit,gocyclo
func _main(ctx context.Context, buildInfo models.BuildInformation,
args []string, logger logging.ParentLogger, env params.Env,
unix unix.Unix, cmder command.Commander, cli cli.CLIer) error {
unix unix.Unix, cmder command.RunStarter, cli cli.CLIer) error {
if len(args) > 1 { // cli operation
switch args[1] {
case "healthcheck":
@@ -139,7 +139,7 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
unix, cmder)
dnsCrypto := dnscrypto.New(httpClient, "", "")
const cacertsPath = "/etc/ssl/certs/ca-certificates.crt"
dnsConf := unbound.NewConfigurator(nil, dnsCrypto,
dnsConf := unbound.NewConfigurator(nil, cmder, dnsCrypto,
"/etc/unbound", "/usr/sbin/unbound", cacertsPath)
announcementExp, err := time.Parse(time.RFC3339, "2021-07-22T00:00:00Z")

4
go.mod
View File

@@ -5,8 +5,8 @@ go 1.16
require (
github.com/fatih/color v1.12.0
github.com/golang/mock v1.6.0
github.com/qdm12/dns v1.10.0
github.com/qdm12/golibs v0.0.0-20210723191510-d1078ef6fa9d
github.com/qdm12/dns v1.11.0
github.com/qdm12/golibs v0.0.0-20210723175634-a75ca7fd74c2
github.com/qdm12/goshutdown v0.1.0
github.com/qdm12/gosplash v0.1.0
github.com/qdm12/ss-server v0.2.0

9
go.sum
View File

@@ -63,12 +63,11 @@ github.com/phayes/permbits v0.0.0-20190612203442-39d7c581d2ee/go.mod h1:3uODdxMg
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/qdm12/dns v1.10.0 h1:WX5QQ5+2h34xfhfxJTmvyURbs9XE4qNrEGtyNeq38Bw=
github.com/qdm12/dns v1.10.0/go.mod h1:fqZoDf3VzddnKBMNI/OzZUp5H4dO0VBw1fp4qPkolOg=
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-20210716185557-66793f4ddd80/go.mod h1:15RBzkun0i8XB7ADIoLJWp9ITRgsz3LroEI2FiOXLRg=
github.com/qdm12/golibs v0.0.0-20210723191510-d1078ef6fa9d h1:bBLNwxvlU4LXrSkDXW+S6czLLUSN42ERA/KdX19qIbU=
github.com/qdm12/golibs v0.0.0-20210723191510-d1078ef6fa9d/go.mod h1:6aRbg4Z/bTbm9JfxsGXfWKHi7zsOvPfUTK1S5HuAFKg=
github.com/qdm12/golibs v0.0.0-20210723175634-a75ca7fd74c2 h1:FMeOhe/bGloI0T5Wb6QB7/rfOqgFeI//UF/N/f7PUCI=
github.com/qdm12/golibs v0.0.0-20210723175634-a75ca7fd74c2/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=

View File

@@ -28,9 +28,8 @@ func newReader(env params.Env, logger logging.Logger) reader {
func (r *reader) onRetroActive(oldKey, newKey string) {
r.logger.Warn(
"You are using the old environment variable %s, please consider changing it to %s",
oldKey, newKey,
)
"You are using the old environment variable " + oldKey +
", please consider changing it to " + newKey)
}
var (

View File

@@ -0,0 +1,80 @@
package configuration
import (
"errors"
"testing"
"github.com/golang/mock/gomock"
"github.com/qdm12/dns/pkg/provider"
"github.com/qdm12/dns/pkg/unbound"
"github.com/qdm12/golibs/params/mock_params"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func Test_DNS_readUnboundProviders(t *testing.T) {
t.Parallel()
testCases := map[string]struct {
envValue string
envErr error
expected DNS
err error
}{
"bad value": {
envValue: "invalid",
err: errors.New(`invalid DNS over TLS provider: cannot parse provider: "invalid"`),
},
"env error": {
envErr: errors.New("env error"),
err: errors.New("environment variable DOT_PROVIDERS: env error"),
},
"multiple valid values": {
envValue: "cloudflare,google",
expected: DNS{
Unbound: unbound.Settings{
Providers: []provider.Provider{
provider.Cloudflare(),
provider.Google(),
},
},
},
},
"one invalid value in two": {
envValue: "cloudflare,invalid",
expected: DNS{
Unbound: unbound.Settings{
Providers: []provider.Provider{
provider.Cloudflare(),
},
},
},
err: errors.New(`invalid DNS over TLS provider: cannot parse provider: "invalid"`),
},
}
for name, testCase := range testCases {
testCase := testCase
t.Run(name, func(t *testing.T) {
t.Parallel()
ctrl := gomock.NewController(t)
env := mock_params.NewMockEnv(ctrl)
env.EXPECT().Get("DOT_PROVIDERS", gomock.Any()).
Return(testCase.envValue, testCase.envErr)
var settings DNS
err := settings.readUnboundProviders(env)
if testCase.err != nil {
require.Error(t, err)
assert.Equal(t, testCase.err.Error(), err.Error())
} else {
assert.NoError(t, err)
}
assert.Equal(t, testCase.expected, settings)
})
}
}

View File

@@ -24,7 +24,7 @@ type Configurator interface {
}
type Config struct { //nolint:maligned
commander command.Commander
runner command.Runner
logger logging.Logger
routing routing.Routing
iptablesMutex sync.Mutex
@@ -47,15 +47,15 @@ type Config struct { //nolint:maligned
}
// NewConfig creates a new Config instance.
func NewConfig(logger logging.Logger, cmder command.Commander,
func NewConfig(logger logging.Logger, runner command.Runner,
routing routing.Routing, defaultInterface string, defaultGateway net.IP,
localNetworks []routing.LocalNetwork, localIP net.IP) *Config {
return &Config{
commander: cmder,
runner: runner,
logger: logger,
routing: routing,
allowedInputPorts: make(map[uint16]string),
ip6Tables: ip6tablesSupported(context.Background(), cmder),
ip6Tables: ip6tablesSupported(context.Background(), runner),
customRulesPath: "/iptables/post-rules.txt",
// Obtained from routing
defaultInterface: defaultInterface,

View File

@@ -15,9 +15,9 @@ var (
ErrIP6NotSupported = errors.New("ip6tables not supported")
)
func ip6tablesSupported(ctx context.Context, commander command.Commander) (supported bool) {
func ip6tablesSupported(ctx context.Context, runner command.Runner) (supported bool) {
cmd := exec.CommandContext(ctx, "ip6tables", "-L")
if _, err := commander.Run(cmd); err != nil {
if _, err := runner.Run(cmd); err != nil {
return false
}
return true
@@ -43,7 +43,7 @@ func (c *Config) runIP6tablesInstruction(ctx context.Context, instruction string
flags := strings.Fields(instruction)
cmd := exec.CommandContext(ctx, "ip6tables", flags...)
if output, err := c.commander.Run(cmd); err != nil {
if output, err := c.runner.Run(cmd); err != nil {
return fmt.Errorf("%w: \"ip6tables %s\": %s: %s", ErrIP6Tables, instruction, output, err)
}
return nil

View File

@@ -47,9 +47,9 @@ func flipRule(rule string) string {
}
// Version obtains the version of the installed iptables.
func Version(ctx context.Context, commander command.Commander) (string, error) {
func Version(ctx context.Context, runner command.Runner) (string, error) {
cmd := exec.CommandContext(ctx, "iptables", "--version")
output, err := commander.Run(cmd)
output, err := runner.Run(cmd)
if err != nil {
return "", err
}
@@ -78,7 +78,7 @@ func (c *Config) runIptablesInstruction(ctx context.Context, instruction string)
flags := strings.Fields(instruction)
cmd := exec.CommandContext(ctx, "iptables", flags...)
if output, err := c.commander.Run(cmd); err != nil {
if output, err := c.runner.Run(cmd); err != nil {
return fmt.Errorf("%w \"iptables %s\": %s: %s", ErrIPTables, instruction, output, err)
}
return nil

View File

@@ -60,7 +60,7 @@ func (c *Config) RemoveAllowedPort(ctx context.Context, port uint16) (err error)
return nil
}
c.logger.Info("removing allowed port "+strconv.Itoa(int(port))+" through firewall...", port)
c.logger.Info("removing allowed port " + strconv.Itoa(int(port)) + " through firewall...")
intf, ok := c.allowedInputPorts[port]
if !ok {

View File

@@ -37,7 +37,7 @@ func (c *configurator) Start(ctx context.Context, version string, flags []string
cmd := exec.CommandContext(ctx, bin, args...)
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
return c.commander.Start(cmd)
return c.cmder.Start(cmd)
}
func (c *configurator) Version24(ctx context.Context) (version string, err error) {
@@ -52,7 +52,7 @@ var ErrVersionTooShort = errors.New("version output is too short")
func (c *configurator) version(ctx context.Context, binName string) (version string, err error) {
cmd := exec.CommandContext(ctx, binName, "--version")
output, err := c.commander.Run(cmd)
output, err := c.cmder.Run(cmd)
if err != nil && err.Error() != "exit status 1" {
return "", err
}

View File

@@ -23,17 +23,17 @@ type Configurator interface {
type configurator struct {
logger logging.Logger
commander command.Commander
cmder command.RunStarter
unix unix.Unix
authFilePath string
tunDevPath string
}
func NewConfigurator(logger logging.Logger, unix unix.Unix,
cmder command.Commander) Configurator {
cmder command.RunStarter) Configurator {
return &configurator{
logger: logger,
commander: cmder,
cmder: cmder,
unix: unix,
authFilePath: constants.OpenVPNAuthConf,
tunDevPath: constants.TunnelDevice,