mirror of
https://github.com/qdm12/gluetun.git
synced 2025-12-10 20:07:32 -06:00
- `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
71 lines
2.1 KiB
Go
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)
|
|
}
|