From a81bf938fe2b9409d1fa0175cc5f20635bb16127 Mon Sep 17 00:00:00 2001 From: "kali kaneko (leap communications)" Date: Wed, 24 Nov 2021 20:40:18 +0100 Subject: [feat] enable udp only if really announced --- pkg/vpn/bonafide/eip_service.go | 20 ++++++++++++++++++++ pkg/vpn/main.go | 7 ++++++- 2 files changed, 26 insertions(+), 1 deletion(-) (limited to 'pkg/vpn') diff --git a/pkg/vpn/bonafide/eip_service.go b/pkg/vpn/bonafide/eip_service.go index 28d0479..1b8dc01 100644 --- a/pkg/vpn/bonafide/eip_service.go +++ b/pkg/vpn/bonafide/eip_service.go @@ -76,6 +76,26 @@ func (b *Bonafide) setupAuthentication(i interface{}) { } } +func (b *Bonafide) IsUDPAvailable() bool { + if b.eip == nil { + return false + } + for _, gw := range b.eip.Gateways { + for _, t := range gw.Capabilities.Transport { + if t.Type == "openvpn" { + for _, proto := range t.Protocols { + if proto == "udp" { + return true + } + } + } + + } + + } + return false +} + func (b *Bonafide) fetchEipJSON() error { eip3API := config.APIURL + "3/config/eip-service.json" resp, err := b.client.Post(eip3API, "", nil) diff --git a/pkg/vpn/main.go b/pkg/vpn/main.go index 619a10f..176c86f 100644 --- a/pkg/vpn/main.go +++ b/pkg/vpn/main.go @@ -43,6 +43,7 @@ type Bitmask struct { certPemPath string openvpnArgs []string udp bool + offersUdp bool failed bool canUpgrade bool motd []motd.Message @@ -67,7 +68,7 @@ func Init() (*Bitmask, error) { bonafide.Gateway{}, bonafide.Gateway{}, statusCh, nil, bf, launch, "", nil, "", []string{}, - false, false, false, + false, false, false, false, []motd.Message{}, ""} // FIXME multiprovider: need to pass provider name early on // XXX we want to block on these, but they can timeout if we're blocked. @@ -150,6 +151,10 @@ func (b *Bitmask) UseUDP(udp bool) error { return nil } +func (b *Bitmask) OffersUDP() bool { + return b.bonafide.IsUDPAvailable() +} + func (b *Bitmask) GetMotd() string { bytes, err := json.Marshal(b.motd) if err != nil { -- cgit v1.2.3