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"
)
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
}

View File

@@ -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,
}
}

View File

@@ -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,
}
}

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.logAndWait(ctx, err)
continue