Maint: inject Commander to openvpn and firewall

This commit is contained in:
Quentin McGaw (desktop)
2021-07-23 18:25:30 +00:00
parent 94b60d9f70
commit c5d92ae02c
3 changed files with 11 additions and 12 deletions

View File

@@ -71,10 +71,11 @@ func main() {
unix := unix.New() unix := unix.New()
cli := cli.New() cli := cli.New()
env := params.NewEnv() env := params.NewEnv()
cmder := command.NewCommander()
errorCh := make(chan error) errorCh := make(chan error)
go func() { go func() {
errorCh <- _main(ctx, buildInfo, args, logger, env, unix, cli) errorCh <- _main(ctx, buildInfo, args, logger, env, unix, cmder, cli)
}() }()
select { select {
@@ -113,7 +114,7 @@ var (
//nolint:gocognit,gocyclo //nolint:gocognit,gocyclo
func _main(ctx context.Context, buildInfo models.BuildInformation, func _main(ctx context.Context, buildInfo models.BuildInformation,
args []string, logger logging.ParentLogger, env params.Env, args []string, logger logging.ParentLogger, env params.Env,
unix unix.Unix, cli cli.CLI) error { unix unix.Unix, cmder command.Commander, cli cli.CLI) error {
if len(args) > 1 { // cli operation if len(args) > 1 { // cli operation
switch args[1] { switch args[1] {
case "healthcheck": case "healthcheck":
@@ -135,7 +136,7 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
alpineConf := alpine.NewConfigurator() alpineConf := alpine.NewConfigurator()
ovpnConf := openvpn.NewConfigurator( ovpnConf := openvpn.NewConfigurator(
logger.NewChild(logging.Settings{Prefix: "openvpn configurator: "}), logger.NewChild(logging.Settings{Prefix: "openvpn configurator: "}),
unix) unix, cmder)
dnsCrypto := dnscrypto.New(httpClient, "", "") dnsCrypto := dnscrypto.New(httpClient, "", "")
const cacertsPath = "/etc/ssl/certs/ca-certificates.crt" const cacertsPath = "/etc/ssl/certs/ca-certificates.crt"
dnsConf := unbound.NewConfigurator(nil, dnsCrypto, dnsConf := unbound.NewConfigurator(nil, dnsCrypto,
@@ -162,8 +163,6 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
fmt.Println(line) fmt.Println(line)
} }
cmder := command.NewCommander()
err = printVersions(ctx, logger, []printVersionElement{ err = printVersions(ctx, logger, []printVersionElement{
{name: "Alpine", getVersion: alpineConf.Version}, {name: "Alpine", getVersion: alpineConf.Version},
{name: "OpenVPN 2.4", getVersion: ovpnConf.Version24}, {name: "OpenVPN 2.4", getVersion: ovpnConf.Version24},
@@ -233,7 +232,7 @@ func _main(ctx context.Context, buildInfo models.BuildInformation,
Prefix: "firewall: ", Prefix: "firewall: ",
Level: firewallLogLevel, Level: firewallLogLevel,
}) })
firewallConf := firewall.NewConfigurator(firewallLogger, routingConf) firewallConf := firewall.NewConfigurator(firewallLogger, cmder, routingConf)
defaultInterface, defaultGateway, err := routingConf.DefaultRoute() defaultInterface, defaultGateway, err := routingConf.DefaultRoute()
if err != nil { if err != nil {

View File

@@ -50,14 +50,13 @@ type configurator struct { //nolint:maligned
} }
// NewConfigurator creates a new Configurator instance. // NewConfigurator creates a new Configurator instance.
func NewConfigurator(logger logging.Logger, routing routing.Routing) Configurator { func NewConfigurator(logger logging.Logger, cmder command.Commander, routing routing.Routing) Configurator {
commander := command.NewCommander()
return &configurator{ return &configurator{
commander: commander, commander: cmder,
logger: logger, logger: logger,
routing: routing, routing: routing,
allowedInputPorts: make(map[uint16]string), allowedInputPorts: make(map[uint16]string),
ip6Tables: ip6tablesSupported(context.Background(), commander), ip6Tables: ip6tablesSupported(context.Background(), cmder),
customRulesPath: "/iptables/post-rules.txt", customRulesPath: "/iptables/post-rules.txt",
} }
} }

View File

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