Fix exiting without fatalOnError function

This commit is contained in:
Quentin McGaw
2020-08-27 22:59:58 +00:00
parent aa9693a84d
commit 93aaf1ab02
2 changed files with 51 additions and 31 deletions

View File

@@ -36,7 +36,7 @@ func main() {
os.Exit(_main(ctx, os.Args))
}
func _main(background context.Context, args []string) int {
func _main(background context.Context, args []string) int { //nolint:gocognit,gocyclo
if len(args) > 1 { // cli operation
var err error
switch args[1] {
@@ -59,8 +59,6 @@ func _main(background context.Context, args []string) int {
defer cancel()
logger := createLogger()
fatalOnError := makeFatalOnError(logger, cancel)
client := network.NewClient(15 * time.Second)
// Create configurators
fileManager := files.NewFileManager()
@@ -86,7 +84,10 @@ func _main(background context.Context, args []string) int {
})
allSettings, err := settings.GetAllSettings(paramsReader)
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
logger.Info(allSettings.String())
// TODO run this in a loop or in openvpn to reload from file without restarting
@@ -101,11 +102,20 @@ func _main(background context.Context, args []string) int {
uid, gid := allSettings.System.UID, allSettings.System.GID
err = alpineConf.CreateUser("nonrootuser", uid)
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
err = fileManager.SetOwnership("/etc/unbound", uid, gid)
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
err = fileManager.SetOwnership("/etc/tinyproxy", uid, gid)
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
if allSettings.Firewall.Debug {
firewallConf.SetDebug()
@@ -114,12 +124,14 @@ func _main(background context.Context, args []string) int {
defaultInterface, defaultGateway, err := routingConf.DefaultRoute()
if err != nil {
fatalOnError(err)
logger.Error(err)
return 1
}
localSubnet, err := routingConf.LocalSubnet()
if err != nil {
fatalOnError(err)
logger.Error(err)
return 1
}
firewallConf.SetNetworkInformation(defaultInterface, defaultGateway, localSubnet)
@@ -127,7 +139,10 @@ func _main(background context.Context, args []string) int {
if err := ovpnConf.CheckTUN(); err != nil {
logger.Warn(err)
err = ovpnConf.CreateTUN()
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
}
connectedCh := make(chan struct{})
@@ -135,25 +150,35 @@ func _main(background context.Context, args []string) int {
connectedCh <- struct{}{}
}
defer close(connectedCh)
go collectStreamLines(ctx, streamMerger, logger, signalConnected)
if allSettings.Firewall.Enabled {
err := firewallConf.SetEnabled(ctx, true) // disabled by default
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
}
err = firewallConf.SetAllowedSubnets(ctx, allSettings.Firewall.AllowedSubnets)
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
for _, vpnPort := range allSettings.Firewall.VPNInputPorts {
err = firewallConf.SetAllowedPort(ctx, vpnPort, string(constants.TUN))
fatalOnError(err)
if err != nil {
logger.Error(err)
return 1
}
}
wg := &sync.WaitGroup{}
go collectStreamLines(ctx, streamMerger, logger, signalConnected)
openvpnLooper := openvpn.NewLooper(allSettings.VPNSP, allSettings.OpenVPN, uid, gid, allServers,
ovpnConf, firewallConf, logger, client, fileManager, streamMerger, fatalOnError)
ovpnConf, firewallConf, logger, client, fileManager, streamMerger, cancel)
restartOpenvpn := openvpnLooper.Restart
portForward := openvpnLooper.PortForward
getOpenvpnSettings := openvpnLooper.GetSettings
@@ -258,15 +283,6 @@ func _main(background context.Context, args []string) int {
return 0
}
func makeFatalOnError(logger logging.Logger, cancel context.CancelFunc) func(err error) {
return func(err error) {
if err != nil {
logger.Error(err)
cancel()
}
}
}
func createLogger() logging.Logger {
logger, err := logging.NewLogger(logging.ConsoleEncoding, logging.InfoLevel, -1)
if err != nil {