From 88ffd887b41b9963ad0e46b82de79ba65713a450 Mon Sep 17 00:00:00 2001 From: Quentin McGaw Date: Wed, 29 Jul 2026 04:19:49 +0000 Subject: [PATCH] logs --- internal/portforward/loop.go | 3 +++ internal/portforward/service/start.go | 2 ++ internal/portforward/service/stop.go | 1 + internal/provider/protonvpn/portforward.go | 14 ++++++++++++++ internal/vpn/portforward.go | 4 +++- 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/internal/portforward/loop.go b/internal/portforward/loop.go index fd0a7d4e..dc92ca18 100644 --- a/internal/portforward/loop.go +++ b/internal/portforward/loop.go @@ -99,6 +99,7 @@ func (l *Loop) run(runCtx context.Context, runDone chan<- struct{}, case partialUpdate := <-updateTrigger: updatedSettings, err := l.settings.updateWith(partialUpdate, *l.settings.VPNIsUp) if err != nil { + l.logger.Debug(fmt.Sprintf("port forward loop: run: updateWith error %v", err)) updateResult <- err continue } @@ -136,6 +137,7 @@ func (l *Loop) run(runCtx context.Context, runDone chan<- struct{}, if err != nil { err = fmt.Errorf("starting port forwarding service: %w", err) } + l.logger.Debug(fmt.Sprintf("port forward loop: Start: error is %v", err)) updateResult <- err } else if err != nil { // Log the error and schedule a retry @@ -150,6 +152,7 @@ func (l *Loop) UpdateWith(partialUpdate Settings) (err error) { case l.updateTrigger <- partialUpdate: select { case err = <-l.updatedResult: + l.logger.Debug(fmt.Sprintf("port forward loop: UpdateWith: received error %v", err)) return err case <-l.runCtx.Done(): return l.runCtx.Err() diff --git a/internal/portforward/service/start.go b/internal/portforward/service/start.go index 7ee6875a..98d4ba20 100644 --- a/internal/portforward/service/start.go +++ b/internal/portforward/service/start.go @@ -123,7 +123,9 @@ func (s *Service) onNewPorts(ctx context.Context, internalToExternalPorts map[ui } } + s.logger.Debug(fmt.Sprintf("writePortForwardedFile with externalPorts: %v", externalPorts)) err = s.writePortForwardedFile(externalPorts) + s.logger.Debug(fmt.Sprintf("writing port file: error is %v", err)) if err != nil { _ = s.cleanup() return fmt.Errorf("writing port file: %w", err) diff --git a/internal/portforward/service/stop.go b/internal/portforward/service/stop.go index fecc03ef..960c269b 100644 --- a/internal/portforward/service/stop.go +++ b/internal/portforward/service/stop.go @@ -58,6 +58,7 @@ func (s *Service) cleanup() (err error) { s.ports = nil + s.logger.Debug("writePortForwardedFile in cleanup") err = s.writePortForwardedFile(nil) if err != nil { return fmt.Errorf("clearing port file: %w", err) diff --git a/internal/provider/protonvpn/portforward.go b/internal/provider/protonvpn/portforward.go index 841055a7..bfb49d0f 100644 --- a/internal/provider/protonvpn/portforward.go +++ b/internal/provider/protonvpn/portforward.go @@ -133,6 +133,20 @@ func (p *Provider) KeepPortForward(ctx context.Context, case <-timer.C: } + _, externalIPv4Address, err := client.ExternalAddress(ctx, objects.Gateway) + if err != nil { + switch { + case strings.HasSuffix(err.Error(), "connection refused"): + err = fmt.Errorf("%w - make sure you have +pmp at the end of your OpenVPN username "+ + "or that your Wireguard key is set to work with PMP", err) + case strings.Contains(err.Error(), "i/o timeout"): + err = fmt.Errorf("%w - make sure FIREWALL_OUTBOUND_SUBNETS does not conflict with "+ + "the VPN gateway ip address %s", err, objects.Gateway) + } + logger.Error(fmt.Sprintf("getting external IPv4 address: %v", err)) + } + logger.Debug("gateway external IPv4 address is " + externalIPv4Address.String()) + objects.Logger.Debug("refreshing forwarded ports since 45 seconds have elapsed") const lifetime = 60 * time.Second for internalPort, externalPort := range p.internalToExternalPorts { diff --git a/internal/vpn/portforward.go b/internal/vpn/portforward.go index ec8a7862..f80320a8 100644 --- a/internal/vpn/portforward.go +++ b/internal/vpn/portforward.go @@ -34,7 +34,9 @@ func (l *Loop) startPortForwarding(data tunnelUpData) (err error) { Password: data.password, }, } - return l.portForward.UpdateWith(partialUpdate) + err = l.portForward.UpdateWith(partialUpdate) + l.logger.Debug(fmt.Sprintf("vpn loop: start port forwarding: error is %v", err)) + return err } func (l *Loop) stopPortForwarding() (err error) {