Maint: decouple OpenVPN config writer from loop

This commit is contained in:
Quentin McGaw (desktop)
2021-08-18 15:35:07 +00:00
parent 6a545aa088
commit da30ae287f
4 changed files with 38 additions and 38 deletions

View File

@@ -5,8 +5,12 @@ import (
"strings" "strings"
) )
func (l *Loop) writeOpenvpnConf(lines []string) error { type ConfigWriter interface {
file, err := os.OpenFile(l.targetConfPath, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) 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 { if err != nil {
return err return err
} }

View File

@@ -31,14 +31,13 @@ type Loop struct {
statusManager loopstate.Manager statusManager loopstate.Manager
state state.Manager state state.Manager
// Fixed parameters // Fixed parameters
username string username string
puid int puid int
pgid int pgid int
targetConfPath string buildInfo models.BuildInformation
buildInfo models.BuildInformation versionInfo bool
versionInfo bool
// Configurators // Configurators
conf StarterAuthWriter conf Configurator
fw firewallConfigurer fw firewallConfigurer
routing routing.VPNGetter routing routing.VPNGetter
portForward portforward.StartStopper portForward portforward.StartStopper
@@ -85,28 +84,27 @@ func NewLoop(openVPNSettings configuration.OpenVPN,
state := state.New(statusManager, openVPNSettings, providerSettings, allServers) state := state.New(statusManager, openVPNSettings, providerSettings, allServers)
return &Loop{ return &Loop{
statusManager: statusManager, statusManager: statusManager,
state: state, state: state,
username: username, username: username,
puid: puid, puid: puid,
pgid: pgid, pgid: pgid,
targetConfPath: constants.OpenVPNConf, buildInfo: buildInfo,
buildInfo: buildInfo, versionInfo: versionInfo,
versionInfo: versionInfo, conf: conf,
conf: conf, fw: fw,
fw: fw, routing: routing,
routing: routing, portForward: portForward,
portForward: portForward, publicip: publicip,
publicip: publicip, dnsLooper: dnsLooper,
dnsLooper: dnsLooper, logger: logger,
logger: logger, client: client,
client: client, start: start,
start: start, running: running,
running: running, stop: stop,
stop: stop, stopped: stopped,
stopped: stopped, userTrigger: true,
userTrigger: true, startPFCh: make(chan struct{}),
startPFCh: make(chan struct{}), backoffTime: defaultBackoffTime,
backoffTime: defaultBackoffTime,
} }
} }

View File

@@ -12,16 +12,13 @@ type Configurator interface {
VersionGetter VersionGetter
AuthWriter AuthWriter
Starter Starter
} ConfigWriter
type StarterAuthWriter interface {
Starter
AuthWriter
} }
type configurator struct { type configurator struct {
logger logging.Logger logger logging.Logger
cmder command.RunStarter cmder command.RunStarter
configPath string
authFilePath string authFilePath string
} }
@@ -30,6 +27,7 @@ func NewConfigurator(logger logging.Logger,
return &configurator{ return &configurator{
logger: logger, logger: logger,
cmder: cmder, cmder: cmder,
configPath: constants.OpenVPNConf,
authFilePath: constants.OpenVPNAuthConf, authFilePath: constants.OpenVPNAuthConf,
} }
} }

View File

@@ -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.signalOrSetStatus(constants.Crashed)
l.logAndWait(ctx, err) l.logAndWait(ctx, err)
continue continue