mirror of
https://github.com/qdm12/gluetun.git
synced 2026-07-30 17:03:22 +02:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b00279bc61 |
@@ -99,7 +99,6 @@ func (l *Loop) run(runCtx context.Context, runDone chan<- struct{},
|
|||||||
case partialUpdate := <-updateTrigger:
|
case partialUpdate := <-updateTrigger:
|
||||||
updatedSettings, err := l.settings.updateWith(partialUpdate, *l.settings.VPNIsUp)
|
updatedSettings, err := l.settings.updateWith(partialUpdate, *l.settings.VPNIsUp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.logger.Debug(fmt.Sprintf("port forward loop: run: updateWith error %v", err))
|
|
||||||
updateResult <- err
|
updateResult <- err
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -137,7 +136,6 @@ func (l *Loop) run(runCtx context.Context, runDone chan<- struct{},
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
err = fmt.Errorf("starting port forwarding service: %w", err)
|
err = fmt.Errorf("starting port forwarding service: %w", err)
|
||||||
}
|
}
|
||||||
l.logger.Debug(fmt.Sprintf("port forward loop: Start: error is %v", err))
|
|
||||||
updateResult <- err
|
updateResult <- err
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
// Log the error and schedule a retry
|
// Log the error and schedule a retry
|
||||||
@@ -152,7 +150,6 @@ func (l *Loop) UpdateWith(partialUpdate Settings) (err error) {
|
|||||||
case l.updateTrigger <- partialUpdate:
|
case l.updateTrigger <- partialUpdate:
|
||||||
select {
|
select {
|
||||||
case err = <-l.updatedResult:
|
case err = <-l.updatedResult:
|
||||||
l.logger.Debug(fmt.Sprintf("port forward loop: UpdateWith: received error %v", err))
|
|
||||||
return err
|
return err
|
||||||
case <-l.runCtx.Done():
|
case <-l.runCtx.Done():
|
||||||
return l.runCtx.Err()
|
return l.runCtx.Err()
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"slices"
|
"slices"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -60,7 +61,8 @@ func (s *Service) SetPortsForwarded(ctx context.Context, ports []uint16) (err er
|
|||||||
s.portMutex.Lock()
|
s.portMutex.Lock()
|
||||||
defer s.portMutex.Unlock()
|
defer s.portMutex.Unlock()
|
||||||
|
|
||||||
if s.settings.PortForwarder != nil {
|
hasPortForwardingCodeRunning := !strings.HasSuffix(s.settings.PortForwarder.Name(), "[not supported]")
|
||||||
|
if hasPortForwardingCodeRunning {
|
||||||
return errors.New("setting port forwarded at runtime is not supported with internally running port forwarding code")
|
return errors.New("setting port forwarded at runtime is not supported with internally running port forwarding code")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,9 +123,7 @@ func (s *Service) onNewPorts(ctx context.Context, internalToExternalPorts map[ui
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s.logger.Debug(fmt.Sprintf("writePortForwardedFile with externalPorts: %v", externalPorts))
|
|
||||||
err = s.writePortForwardedFile(externalPorts)
|
err = s.writePortForwardedFile(externalPorts)
|
||||||
s.logger.Debug(fmt.Sprintf("writing port file: error is %v", err))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = s.cleanup()
|
_ = s.cleanup()
|
||||||
return fmt.Errorf("writing port file: %w", err)
|
return fmt.Errorf("writing port file: %w", err)
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ func (s *Service) cleanup() (err error) {
|
|||||||
|
|
||||||
s.ports = nil
|
s.ports = nil
|
||||||
|
|
||||||
s.logger.Debug("writePortForwardedFile in cleanup")
|
|
||||||
err = s.writePortForwardedFile(nil)
|
err = s.writePortForwardedFile(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("clearing port file: %w", err)
|
return fmt.Errorf("clearing port file: %w", err)
|
||||||
|
|||||||
@@ -133,20 +133,6 @@ func (p *Provider) KeepPortForward(ctx context.Context,
|
|||||||
case <-timer.C:
|
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")
|
objects.Logger.Debug("refreshing forwarded ports since 45 seconds have elapsed")
|
||||||
const lifetime = 60 * time.Second
|
const lifetime = 60 * time.Second
|
||||||
for internalPort, externalPort := range p.internalToExternalPorts {
|
for internalPort, externalPort := range p.internalToExternalPorts {
|
||||||
|
|||||||
@@ -34,9 +34,7 @@ func (l *Loop) startPortForwarding(data tunnelUpData) (err error) {
|
|||||||
Password: data.password,
|
Password: data.password,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
err = l.portForward.UpdateWith(partialUpdate)
|
return 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) {
|
func (l *Loop) stopPortForwarding() (err error) {
|
||||||
@@ -57,7 +55,7 @@ func newNoPortForwarder(providerName string) *noPortForwarder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (n *noPortForwarder) Name() string {
|
func (n *noPortForwarder) Name() string {
|
||||||
return n.providerName
|
return n.providerName + " [not supported]"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *noPortForwarder) PortForward(context.Context, pfutils.PortForwardObjects) (
|
func (n *noPortForwarder) PortForward(context.Context, pfutils.PortForwardObjects) (
|
||||||
|
|||||||
Reference in New Issue
Block a user