Merges streams from start and exits cleanly
This commit is contained in:
18
cmd/main.go
18
cmd/main.go
@@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/qdm12/golibs/files"
|
"github.com/qdm12/golibs/files"
|
||||||
"github.com/qdm12/golibs/logging"
|
"github.com/qdm12/golibs/logging"
|
||||||
"github.com/qdm12/golibs/network"
|
"github.com/qdm12/golibs/network"
|
||||||
|
"github.com/qdm12/golibs/signals"
|
||||||
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
"github.com/qdm12/private-internet-access-docker/internal/constants"
|
||||||
"github.com/qdm12/private-internet-access-docker/internal/dns"
|
"github.com/qdm12/private-internet-access-docker/internal/dns"
|
||||||
"github.com/qdm12/private-internet-access-docker/internal/env"
|
"github.com/qdm12/private-internet-access-docker/internal/env"
|
||||||
@@ -75,6 +76,13 @@ func main() {
|
|||||||
err = firewallConf.AcceptAll()
|
err = firewallConf.AcceptAll()
|
||||||
e.FatalOnError(err)
|
e.FatalOnError(err)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
// Blocking line merging reader for all programs: openvpn, tinyproxy, unbound and shadowsocks
|
||||||
|
logger.Info("Launching standard output merger")
|
||||||
|
err = streamMerger.CollectLines(func(line string) { logger.Info(line) })
|
||||||
|
e.FatalOnError(err)
|
||||||
|
}()
|
||||||
|
|
||||||
if allSettings.DNS.Enabled {
|
if allSettings.DNS.Enabled {
|
||||||
initialDNSToUse := constants.DNSProviderMapping()[allSettings.DNS.Providers[0]]
|
initialDNSToUse := constants.DNSProviderMapping()[allSettings.DNS.Providers[0]]
|
||||||
dnsConf.UseDNSInternally(initialDNSToUse.IPs[0])
|
dnsConf.UseDNSInternally(initialDNSToUse.IPs[0])
|
||||||
@@ -146,9 +154,9 @@ func main() {
|
|||||||
stream, err := ovpnConf.Start()
|
stream, err := ovpnConf.Start()
|
||||||
e.FatalOnError(err)
|
e.FatalOnError(err)
|
||||||
go streamMerger.Merge("openvpn", stream)
|
go streamMerger.Merge("openvpn", stream)
|
||||||
|
signals.WaitForExit(func(signal string) int {
|
||||||
// Blocking line merging reader for all programs: openvpn, tinyproxy, unbound and shadowsocks
|
logger.Warn("Caught OS signal %s, shutting down", signal)
|
||||||
logger.Info("Launching standard output merger")
|
time.Sleep(100 * time.Millisecond) // wait for other processes to exit
|
||||||
err = streamMerger.CollectLines(func(line string) { logger.Info(line) })
|
return 0
|
||||||
e.FatalOnError(err)
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user