gluetun/internal/vpn/interfaces.go
Quentin McGaw a182e3503b
feat: add VPNsecure.me support (#848)
- `OPENVPN_ENCRYPTED_KEY` environment variable 
- `OPENVPN_ENCRYPTED_KEY_SECRETFILE` environment variable 
- `OPENVPN_KEY_PASSPHRASE` environment variable 
- `OPENVPN_KEY_PASSPHRASE_SECRETFILE` environment variable 
- `PREMIUM_ONLY` environment variable
- OpenVPN user and password not required for vpnsecure provider
2022-08-15 16:54:58 -07:00

71 lines
2.1 KiB
Go

package vpn
import (
"context"
"net"
"github.com/qdm12/gluetun/internal/configuration/settings"
"github.com/qdm12/gluetun/internal/models"
"github.com/qdm12/gluetun/internal/netlink"
"github.com/qdm12/gluetun/internal/portforward"
"github.com/qdm12/gluetun/internal/provider"
)
type Firewall interface {
SetVPNConnection(ctx context.Context, connection models.Connection, interfaceName string) error
SetAllowedPort(ctx context.Context, port uint16, interfaceName string) error
RemoveAllowedPort(ctx context.Context, port uint16) error
}
type Routing interface {
VPNLocalGatewayIP(vpnInterface string) (gateway net.IP, err error)
}
type PortForward interface {
Start(ctx context.Context, data portforward.StartData) (outcome string, err error)
Stop(ctx context.Context) (outcome string, err error)
}
type OpenVPN interface {
WriteConfig(lines []string) error
WriteAuthFile(user, password string) error
WriteAskPassFile(passphrase string) error
}
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)
}
type NetLinker interface {
AddrAdd(link netlink.Link, addr *netlink.Addr) error
IsWireguardSupported() (ok bool, err error)
RouteList(link netlink.Link, family int) (
routes []netlink.Route, err error)
RouteAdd(route *netlink.Route) error
RuleAdd(rule *netlink.Rule) error
RuleDel(rule *netlink.Rule) error
LinkList() (links []netlink.Link, err error)
LinkByName(name string) (link netlink.Link, err error)
LinkAdd(link netlink.Link) (err error)
LinkDel(link netlink.Link) (err error)
LinkSetUp(link netlink.Link) (err error)
LinkSetDown(link netlink.Link) (err error)
}
type DNSLoop interface {
ApplyStatus(ctx context.Context, status models.LoopStatus) (
outcome string, err error)
GetSettings() (settings settings.DNS)
}
type PublicIPLoop interface {
ApplyStatus(ctx context.Context, status models.LoopStatus) (
outcome string, err error)
SetData(data models.PublicIP)
}