diff --git a/internal/openvpn/config.go b/internal/openvpn/config.go index 8cab2aac..243df8c0 100644 --- a/internal/openvpn/config.go +++ b/internal/openvpn/config.go @@ -5,8 +5,12 @@ import ( "strings" ) -func (l *Loop) writeOpenvpnConf(lines []string) error { - file, err := os.OpenFile(l.targetConfPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) +type ConfigWriter interface { + WriteConfig(lines []string) error +} + +func (c *configurator) WriteConfig(lines []string) error { + file, err := os.OpenFile(c.configPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) if err != nil { return err } diff --git a/internal/openvpn/loop.go b/internal/openvpn/loop.go index aa48fa06..bd6bd9d3 100644 --- a/internal/openvpn/loop.go +++ b/internal/openvpn/loop.go @@ -31,14 +31,13 @@ type Loop struct { statusManager loopstate.Manager state state.Manager // Fixed parameters - username string - puid int - pgid int - targetConfPath string - buildInfo models.BuildInformation - versionInfo bool + username string + puid int + pgid int + buildInfo models.BuildInformation + versionInfo bool // Configurators - conf StarterAuthWriter + conf Configurator fw firewallConfigurer routing routing.VPNGetter portForward portforward.StartStopper @@ -85,28 +84,27 @@ func NewLoop(openVPNSettings configuration.OpenVPN, state := state.New(statusManager, openVPNSettings, providerSettings, allServers) return &Loop{ - statusManager: statusManager, - state: state, - username: username, - puid: puid, - pgid: pgid, - targetConfPath: constants.OpenVPNConf, - buildInfo: buildInfo, - versionInfo: versionInfo, - conf: conf, - fw: fw, - routing: routing, - portForward: portForward, - publicip: publicip, - dnsLooper: dnsLooper, - logger: logger, - client: client, - start: start, - running: running, - stop: stop, - stopped: stopped, - userTrigger: true, - startPFCh: make(chan struct{}), - backoffTime: defaultBackoffTime, + statusManager: statusManager, + state: state, + username: username, + puid: puid, + pgid: pgid, + buildInfo: buildInfo, + versionInfo: versionInfo, + conf: conf, + fw: fw, + routing: routing, + portForward: portForward, + publicip: publicip, + dnsLooper: dnsLooper, + logger: logger, + client: client, + start: start, + running: running, + stop: stop, + stopped: stopped, + userTrigger: true, + startPFCh: make(chan struct{}), + backoffTime: defaultBackoffTime, } } diff --git a/internal/openvpn/openvpn.go b/internal/openvpn/openvpn.go index 4d2dcfeb..3a558f9c 100644 --- a/internal/openvpn/openvpn.go +++ b/internal/openvpn/openvpn.go @@ -12,16 +12,13 @@ type Configurator interface { VersionGetter AuthWriter Starter -} - -type StarterAuthWriter interface { - Starter - AuthWriter + ConfigWriter } type configurator struct { logger logging.Logger cmder command.RunStarter + configPath string authFilePath string } @@ -30,6 +27,7 @@ func NewConfigurator(logger logging.Logger, return &configurator{ logger: logger, cmder: cmder, + configPath: constants.OpenVPNConf, authFilePath: constants.OpenVPNAuthConf, } } diff --git a/internal/openvpn/run.go b/internal/openvpn/run.go index baea01f3..9a4e387c 100644 --- a/internal/openvpn/run.go +++ b/internal/openvpn/run.go @@ -47,7 +47,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) { } } - if err := l.writeOpenvpnConf(lines); err != nil { + if err := l.conf.WriteConfig(lines); err != nil { l.signalOrSetStatus(constants.Crashed) l.logAndWait(ctx, err) continue