Maint: make VPN connection not specific to OpenVPN

- Add VPN field to ServerSelection struct
- Set VPN type to server selection at start using VPN_TYPE
- Change OpenVPNConnection to Connection with Type field
- Rename Provider GetOpenVPNConnection to GetConnection
- Rename GetTargetIPOpenVPNConnection to GetTargetIPConnection
- Rename PickRandomOpenVPNConnection to PickRandomConnection
- Add 'OpenVPN' prefix to OpenVPN specific methods on connection
This commit is contained in:
Quentin McGaw (desktop)
2021-08-19 14:09:41 +00:00
parent 105d81c018
commit 3d8e61900b
54 changed files with 283 additions and 255 deletions

View File

@@ -6,7 +6,7 @@ import (
"github.com/qdm12/gluetun/internal/models"
)
func PickRandomOpenVPNConnection(connections []models.OpenVPNConnection,
source rand.Source) models.OpenVPNConnection {
func PickRandomConnection(connections []models.Connection,
source rand.Source) models.Connection {
return connections[rand.New(source).Intn(len(connections))] //nolint:gosec
}

View File

@@ -8,19 +8,19 @@ import (
"github.com/stretchr/testify/assert"
)
func Test_PickRandomOpenVPNConnection(t *testing.T) {
func Test_PickRandomConnection(t *testing.T) {
t.Parallel()
connections := []models.OpenVPNConnection{
connections := []models.Connection{
{Port: 1}, {Port: 2}, {Port: 3}, {Port: 4},
}
source := rand.NewSource(0)
connection := PickRandomOpenVPNConnection(connections, source)
assert.Equal(t, models.OpenVPNConnection{Port: 3}, connection)
connection := PickRandomConnection(connections, source)
assert.Equal(t, models.Connection{Port: 3}, connection)
connection = PickRandomOpenVPNConnection(connections, source)
assert.Equal(t, models.OpenVPNConnection{Port: 3}, connection)
connection = PickRandomConnection(connections, source)
assert.Equal(t, models.Connection{Port: 3}, connection)
connection = PickRandomOpenVPNConnection(connections, source)
assert.Equal(t, models.OpenVPNConnection{Port: 2}, connection)
connection = PickRandomConnection(connections, source)
assert.Equal(t, models.Connection{Port: 2}, connection)
}

View File

@@ -10,8 +10,8 @@ import (
var ErrTargetIPNotFound = errors.New("target IP address not found")
func GetTargetIPOpenVPNConnection(connections []models.OpenVPNConnection,
targetIP net.IP) (connection models.OpenVPNConnection, err error) {
func GetTargetIPConnection(connections []models.Connection,
targetIP net.IP) (connection models.Connection, err error) {
for _, connection := range connections {
if targetIP.Equal(connection.IP) {
return connection, nil