mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-06 20:10:11 +02:00
hotfix(vpn): inject cmder object for up/down commands and fix cleanup panic
This commit is contained in:
@@ -100,10 +100,12 @@ type PublicIPLoop interface {
|
||||
ClearData() (err error)
|
||||
}
|
||||
|
||||
type CmdStarter interface {
|
||||
type Cmder interface {
|
||||
Start(cmd *exec.Cmd) (
|
||||
stdoutLines, stderrLines <-chan string,
|
||||
waitError <-chan error, startErr error)
|
||||
RunAndLog(ctx context.Context, command string,
|
||||
logger command.Logger) (err error)
|
||||
}
|
||||
|
||||
type HealthChecker interface {
|
||||
@@ -121,7 +123,3 @@ type Service interface {
|
||||
Start() (runError <-chan error, err error)
|
||||
Stop() error
|
||||
}
|
||||
|
||||
type Cmder interface {
|
||||
RunAndLog(ctx context.Context, command string, logger command.Logger) (err error)
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ type Loop struct {
|
||||
state *state.State
|
||||
providers Providers
|
||||
storage Storage
|
||||
cmder Cmder
|
||||
healthSettings settings.Health
|
||||
healthChecker HealthChecker
|
||||
healthServer HealthServer
|
||||
@@ -36,9 +35,9 @@ type Loop struct {
|
||||
dnsLooper DNSLoop
|
||||
boringPoll Service
|
||||
// Other objects
|
||||
starter CmdStarter // for OpenVPN
|
||||
logger log.LoggerInterface
|
||||
client *http.Client
|
||||
cmder Cmder // for OpenVPN and up/down commands
|
||||
logger log.LoggerInterface
|
||||
client *http.Client
|
||||
// Internal channels and values
|
||||
stop <-chan struct{}
|
||||
stopped chan<- struct{}
|
||||
@@ -57,7 +56,7 @@ func NewLoop(vpnSettings settings.VPN, ipv6Supported bool, vpnInputPorts []uint1
|
||||
providers Providers, storage Storage, boringPoll Service,
|
||||
healthSettings settings.Health, healthChecker HealthChecker, healthServer HealthServer,
|
||||
openvpnConf OpenVPN, netLinker NetLinker, fw Firewall, routing Routing,
|
||||
portForward PortForward, starter CmdStarter,
|
||||
portForward PortForward, cmder Cmder,
|
||||
publicip PublicIPLoop, dnsLooper DNSLoop,
|
||||
logger log.LoggerInterface, client *http.Client,
|
||||
buildInfo models.BuildInformation, versionInfo bool,
|
||||
@@ -90,7 +89,7 @@ func NewLoop(vpnSettings settings.VPN, ipv6Supported bool, vpnInputPorts []uint1
|
||||
portForward: portForward,
|
||||
publicip: publicip,
|
||||
dnsLooper: dnsLooper,
|
||||
starter: starter,
|
||||
cmder: cmder,
|
||||
logger: logger,
|
||||
client: client,
|
||||
start: start,
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
// It returns a serverName for port forwarding (PIA) and an error if it fails.
|
||||
func setupOpenVPN(ctx context.Context, fw Firewall,
|
||||
openvpnConf OpenVPN, providerConf provider.Provider,
|
||||
settings settings.VPN, ipv6Supported bool, starter CmdStarter,
|
||||
settings settings.VPN, ipv6Supported bool, starter Cmder,
|
||||
logger openvpn.Logger) (runner *openvpn.Runner, connection models.Connection, err error,
|
||||
) {
|
||||
connection, err = providerConf.GetConnection(settings.Provider.ServerSelection, ipv6Supported)
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) {
|
||||
if settings.Type == vpn.OpenVPN {
|
||||
vpnInterface = settings.OpenVPN.Interface
|
||||
vpnRunner, connection, err = setupOpenVPN(ctx, l.fw,
|
||||
l.openvpnConf, providerConf, settings, l.ipv6Supported, l.starter, subLogger)
|
||||
l.openvpnConf, providerConf, settings, l.ipv6Supported, l.cmder, subLogger)
|
||||
} else { // Wireguard
|
||||
vpnInterface = settings.Wireguard.Interface
|
||||
vpnRunner, connection, err = setupWireguard(ctx, l.netLinker, l.fw,
|
||||
|
||||
Reference in New Issue
Block a user