From 765f06e5a84bc052173063f952271c150955367b Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Wed, 8 Jul 2020 22:11:23 +0000 Subject: [PATCH] Write auth file in openvpn loop --- cmd/gluetun/main.go | 9 +-------- internal/openvpn/loop.go | 11 ++++++++++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmd/gluetun/main.go b/cmd/gluetun/main.go index 32bc5a30..e9f85773 100644 --- a/cmd/gluetun/main.go +++ b/cmd/gluetun/main.go @@ -107,13 +107,6 @@ func _main(background context.Context, args []string) int { fatalOnError(err) } - err = ovpnConf.WriteAuthFile( - allSettings.OpenVPN.User, - allSettings.OpenVPN.Password, - allSettings.System.UID, - allSettings.System.GID) - fatalOnError(err) - defaultInterface, defaultGateway, defaultSubnet, err := routingConf.DefaultRoute() fatalOnError(err) @@ -216,7 +209,7 @@ func _main(background context.Context, args []string) int { unboundDone := make(chan struct{}) serverDone := make(chan struct{}) - openvpnLooper := openvpn.NewLooper(ovpnConf, allSettings.OpenVPN, logger, streamMerger, fatalOnError) + openvpnLooper := openvpn.NewLooper(ovpnConf, allSettings.OpenVPN, logger, streamMerger, fatalOnError, allSettings.System.UID, allSettings.System.GID) // wait for restartOpenvpn go openvpnLooper.Run(ctx, restartOpenvpn, openvpnDone) diff --git a/internal/openvpn/loop.go b/internal/openvpn/loop.go index 534230d4..f458d1dd 100644 --- a/internal/openvpn/loop.go +++ b/internal/openvpn/loop.go @@ -21,10 +21,12 @@ type looper struct { logger logging.Logger streamMerger command.StreamMerger fatalOnError func(err error) + uid int + gid int } func NewLooper(conf Configurator, settings settings.OpenVPN, logger logging.Logger, - streamMerger command.StreamMerger, fatalOnError func(err error)) Looper { + streamMerger command.StreamMerger, fatalOnError func(err error), uid, gid int) Looper { return &looper{ conf: conf, settings: settings, @@ -43,6 +45,13 @@ func (l *looper) Run(ctx context.Context, restart <-chan struct{}, done chan<- s } for { openvpnCtx, openvpnCancel := context.WithCancel(ctx) + err := l.conf.WriteAuthFile( + l.settings.User, + l.settings.Password, + l.uid, + l.gid, + ) + l.fatalOnError(err) stream, waitFn, err := l.conf.Start(openvpnCtx) l.fatalOnError(err) go l.streamMerger.Merge(openvpnCtx, stream,