chore(all): Providers containing all provider objects
- Share the same providers for updater and vpn - Initialise all providers at start - Get from `Providers` instead of constructing on every run
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"github.com/qdm12/gluetun/internal/netlink"
|
||||
"github.com/qdm12/gluetun/internal/openvpn"
|
||||
"github.com/qdm12/gluetun/internal/portforward"
|
||||
"github.com/qdm12/gluetun/internal/provider"
|
||||
"github.com/qdm12/gluetun/internal/publicip"
|
||||
"github.com/qdm12/gluetun/internal/routing"
|
||||
"github.com/qdm12/gluetun/internal/vpn/state"
|
||||
@@ -32,6 +33,7 @@ type Looper interface {
|
||||
type Loop struct {
|
||||
statusManager loopstate.Manager
|
||||
state state.Manager
|
||||
providers Providers
|
||||
storage Storage
|
||||
// Fixed parameters
|
||||
buildInfo models.BuildInformation
|
||||
@@ -64,6 +66,10 @@ type firewallConfigurer interface {
|
||||
firewall.PortAllower
|
||||
}
|
||||
|
||||
type Providers interface {
|
||||
Get(providerName string) provider.Provider
|
||||
}
|
||||
|
||||
type Storage interface {
|
||||
FilterServers(provider string, selection settings.ServerSelection) (servers []models.Server, err error)
|
||||
GetServerByName(provider, name string) (server models.Server, ok bool)
|
||||
@@ -74,7 +80,7 @@ const (
|
||||
)
|
||||
|
||||
func NewLoop(vpnSettings settings.VPN, vpnInputPorts []uint16,
|
||||
storage Storage, openvpnConf openvpn.Interface,
|
||||
providers Providers, storage Storage, openvpnConf openvpn.Interface,
|
||||
netLinker netlink.NetLinker, fw firewallConfigurer, routing routing.VPNGetter,
|
||||
portForward portforward.StartStopper, starter command.Starter,
|
||||
publicip publicip.Looper, dnsLooper dns.Looper,
|
||||
@@ -91,6 +97,7 @@ func NewLoop(vpnSettings settings.VPN, vpnInputPorts []uint16,
|
||||
return &Loop{
|
||||
statusManager: statusManager,
|
||||
state: state,
|
||||
providers: providers,
|
||||
storage: storage,
|
||||
buildInfo: buildInfo,
|
||||
versionInfo: versionInfo,
|
||||
|
||||
@@ -2,13 +2,9 @@ package vpn
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/constants"
|
||||
"github.com/qdm12/gluetun/internal/constants/vpn"
|
||||
"github.com/qdm12/gluetun/internal/provider"
|
||||
"github.com/qdm12/gluetun/internal/updater/unzip"
|
||||
"github.com/qdm12/log"
|
||||
)
|
||||
|
||||
@@ -29,16 +25,10 @@ func (l *Loop) Run(ctx context.Context, done chan<- struct{}) {
|
||||
return
|
||||
}
|
||||
|
||||
// Updater only objects which are unused in this loop
|
||||
updaterWarner := (log.LoggerInterface)(nil)
|
||||
updaterClient := (*http.Client)(nil)
|
||||
updaterUnzipper := (unzip.Unzipper)(nil)
|
||||
|
||||
for ctx.Err() == nil {
|
||||
settings := l.state.GetSettings()
|
||||
|
||||
providerConf := provider.New(*settings.Provider.Name, l.storage, time.Now,
|
||||
updaterWarner, updaterClient, updaterUnzipper)
|
||||
providerConf := l.providers.Get(*settings.Provider.Name)
|
||||
|
||||
portForwarding := *settings.Provider.PortForwarding.Enabled
|
||||
var vpnRunner vpnRunner
|
||||
|
||||
Reference in New Issue
Block a user