diff --git a/internal/models/openvpn.go b/internal/models/openvpn.go index 511cb81f..e518c072 100644 --- a/internal/models/openvpn.go +++ b/internal/models/openvpn.go @@ -5,10 +5,10 @@ import ( ) type OpenVPNConnection struct { - IP net.IP - Port uint16 - Protocol NetworkProtocol - Hostname string // Privado for tls verification + IP net.IP `json:"ip"` + Port uint16 `json:"port"` + Protocol NetworkProtocol `json:"protocol"` + Hostname string `json:"hostname"` // Privado for tls verification } func (o *OpenVPNConnection) Equal(other OpenVPNConnection) bool { diff --git a/internal/models/servers.go b/internal/models/servers.go index 9b1486ae..d72f41cf 100644 --- a/internal/models/servers.go +++ b/internal/models/servers.go @@ -13,6 +13,18 @@ type AllServers struct { Windscribe WindscribeServers `json:"windscribe"` } +func (a *AllServers) Count() int { + return len(a.Cyberghost.Servers) + + len(a.Mullvad.Servers) + + len(a.Nordvpn.Servers) + + len(a.Pia.Servers) + + len(a.Privado.Servers) + + len(a.Purevpn.Servers) + + len(a.Surfshark.Servers) + + len(a.Vyprvpn.Servers) + + len(a.Windscribe.Servers) +} + type CyberghostServers struct { Version uint16 `json:"version"` Timestamp int64 `json:"timestamp"` diff --git a/internal/openvpn/loop.go b/internal/openvpn/loop.go index 8158a039..1810d3c6 100644 --- a/internal/openvpn/loop.go +++ b/internal/openvpn/loop.go @@ -2,6 +2,8 @@ package openvpn import ( "context" + "encoding/json" + "fmt" "net" "net/http" "strings" @@ -119,7 +121,15 @@ func (l *looper) Run(ctx context.Context, wg *sync.WaitGroup) { return } if connection.IP == nil { - panic("PLEASE CREATE AN ISSUE with this log: https://github.com/qdm12/gluetun/issues") + serverSelectionJSON, _ := json.Marshal(settings.Provider.ServerSelection) + connectionJSON, _ := json.Marshal(connection) + message := fmt.Sprintf(` + PLEASE CREATE AN ISSUE with this log: https://github.com/qdm12/gluetun/issues + Server selection: %s + AllServers count: %d + connection: %s + `, string(serverSelectionJSON), allServers.Count(), string(connectionJSON)) + panic(message) } lines := providerConf.BuildConf(connection, l.username, settings)