diff --git a/internal/configuration/settings/serverselection.go b/internal/configuration/settings/serverselection.go index af334932..3781e818 100644 --- a/internal/configuration/settings/serverselection.go +++ b/internal/configuration/settings/serverselection.go @@ -518,7 +518,8 @@ func (ss *ServerSelection) read(r *reader.Reader, return err } - err = ss.Wireguard.read(r) + amneziawg := ss.VPN == vpn.AmneziaWg + err = ss.Wireguard.read(r, amneziawg) if err != nil { return err } diff --git a/internal/configuration/settings/wireguardselection.go b/internal/configuration/settings/wireguardselection.go index 778eae9f..44bd28d1 100644 --- a/internal/configuration/settings/wireguardselection.go +++ b/internal/configuration/settings/wireguardselection.go @@ -152,18 +152,22 @@ func (w WireguardSelection) toLinesNode() (node *gotree.Node) { return node } -func (w *WireguardSelection) read(r *reader.Reader) (err error) { - w.EndpointIP, err = r.NetipAddr("WIREGUARD_ENDPOINT_IP", reader.RetroKeys("VPN_ENDPOINT_IP")) +func (w *WireguardSelection) read(r *reader.Reader, amneziaWG bool) (err error) { + prefix := "WIREGUARD" + if amneziaWG { + prefix = "AMNEZIAWG" + } + w.EndpointIP, err = r.NetipAddr(prefix+"_ENDPOINT_IP", reader.RetroKeys("VPN_ENDPOINT_IP")) if err != nil { return fmt.Errorf("%w - note this MUST be an IP address, "+ "see https://github.com/qdm12/gluetun/issues/788", err) } - w.EndpointPort, err = r.Uint16Ptr("WIREGUARD_ENDPOINT_PORT", reader.RetroKeys("VPN_ENDPOINT_PORT")) + w.EndpointPort, err = r.Uint16Ptr(prefix+"_ENDPOINT_PORT", reader.RetroKeys("VPN_ENDPOINT_PORT")) if err != nil { return err } - w.PublicKey = r.String("WIREGUARD_PUBLIC_KEY", reader.ForceLowercase(false)) + w.PublicKey = r.String(prefix+"_PUBLIC_KEY", reader.ForceLowercase(false)) return nil } diff --git a/internal/pmtud/vpn.go b/internal/pmtud/vpn.go index 935928f4..7d26979d 100644 --- a/internal/pmtud/vpn.go +++ b/internal/pmtud/vpn.go @@ -29,7 +29,7 @@ func MaxTheoreticalVPNMTU(vpnType, network string, vpnGateway netip.Addr) uint32 panic("unknown network protocol: " + network) } switch vpnType { - case vpn.Wireguard: + case vpn.Wireguard, vpn.AmneziaWg: vpnLinkMTU -= pconstants.WireguardHeaderLength case vpn.OpenVPN: vpnLinkMTU -= pconstants.OpenVPNHeaderMaxLength diff --git a/internal/provider/custom/connection.go b/internal/provider/custom/connection.go index 92c73538..cf06e0bd 100644 --- a/internal/provider/custom/connection.go +++ b/internal/provider/custom/connection.go @@ -19,7 +19,7 @@ func (p *Provider) GetConnection(selection settings.ServerSelection, _ bool) ( switch selection.VPN { case vpn.OpenVPN: return getOpenVPNConnection(p.extractor, selection) - case vpn.Wireguard: + case vpn.Wireguard, vpn.AmneziaWg: return getWireguardConnection(selection), nil default: return connection, fmt.Errorf("%w: %s", ErrVPNTypeNotSupported, selection.VPN) diff --git a/internal/provider/utils/pick.go b/internal/provider/utils/pick.go index 40c34e50..20926b08 100644 --- a/internal/provider/utils/pick.go +++ b/internal/provider/utils/pick.go @@ -30,7 +30,7 @@ func pickConnection(connections []models.Connection, switch selection.VPN { case vpn.OpenVPN: targetIP = selection.OpenVPN.EndpointIP - case vpn.Wireguard: + case vpn.Wireguard, vpn.AmneziaWg: targetIP = selection.Wireguard.EndpointIP default: panic("unknown VPN type: " + selection.VPN)