diff --git a/internal/provider/fastestvpn/openvpnconf.go b/internal/provider/fastestvpn/openvpnconf.go index 49d02592..f69f5a53 100644 --- a/internal/provider/fastestvpn/openvpnconf.go +++ b/internal/provider/fastestvpn/openvpnconf.go @@ -53,6 +53,10 @@ func (f *Fastestvpn) BuildConf(connection models.Connection, lines = append(lines, utils.CipherLines(settings.Cipher, settings.Version)...) + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/hidemyass/openvpnconf.go b/internal/provider/hidemyass/openvpnconf.go index 50dccceb..5760e5f9 100644 --- a/internal/provider/hidemyass/openvpnconf.go +++ b/internal/provider/hidemyass/openvpnconf.go @@ -51,6 +51,10 @@ func (h *HideMyAss) BuildConf(connection models.Connection, lines = append(lines, "mssfix "+strconv.Itoa(int(settings.MSSFix))) } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/ipvanish/openvpnconf.go b/internal/provider/ipvanish/openvpnconf.go index 673b7b8a..33eb83ed 100644 --- a/internal/provider/ipvanish/openvpnconf.go +++ b/internal/provider/ipvanish/openvpnconf.go @@ -49,6 +49,10 @@ func (i *Ipvanish) BuildConf(connection models.Connection, lines = append(lines, "mssfix "+strconv.Itoa(int(settings.MSSFix))) } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/ivpn/openvpnconf.go b/internal/provider/ivpn/openvpnconf.go index c83503e5..121d9bf8 100644 --- a/internal/provider/ivpn/openvpnconf.go +++ b/internal/provider/ivpn/openvpnconf.go @@ -56,6 +56,10 @@ func (i *Ivpn) BuildConf(connection models.Connection, lines = append(lines, "mssfix "+strconv.Itoa(int(settings.MSSFix))) } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/mullvad/openvpnconf.go b/internal/provider/mullvad/openvpnconf.go index 8f0aced2..f6f8f24a 100644 --- a/internal/provider/mullvad/openvpnconf.go +++ b/internal/provider/mullvad/openvpnconf.go @@ -51,6 +51,7 @@ func (m *Mullvad) BuildConf(connection models.Connection, if connection.Protocol == constants.UDP { lines = append(lines, "fast-io") + lines = append(lines, "explicit-exit-notify") } if !settings.IPv6 { diff --git a/internal/provider/nordvpn/openvpnconf.go b/internal/provider/nordvpn/openvpnconf.go index 9ec9d371..566f5517 100644 --- a/internal/provider/nordvpn/openvpnconf.go +++ b/internal/provider/nordvpn/openvpnconf.go @@ -57,6 +57,7 @@ func (n *Nordvpn) BuildConf(connection models.Connection, if connection.Protocol == constants.UDP { lines = append(lines, "fast-io") + lines = append(lines, "explicit-exit-notify") } if !settings.Root { diff --git a/internal/provider/privado/openvpnconf.go b/internal/provider/privado/openvpnconf.go index aaac31b3..5051b295 100644 --- a/internal/provider/privado/openvpnconf.go +++ b/internal/provider/privado/openvpnconf.go @@ -58,6 +58,10 @@ func (p *Privado) BuildConf(connection models.Connection, lines = append(lines, "mssfix "+strconv.Itoa(int(settings.MSSFix))) } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.IPv6 { lines = append(lines, `pull-filter ignore "route-ipv6"`) lines = append(lines, `pull-filter ignore "ifconfig-ipv6"`) diff --git a/internal/provider/privateinternetaccess/openvpnconf.go b/internal/provider/privateinternetaccess/openvpnconf.go index 3f652bd3..8e9cc642 100644 --- a/internal/provider/privateinternetaccess/openvpnconf.go +++ b/internal/provider/privateinternetaccess/openvpnconf.go @@ -71,6 +71,10 @@ func (p *PIA) BuildConf(connection models.Connection, lines = append(lines, "auth "+settings.Auth) } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/privatevpn/openvpnconf.go b/internal/provider/privatevpn/openvpnconf.go index 8aa02709..fa5f8796 100644 --- a/internal/provider/privatevpn/openvpnconf.go +++ b/internal/provider/privatevpn/openvpnconf.go @@ -47,6 +47,7 @@ func (p *Privatevpn) BuildConf(connection models.Connection, if connection.Protocol == constants.UDP { lines = append(lines, "key-direction 1") + lines = append(lines, "explicit-exit-notify") } if !settings.Root { diff --git a/internal/provider/protonvpn/openvpnconf.go b/internal/provider/protonvpn/openvpnconf.go index bf6cea30..4226d179 100644 --- a/internal/provider/protonvpn/openvpnconf.go +++ b/internal/provider/protonvpn/openvpnconf.go @@ -57,6 +57,7 @@ func (p *Protonvpn) BuildConf(connection models.Connection, if connection.Protocol == constants.UDP { lines = append(lines, "fast-io") + lines = append(lines, "explicit-exit-notify") } if !settings.Root { diff --git a/internal/provider/surfshark/openvpnconf.go b/internal/provider/surfshark/openvpnconf.go index 6d3a7364..92d0455e 100644 --- a/internal/provider/surfshark/openvpnconf.go +++ b/internal/provider/surfshark/openvpnconf.go @@ -56,6 +56,10 @@ func (s *Surfshark) BuildConf(connection models.Connection, lines = append(lines, utils.CipherLines(settings.Cipher, settings.Version)...) + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/torguard/openvpnconf.go b/internal/provider/torguard/openvpnconf.go index b380231c..31b1cdb5 100644 --- a/internal/provider/torguard/openvpnconf.go +++ b/internal/provider/torguard/openvpnconf.go @@ -66,6 +66,7 @@ func (t *Torguard) BuildConf(connection models.Connection, if connection.Protocol == constants.UDP { lines = append(lines, "fast-io") + lines = append(lines, "explicit-exit-notify") } if !settings.IPv6 { diff --git a/internal/provider/vpnunlimited/openvpnconf.go b/internal/provider/vpnunlimited/openvpnconf.go index 0b533b4a..fd565361 100644 --- a/internal/provider/vpnunlimited/openvpnconf.go +++ b/internal/provider/vpnunlimited/openvpnconf.go @@ -49,6 +49,10 @@ func (p *Provider) BuildConf(connection models.Connection, lines = append(lines, "mssfix "+strconv.Itoa(int(settings.MSSFix))) } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/vyprvpn/openvpnconf.go b/internal/provider/vyprvpn/openvpnconf.go index 91841d2b..b1714939 100644 --- a/internal/provider/vyprvpn/openvpnconf.go +++ b/internal/provider/vyprvpn/openvpnconf.go @@ -49,6 +49,10 @@ func (v *Vyprvpn) BuildConf(connection models.Connection, lines = append(lines, utils.CipherLines(settings.Cipher, settings.Version)...) + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun") diff --git a/internal/provider/windscribe/openvpnconf.go b/internal/provider/windscribe/openvpnconf.go index 80a03048..9d3301d8 100644 --- a/internal/provider/windscribe/openvpnconf.go +++ b/internal/provider/windscribe/openvpnconf.go @@ -55,6 +55,10 @@ func (w *Windscribe) BuildConf(connection models.Connection, lines = append(lines, "ncp-ciphers AES-256-GCM:AES-256-CBC:AES-128-GCM") } + if connection.Protocol == constants.UDP { + lines = append(lines, "explicit-exit-notify") + } + if !settings.Root { lines = append(lines, "user "+settings.ProcUser) lines = append(lines, "persist-tun")