fix(portforward): trigger after VPN restart
This commit is contained in:
@@ -5,7 +5,7 @@ import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
func (l *Loop) cleanup(vpnProvider string) {
|
||||
func (l *Loop) cleanup() {
|
||||
for _, vpnPort := range l.vpnInputPorts {
|
||||
err := l.fw.RemoveAllowedPort(context.Background(), vpnPort)
|
||||
if err != nil {
|
||||
@@ -18,7 +18,7 @@ func (l *Loop) cleanup(vpnProvider string) {
|
||||
l.logger.Error("clearing public IP data: " + err.Error())
|
||||
}
|
||||
|
||||
err = l.stopPortForwarding(vpnProvider)
|
||||
err = l.stopPortForwarding()
|
||||
if err != nil {
|
||||
portForwardingAlreadyStopped := errors.Is(err, context.Canceled)
|
||||
if !portForwardingAlreadyStopped {
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||
"github.com/qdm12/gluetun/internal/models"
|
||||
"github.com/qdm12/gluetun/internal/netlink"
|
||||
portforward "github.com/qdm12/gluetun/internal/portforward/service"
|
||||
portforward "github.com/qdm12/gluetun/internal/portforward"
|
||||
"github.com/qdm12/gluetun/internal/provider"
|
||||
"github.com/qdm12/gluetun/internal/provider/utils"
|
||||
)
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/configuration/settings"
|
||||
"github.com/qdm12/gluetun/internal/portforward"
|
||||
"github.com/qdm12/gluetun/internal/portforward/service"
|
||||
pfutils "github.com/qdm12/gluetun/internal/provider/utils"
|
||||
)
|
||||
@@ -23,21 +23,20 @@ func getPortForwarder(provider Provider, providers Providers, //nolint:ireturn
|
||||
}
|
||||
|
||||
func (l *Loop) startPortForwarding(data tunnelUpData) (err error) {
|
||||
partialUpdate := service.Settings{
|
||||
PortForwarder: data.portForwarder,
|
||||
Interface: data.vpnIntf,
|
||||
ServerName: data.serverName,
|
||||
VPNProvider: data.portForwarder.Name(),
|
||||
partialUpdate := portforward.Settings{
|
||||
VPNIsUp: ptrTo(true),
|
||||
Service: service.Settings{
|
||||
PortForwarder: data.portForwarder,
|
||||
Interface: data.vpnIntf,
|
||||
ServerName: data.serverName,
|
||||
},
|
||||
}
|
||||
return l.portForward.UpdateWith(partialUpdate)
|
||||
}
|
||||
|
||||
func (l *Loop) stopPortForwarding(vpnProvider string) (err error) {
|
||||
partialUpdate := service.Settings{
|
||||
VPNProvider: vpnProvider,
|
||||
UserSettings: settings.PortForwarding{
|
||||
Enabled: ptrTo(false),
|
||||
},
|
||||
func (l *Loop) stopPortForwarding() (err error) {
|
||||
partialUpdate := portforward.Settings{
|
||||
VPNIsUp: ptrTo(false),
|
||||
}
|
||||
return l.portForward.UpdateWith(partialUpdate)
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) {
|
||||
case <-tunnelReady:
|
||||
go l.onTunnelUp(openvpnCtx, tunnelUpData)
|
||||
case <-ctx.Done():
|
||||
l.cleanup(portForwarder.Name())
|
||||
l.cleanup()
|
||||
openvpnCancel()
|
||||
<-waitError
|
||||
close(waitError)
|
||||
@@ -79,7 +79,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) {
|
||||
case <-l.stop:
|
||||
l.userTrigger = true
|
||||
l.logger.Info("stopping")
|
||||
l.cleanup(portForwarder.Name())
|
||||
l.cleanup()
|
||||
openvpnCancel()
|
||||
<-waitError
|
||||
// do not close waitError or the waitError
|
||||
@@ -92,7 +92,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) {
|
||||
case err := <-waitError: // unexpected error
|
||||
l.statusManager.Lock() // prevent SetStatus from running in parallel
|
||||
|
||||
l.cleanup(portForwarder.Name())
|
||||
l.cleanup()
|
||||
openvpnCancel()
|
||||
l.statusManager.SetStatus(constants.Crashed)
|
||||
l.logAndWait(ctx, err)
|
||||
|
||||
Reference in New Issue
Block a user