Add the ProtonVPN server networks and addresses to the IP lookup (closes #236)
check / check (push) Successful in 1m27s
check / check (push) Successful in 1m27s
Proton's own server list answers only a logged-in session, so the lists come from the public mirror https://github.com/tn3w/ProtonVPN-IPs, downloaded once a day: `protonvpn`, its /24 networks, and `protonvpn_entry`, its servers' IPv4 and IPv6 addresses. Both feed `flags.is_vpn` and `vpn_providers`. Judgement call: the /24 networks are listed as well as the exact addresses, because coverage matters more than attribution, so neighbouring addresses in those networks count too. Risk: the mirror is one person's repository; if it stops updating, downloads keep succeeding with old data. Model: opus-5-5
This commit was merged in pull request #247.
This commit is contained in:
1 parent
0cbd9cd943
commit
b2553f044d
6 files changed
+116
-1
No files matched your search
@@ -8,6 +8,9 @@ import (
|
||||
// TorExitsList is the name of the list of Tor exit nodes.
|
||||
const TorExitsList = "tor_exits"
|
||||
|
||||
// protonVPNIPsURL is where the ProtonVPN-IPs mirror publishes its files.
|
||||
const protonVPNIPsURL = "https://raw.githubusercontent.com/tn3w/ProtonVPN-IPs/master/"
|
||||
|
||||
// How often each list is downloaded. No list is downloaded more often than
|
||||
// its publisher updates it or allows.
|
||||
const (
|
||||
@@ -146,6 +149,28 @@ func vpnLists() []List {
|
||||
Format: FormatPIAJSON,
|
||||
VPN: true,
|
||||
},
|
||||
{
|
||||
// Proton's own server list needs a logged-in session, so this is
|
||||
// the public ProtonVPN-IPs mirror of it. Proton publishes only
|
||||
// the addresses clients connect to. The mirror's README says
|
||||
// traffic leaves from others in the same /24, so this file of
|
||||
// /24 networks is the one it says to use for detecting exits.
|
||||
Name: "protonvpn",
|
||||
Description: "In a /24 network that holds a server of the " +
|
||||
"ProtonVPN service",
|
||||
URL: protonVPNIPsURL + "protonvpn_ip_ranges.txt",
|
||||
Interval: vpnListInterval,
|
||||
Format: FormatProtonVPN,
|
||||
VPN: true,
|
||||
},
|
||||
{
|
||||
Name: "protonvpn_entry",
|
||||
Description: "A server of the ProtonVPN service",
|
||||
URL: protonVPNIPsURL + "protonvpn_entry_ips.txt",
|
||||
Interval: vpnListInterval,
|
||||
Format: FormatProtonVPN,
|
||||
VPN: true,
|
||||
},
|
||||
{
|
||||
Name: "x4bnet",
|
||||
Description: "In an IPv4 network of a VPN service, according to " +
|
||||
|
||||
Reference in new issue
Block a user