Better exit handling
This commit is contained in:
36
cmd/main.go
36
cmd/main.go
@@ -5,7 +5,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
|
"os/signal"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/qdm12/golibs/command"
|
"github.com/qdm12/golibs/command"
|
||||||
@@ -13,7 +15,6 @@ import (
|
|||||||
libhealthcheck "github.com/qdm12/golibs/healthcheck"
|
libhealthcheck "github.com/qdm12/golibs/healthcheck"
|
||||||
"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/alpine"
|
"github.com/qdm12/private-internet-access-docker/internal/alpine"
|
||||||
"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"
|
||||||
@@ -269,20 +270,31 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
signals.WaitForExit(func(signal string) int {
|
signalsCh := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(signalsCh,
|
||||||
|
syscall.SIGINT,
|
||||||
|
syscall.SIGTERM,
|
||||||
|
os.Interrupt,
|
||||||
|
)
|
||||||
|
select {
|
||||||
|
case signal := <-signalsCh:
|
||||||
logger.Warn("Caught OS signal %s, shutting down", signal)
|
logger.Warn("Caught OS signal %s, shutting down", signal)
|
||||||
if allSettings.VPNSP == "pia" && allSettings.PIA.PortForwarding.Enabled {
|
cancel()
|
||||||
if err := piaConf.ClearPortForward(allSettings.PIA.PortForwarding.Filepath, allSettings.System.UID, allSettings.System.GID); err != nil {
|
case <-ctx.Done():
|
||||||
logger.Error(err)
|
logger.Warn("context canceled, shutting down")
|
||||||
}
|
}
|
||||||
}
|
if allSettings.PIA.PortForwarding.Enabled {
|
||||||
logger.Info("Waiting for processes to exit...")
|
if err := piaConf.ClearPortForward(allSettings.PIA.PortForwarding.Filepath, allSettings.System.UID, allSettings.System.GID); err != nil {
|
||||||
errors := waiter.WaitForAll()
|
|
||||||
for _, err := range errors {
|
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
}
|
}
|
||||||
return 0
|
}
|
||||||
})
|
errors := waiter.WaitForAll()
|
||||||
|
for _, err := range errors {
|
||||||
|
logger.Error(err)
|
||||||
|
}
|
||||||
|
if err := logger.Sync(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func onConnected(
|
func onConnected(
|
||||||
|
|||||||
Reference in New Issue
Block a user