From 2c73672e64a907dfccea1b7ca8b13fe4395e7d9b Mon Sep 17 00:00:00 2001 From: "Quentin McGaw (desktop)" Date: Mon, 16 Aug 2021 19:16:05 +0000 Subject: [PATCH] Fix: restore PIA error if region does not support port forwarding --- internal/constants/pia.go | 9 +++++++++ .../provider/privateinternetaccess/connection.go | 15 --------------- .../provider/privateinternetaccess/portforward.go | 13 +++++++------ .../provider/privateinternetaccess/provider.go | 7 +++---- 4 files changed, 19 insertions(+), 25 deletions(-) diff --git a/internal/constants/pia.go b/internal/constants/pia.go index cd22d27d..4d2ed0f1 100644 --- a/internal/constants/pia.go +++ b/internal/constants/pia.go @@ -48,3 +48,12 @@ func PIAServers() (servers []models.PIAServer) { copy(servers, allServers.Pia.Servers) return servers } + +func PIAServerWhereName(serverName string) (server models.PIAServer) { + for _, server := range PIAServers() { + if server.ServerName == serverName { + return server + } + } + return server +} diff --git a/internal/provider/privateinternetaccess/connection.go b/internal/provider/privateinternetaccess/connection.go index 7539e828..a0b2d722 100644 --- a/internal/provider/privateinternetaccess/connection.go +++ b/internal/provider/privateinternetaccess/connection.go @@ -47,20 +47,5 @@ func (p *PIA) GetOpenVPNConnection(selection configuration.ServerSelection) ( return connection, err } - p.activeServer = findActiveServer(servers, connection) - return connection, nil } - -func findActiveServer(servers []models.PIAServer, - connection models.OpenVPNConnection) (activeServer models.PIAServer) { - // Reverse lookup server using the randomly picked connection - for _, server := range servers { - for _, ip := range server.IPs { - if connection.IP.Equal(ip) { - return server - } - } - } - return activeServer -} diff --git a/internal/provider/privateinternetaccess/portforward.go b/internal/provider/privateinternetaccess/portforward.go index 175323bc..91b43f39 100644 --- a/internal/provider/privateinternetaccess/portforward.go +++ b/internal/provider/privateinternetaccess/portforward.go @@ -15,6 +15,7 @@ import ( "strings" "time" + "github.com/qdm12/gluetun/internal/constants" "github.com/qdm12/golibs/format" "github.com/qdm12/golibs/logging" ) @@ -32,12 +33,12 @@ var ( func (p *PIA) PortForward(ctx context.Context, client *http.Client, logger logging.Logger, gateway net.IP, serverName string) ( port uint16, err error) { - // commonName := p.activeServer.ServerName - // if !p.activeServer.PortForward { - // logger.Error("The server " + commonName + - // " (region " + p.activeServer.Region + ") does not support port forwarding") - // return - // } + server := constants.PIAServerWhereName(serverName) + if !server.PortForward { + logger.Error("The server " + serverName + + " (region " + server.Region + ") does not support port forwarding") + return + } if gateway == nil { return 0, ErrGatewayIPIsNil } else if serverName == "" { diff --git a/internal/provider/privateinternetaccess/provider.go b/internal/provider/privateinternetaccess/provider.go index 096ae9d6..635a4843 100644 --- a/internal/provider/privateinternetaccess/provider.go +++ b/internal/provider/privateinternetaccess/provider.go @@ -9,10 +9,9 @@ import ( ) type PIA struct { - servers []models.PIAServer - randSource rand.Source - timeNow func() time.Time - activeServer models.PIAServer + servers []models.PIAServer + randSource rand.Source + timeNow func() time.Time // Port forwarding portForwardPath string authFilePath string