summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorConor Anderson2019-01-28 21:17:11 -0500
committerConor Anderson2019-01-28 21:17:11 -0500
commit3f60ad638ba9c7c683bb2a8ef2ff8d0dbcd8c4f4 (patch)
treecc23dc0314fb44d03e5bfe75ceb12977bc85878e
parenteff4279178e901e04c93f0c586499d537dc621f6 (diff)
downloadaur-3f60ad638ba9c7c683bb2a8ef2ff8d0dbcd8c4f4.tar.gz
Fixes and some futureproofing
-rw-r--r--.SRCINFO7
-rw-r--r--PKGBUILD19
-rwxr-xr-x[-rw-r--r--]purevpn187
-rw-r--r--vpn-list.csv169
4 files changed, 135 insertions, 247 deletions
diff --git a/.SRCINFO b/.SRCINFO
index efc6551f97d1..454220abff66 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,11 +1,12 @@
pkgbase = purevpn-networkmanager
pkgdesc = A script to generate template-based PureVPN configuration files for NetworkManager
- pkgver = 2019.01.07
+ pkgver = 2019.01.28
pkgrel = 1
url = https://www.purevpn.com/
install = purevpn-networkmanager.install
arch = any
license = GPL
+ makedepends = curl
depends = bash
optdepends = networkmanager-openvpn: for the OpenVPN protocol
optdepends = networkmanager-pptp: for the PPTP protocol
@@ -15,12 +16,10 @@ pkgbase = purevpn-networkmanager
source = template-ovpn
source = template-pptp
source = purevpn
- source = vpn-list.csv
sha256sums = 0c2fecda247c34003468d35b74438443b47fef0e4debdfa7cb1a6a88d2e93bb9
sha256sums = 336a901c88e406c05f1ec6d192bf7461145299b3c631eb203cebdc94b63c26d6
sha256sums = eb63f1730a807726e906d6c2e2362ee402f39d3b554bea225d0303a33b19ea58
- sha256sums = 8de488f0d3de21711afa19f3a2d61c5405d4c6104363d5c7b6516eb892e66dd8
- sha256sums = 1c8de4640f8f358aaa8df53660516e155f29c1a42fde1f2f7f226b775e77e463
+ sha256sums = e647fee6c5600f05d5f90329f63dbd788df0771c3d92973bd10e87d872c62730
pkgname = purevpn-networkmanager
diff --git a/PKGBUILD b/PKGBUILD
index 6b8e51e3e618..ece72028d83c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,6 +1,6 @@
# Maintainer: Conor Anderson <conor@conr.ca>
pkgname=purevpn-networkmanager
-pkgver=2019.01.07
+pkgver=2019.01.28
pkgrel=1
pkgdesc='A script to generate template-based PureVPN configuration files for NetworkManager'
arch=('any')
@@ -9,17 +9,16 @@ license=('GPL')
depends=('bash')
optdepends=("networkmanager-openvpn: for the OpenVPN protocol"
"networkmanager-pptp: for the PPTP protocol")
+makedepends=("curl")
replaces=('purevpn-openvpn')
source=("linux-files.zip::https://s3-us-west-1.amazonaws.com/heartbleed/linux/linux-files.zip"
"template-ovpn"
"template-pptp"
- "purevpn"
- "vpn-list.csv")
+ "purevpn")
sha256sums=('0c2fecda247c34003468d35b74438443b47fef0e4debdfa7cb1a6a88d2e93bb9'
'336a901c88e406c05f1ec6d192bf7461145299b3c631eb203cebdc94b63c26d6'
'eb63f1730a807726e906d6c2e2362ee402f39d3b554bea225d0303a33b19ea58'
- '8de488f0d3de21711afa19f3a2d61c5405d4c6104363d5c7b6516eb892e66dd8'
- '1c8de4640f8f358aaa8df53660516e155f29c1a42fde1f2f7f226b775e77e463')
+ 'e647fee6c5600f05d5f90329f63dbd788df0771c3d92973bd10e87d872c62730')
noextract=("linux-files.zip")
install="${pkgname}".install
@@ -28,6 +27,16 @@ prepare() {
msg2 "Extracting Certifications..."
bsdtar -xf linux-files.zip -s'|[^/]*/||' "*.key" "*.crt"
+
+ msg2 "Getting latest list of VPN servers..."
+
+ ## Lots of credit to: https://stackoverflow.com/a/10189130/6047155
+ curl "https://support.purevpn.com/vpn-servers" 2>/dev/null | \
+ grep -i -e '</\?TABLE\|</\?TD\|</\?TR\|</\?TH' | \
+ sed 's/^[\ \t]*//g' | tr -d '\n' | \
+ sed 's/<\/TR[^>]*>/\n/Ig;s/<\/\?\(TABLE\|TR\)[^>]*>//Ig' | \
+ sed 's/^<T[DH][^>]*>\|<\/\?T[DH][^>]*>$//Ig;s/<\/T[DH][^>]*><T[DH][^>]*>/\t/Ig' | \
+ sed 's/<[^<>]*>//g;s/\s*\t\s*/\t/g;1d' > vpn-list.tsv
}
package() {
diff --git a/purevpn b/purevpn
index 2d54aed5cfe7..9e52d883193a 100644..100755
--- a/purevpn
+++ b/purevpn
@@ -5,73 +5,94 @@ normal=$(tput sgr0)
if [ "$EUID" -ne 0 ]
then
- echo "This script must be run as root."
+ printf "This script must be run as root.\n"
exit 1
fi
+if [ ! -d "$DIRECTORY" ]; then mkdir -p /etc/purevpn; fi
+if [ ! -f /etc/purevpn/vpn-list.tsv ]; then ln -s /usr/lib/purevpn/vpn-list.tsv /etc/purevpn/; fi
+
usage() {
cat <<EOF
usage: ${0##*/} [OPTION]
Options:
- -h Print this help message
- -l List the available cities files
+ -h Print this help message and exit
+ -l List the available cities files and exit
-c [city] Choose a city for which to install the OpenVPN config
- (NOTE: just use the city name, the part that is ${bold}bold
- ${normal}when you run "purevpn -l")
+ This option can be used multiple times. e.g. -c Lima -c New\ York
+ (NOTE: just use the city name, the part that is ${bold}bold or
+ coloured${normal} (if supported) when you run "purevpn -l")
-t [protocol] Choose the protocol to install (either "pptp" or "ovpn")
- -u [username] Set the username
- -p [password] Set the password
- -x Purge all the PureVPN files in /etc/NetworkManager
+ This option can be used multiple times. e.g. -t pptp -t ovpn
+ -u [username] Set the username in all PureVPN files in /etc/NetworkManager
+ -p [password] Set the password in all PureVPN files in /etc/NetworkManager
+ -x Purge all the PureVPN files in /etc/NetworkManager and exit
+ -z Attempt to update the VPN server list from
+ https://support.purevpn.com/vpn-servers and exit
If 'OPTION' is unspecified, ${0##*/} will not make any changes.
EOF
}
-list() {
+updlist() {
+ printf "==> Updating the list of VPN servers from https://support.purevpn.com/vpn-servers\n"
+ rm -v /etc/purevpn/vpn-list.tsv
+
+ ## Lots of credit to: https://stackoverflow.com/a/10189130/6047155
+ curl "https://support.purevpn.com/vpn-servers" 2>/dev/null | \
+ grep -i -e '</\?TABLE\|</\?TD\|</\?TR\|</\?TH' | \
+ sed 's/^[\ \t]*//g' | tr -d '\n' | \
+ sed 's/<\/TR[^>]*>/\n/Ig;s/<\/\?\(TABLE\|TR\)[^>]*>//Ig' | \
+ sed 's/^<T[DH][^>]*>\|<\/\?T[DH][^>]*>$//Ig;s/<\/T[DH][^>]*><T[DH][^>]*>/\t/Ig' | \
+ sed 's/<[^<>]*>//g;s/\s*\t\s*/\t/g;1d' > /etc/purevpn/vpn-list.tsv
+ printf "==> New server list contains $(wc -l < /etc/purevpn/vpn-list.tsv) lines.\n"
+}
- echo "==> The following VPN locations are available"
- while IFS=, read region country city pptp udp tcp
+list() {
+ printf "==> The following VPN locations are available\n"
+ while IFS=$'\t' read region country city pptp udp tcp
do
- echo "$region/$country, ${bold}$city${normal}"
- done < /usr/lib/purevpn/vpn-list.csv
+ echo "$region/$country, ${bold}\""$city\""${normal}"
+ done < /etc/purevpn/vpn-list.tsv
}
get_pptp_url() {
- while IFS=, read region country city pptp udp tcp
+ while IFS=$'\t' read region country city pptp udp tcp
do
if [ "${city}" == "${config}" ]; then
- echo "$pptp"
+ printf "$pptp"
fi
- done < /usr/lib/purevpn/vpn-list.csv
+ done < /etc/purevpn/vpn-list.tsv
}
get_tcp_url() {
- while IFS=, read region country city pptp udp tcp
+ while IFS=$'\t' read region country city pptp udp tcp
do
if [ "${city}" == "${config}" ]; then
- echo "$tcp"
+ printf "$tcp"
fi
- done < /usr/lib/purevpn/vpn-list.csv
+ done < /etc/purevpn/vpn-list.tsv
}
get_upd_url() {
- while IFS=, read region country city pptp udp tcp
+ while IFS=$'\t' read region country city pptp udp tcp
do
if [ "${city}" == "${config}" ]; then
- echo "$udp"
+ printf "$udp"
fi
- done < /usr/lib/purevpn/vpn-list.csv
+ done < /etc/purevpn/vpn-list.tsv
}
process_ovpn() {
- echo "Creating OpenVPN config for $config"
+ printf "Creating OpenVPN config for $config\n"
+ cleanconfig=$(echo $config | tr -d '[:punct:]|[:space:]')
mkdir -p /tmp/purevpn
for proto in TCP UDP
do
- filename=$(echo "${config}-${proto}" | tr '[:lower:]' '[:upper:]')
- cp "/usr/lib/purevpn/template-ovpn" "/tmp/purevpn/${filename}-PUREVPN"
+ filename=$(printf "PureVPN-${cleanconfig}-${proto}")
+ cp "/usr/lib/purevpn/template-ovpn" "/tmp/purevpn/${filename}"
if [ "$proto" == "UDP" ]
then
host=$(get_upd_url)
@@ -80,41 +101,42 @@ process_ovpn() {
then
host=$(get_tcp_url)
port=80
- sed -i '/port=/a \proto-tcp=yes' "/tmp/purevpn/${filename}-PUREVPN"
+ sed -i '/port=/a \proto-tcp=yes' "/tmp/purevpn/${filename}"
fi
if [[ $host == "" ]]; then
- echo "Looks like there is no host for this city and protocol."
+ printf "Looks like there is no host for this city and protocol.\n"
exit 1
fi
- sed -i "s/\bid=/&${filename}/" "/tmp/purevpn/${filename}-PUREVPN" #id
- sed -i "s/\buuid=/&$(uuidgen)/" "/tmp/purevpn/${filename}-PUREVPN" #uuid
- sed -i "s/\bport=/&${port}/" "/tmp/purevpn/${filename}-PUREVPN" #port
- sed -i "s/\bremote=/&$host:${port}/" "/tmp/purevpn/${filename}-PUREVPN" #host
- chmod 600 "/tmp/purevpn/${filename}-PUREVPN" #permissions
- mv "/tmp/purevpn/${filename}-PUREVPN" /etc/NetworkManager/system-connections
+ sed -i "s/\bid=/&${filename}/" "/tmp/purevpn/${filename}" #id
+ sed -i "s/\buuid=/&$(uuidgen)/" "/tmp/purevpn/${filename}" #uuid
+ sed -i "s/\bport=/&${port}/" "/tmp/purevpn/${filename}" #port
+ sed -i "s/\bremote=/&$host:${port}/" "/tmp/purevpn/${filename}" #host
+ chmod 600 "/tmp/purevpn/${filename}" #permissions
+ mv "/tmp/purevpn/${filename}" /etc/NetworkManager/system-connections
done
}
process_pptp() {
- echo "Creating PPTP config for $config"
+ printf "Creating PPTP config for $config\n"
mkdir -p /tmp/purevpn
- filename=$(echo "${config}-PPTP" | tr '[:lower:]' '[:upper:]')
- cp "/usr/lib/purevpn/template-pptp" "/tmp/purevpn/${filename}-PUREVPN"
+ cleanconfig=$(echo $config | tr -d '[:punct:]|[:space:]')
+ filename=$(printf "PureVPN-${cleanconfig}-PPTP")
+ cp "/usr/lib/purevpn/template-pptp" "/tmp/purevpn/${filename}"
host=$(get_pptp_url)
if [[ $host == "" ]]; then
- echo "Looks like there is no host for this city and protocol."
+ printf "Looks like there is no host for this city and protocol.\n"
exit 1
fi
- sed -i "s/\bid=/&${filename}/" "/tmp/purevpn/${filename}-PUREVPN" #id
- sed -i "s/\buuid=/&$(uuidgen)/" "/tmp/purevpn/${filename}-PUREVPN" #uuid
- sed -i "s/\bgateway=/&$host/" "/tmp/purevpn/${filename}-PUREVPN" #host
- chmod 600 "/tmp/purevpn/${filename}-PUREVPN" #permissions
- mv "/tmp/purevpn/${filename}-PUREVPN" /etc/NetworkManager/system-connections
+ sed -i "s/\bid=/&${filename}/" "/tmp/purevpn/${filename}" #id
+ sed -i "s/\buuid=/&$(uuidgen)/" "/tmp/purevpn/${filename}" #uuid
+ sed -i "s/\bgateway=/&$host/" "/tmp/purevpn/${filename}" #host
+ chmod 600 "/tmp/purevpn/${filename}" #permissions
+ mv "/tmp/purevpn/${filename}" /etc/NetworkManager/system-connections
}
addpass() {
cd /etc/NetworkManager/system-connections
- find *-PUREVPN -print0 | while read -d $'\0' file
+ find -iname "*PureVPN*" -print0 | while read -d $'\0' file
do
sed -i "s/\bpassword=.*/password=${passw}/g" "$file"
done
@@ -122,7 +144,7 @@ addpass() {
adduser() {
cd /etc/NetworkManager/system-connections
- find *-PUREVPN -print0 | while read -d $'\0' file
+ find -iname "*PureVPN*" -print0 | while read -d $'\0' file
do
if [[ $file == *"PPTP"* ]]; then
sed -i "s/\buser=.*/user=${uname}/g" "$file"
@@ -133,11 +155,11 @@ adduser() {
}
clean() {
- echo "Purging all PUREVPN files!"
- find /etc/NetworkManager/system-connections -name "*PUREVPN" -exec rm -v {} \;
+ printf "Purging all PureVPN files!\n"
+ find /etc/NetworkManager/system-connections -iname "*PureVPN*" -exec rm -v {} \;
}
-while getopts "hlc:t:u:p:x" opt
+while getopts "hlc:t:u:p:xz" opt
do
case $opt in
h)
@@ -149,21 +171,25 @@ while getopts "hlc:t:u:p:x" opt
exit 0
;;
c)
- config=$OPTARG
+ configs+=("${OPTARG}")
;;
t)
- protoc=$OPTARG
+ protocs+=("${OPTARG}")
;;
u)
uname=$OPTARG
;;
p)
passw=$OPTARG
- ;;
+ ;;
x)
clean
exit 0
;;
+ z)
+ updlist
+ exit 0
+ ;;
\?)
usage
exit 1
@@ -173,42 +199,65 @@ while getopts "hlc:t:u:p:x" opt
## Main script
-if [ -z "$protoc" ];
+if [ -z "$protocs" ];
then
- echo "No protocol was specified. No files will be installed."
- exit 1;
+ if [[ -v uname ]] || [[ -v passw ]];
+ then
+ SKIPCITY="true"
+ else
+ printf "No protocol was specified. No files will be installed.\n"
+ exit 1;
+ fi
fi
-if [ -z "$config" ];
+if [ -z "$configs" ];
then
- echo "No city specified. No files will be installed."
-elif list | grep "${config}" > /dev/null; then
- if [ "$protoc" == "pptp" ];
+ if [[ -v uname ]] || [[ -v passw ]];
then
- process_pptp
+ SKIPCITY="true"
else
- process_ovpn
+ printf "No city specified. No files will be installed.\n"
+ exit 1;
fi
-else
- echo "We couldn't find that city."
- echo "Try running purevpn -l to list available cities."
- exit 1;
fi
-
+
+if [ -z "$SKIPCITY" ];
+then
+ for config in "${configs[@]}"; do
+ if list | grep "${config}" > /dev/null; then
+ for protoc in "${protocs[@]}"; do
+ if [ "$protoc" == "pptp" ]; then
+ process_pptp
+ elif [ "$protoc" == "ovpn" ]; then
+ process_ovpn
+ else
+ printf "$protoc does not seem to be a valid protocol. Choose pptp or ovpn.\n"
+ warn;
+ fi
+ done
+ else
+ printf "We couldn't find a city called $config.\n"
+ printf "Try running purevpn -l to list available cities.\n"
+ exit 1;
+ fi
+ done
+fi
+
if [[ -z "$uname" ]]; then
- echo "No username was specified"
+ printf "No username was specified.\n"
else
- echo "Adding the username to the installed config files."
+ printf "Adding the username to the installed config files.\n"
adduser
fi
if [[ -z "$passw" ]]; then
- echo "No password was specified."
+ printf "No password was specified.\n"
else
- echo "Adding the password to the installed config files."
+ printf "Adding the password to the installed config files.\n"
addpass
fi
-echo "Restarting NetworkManager"
+printf "Restarting NetworkManager.\n"
systemctl restart NetworkManager
+exit 0
diff --git a/vpn-list.csv b/vpn-list.csv
deleted file mode 100644
index 6683be407406..000000000000
--- a/vpn-list.csv
+++ /dev/null
@@ -1,169 +0,0 @@
-Region Name,Country,City,"PPTP, L2TP, SSTP, IKEv2",OpenVPN-UDP,OpenVPN-TCP
-Africa,Ghana,Accra,gh1.pointtoserver.com,gh1-ovpn-udp.pointtoserver.com,gh1-ovpn-tcp.pointtoserver.com
-Africa,Ethiopia,Addis Ababa,et1.pointtoserver.com,et1-ovpn-udp.pointtoserver.com,et1-ovpn-tcp.pointtoserver.com
-Middle East,Yemen,Aden,ym1.pointtoserver.com,ym1-ovpn-udp.pointtoserver.com,ym1-ovpn-tcp.pointtoserver.com
-Asia,Syria,Aleppo,sy1.pointtoserver.com,sy1-ovpn-udp.pointtoserver.com,sy1-ovpn-tcp.pointtoserver.com
-Africa,Algeria,Algiers,vlus-dz1.pointtoserver.com,vlus-dz1-ovpn-udp.pointtoserver.com,vlus-dz1-ovpn-tcp.pointtoserver.com
-Asia,Kazakhstan,Almaty,vlus-kz1.pointtoserver.com,vlus-kz1-ovpn-udp.pointtoserver.com,vlus-kz1-ovpn-tcp.pointtoserver.com
-Middle East,Jordan,Amman,vlus-jo1.pointtoserver.com,vlus-jo1-ovpn-udp.pointtoserver.com,vlus-jo1-ovpn-tcp.pointtoserver.com
-Europe,Netherlands,Amsterdam,nl1.pointtoserver.com,nl1-ovpn-udp.pointtoserver.com,nl1-ovpn-tcp.pointtoserver.com
-Africa,Madagascar,Antananarivo,vlus-mg1.pointtoserver.com,vlus-mg1-ovpn-udp.pointtoserver.com,vlus-mg1-ovpn-tcp.pointtoserver.com
-North America,United States,Ashburn,usva.pointtoserver.com,usva-ovpn-udp.pointtoserver.com,usva-ovpn-tcp.pointtoserver.com
-Asia,Turkmenistan,Ashgabat,vlus-tm1.pointtoserver.com,vlus-tm1-ovpn-udp.pointtoserver.com,vlus-tm1-ovpn-tcp.pointtoserver.com
-South America,Paraguay,Asuncion,vleu-py.pointtoserver.com,vleu-py-ovpn-udp.pointtoserver.com,vleu-py-ovpn-tcp.pointtoserver.com
-Oceania,New Zealand,Auckland,nz.pointtoserver.com,nz-ovpn-udp.pointtoserver.com,nz-ovpn-tcp.pointtoserver.com
-Asia,Azerbaijan,Baku,az1.pointtoserver.com,az1-ovpn-udp.pointtoserver.com,az1-ovpn-tcp.pointtoserver.com
-North America,Turks and Caicos Islands,Balfour Town,vleu-tc.pointtoserver.com,vleu-tc-ovpn-udp.pointtoserver.com,vleu-tc-ovpn-tcp.pointtoserver.com
-Asia,Brunei Darussalam,Bandar Seri Begawan,bn1.pointtoserver.com,bn1-ovpn-udp.pointtoserver.com,bn1-ovpn-tcp.pointtoserver.com
-Asia,Thailand,Bangkok,vlap-th1.pointtoserver.com,vlap-th1-ovpn-udp.pointtoserver.com,vlap-th1-ovpn-tcp.pointtoserver.com
-Europe,Spain,Barcelona,es1.pointtoserver.com,es-ovpn-udp.pointtoserver.com,es-ovpn-tcp.pointtoserver.com
-Asia,China,Beijing,cn1.pointtoserver.com,cn1-ovpn-udp.pointtoserver.com,cn1-ovpn-tcp.pointtoserver.com
-North America,Belize,Belmopan,bz1.pointtoserver.com,bz1-ovpn-udp.pointtoserver.com,bz1-ovpn-tcp.pointtoserver.com
-Africa,Angola,Benguela,vlus-ao1.pointtoserver.com,vlus-ao1-ovpn-udp.pointtoserver.com,vlus-ao1-ovpn-tcp.pointtoserver.com
-Asia,Macao,Beyrouth,mo1.pointtoserver.com,mo1-ovpn-udp.pointtoserver.com,mo1-ovpn-tcp.pointtoserver.com
-Asia,Kyrgyzstan,Bishkek,vlus-kg1.pointtoserver.com,vlus-kg1-ovpn-udp.pointtoserver.com,vlus-kg1-ovpn-tcp.pointtoserver.com
-South America,Colombia,Bogota,co1.pointtoserver.com,co1-ovpn-udp.pointtoserver.com,co1-ovpn-tcp.pointtoserver.com
-Europe,Slovakia,Bratislava,sk1.pointtoserver.com,sk1-ovpn-udp.pointtoserver.com,sk1-ovpn-tcp.pointtoserver.com
-North America,Barbados,Bridgetown,vleu-bb.pointtoserver.com,vleu-bb-ovpn-udp.pointtoserver.com,vleu-bb-ovpn-tcp.pointtoserver.com
-Oceania,Australia,Brisbane,au-bn.pointtoserver.com,au-bn-ovpn-udp.pointtoserver.com,au-bn-ovpn-tcp.pointtoserver.com
-Europe,Belgium,Brussels,vleu-be1.pointtoserver.com,vleu-be1-ovpn-udp.pointtoserver.com,vleu-be1-ovpn-tcp.pointtoserver.com
-Europe,Romania,Bucharest,ro1.pointtoserver.com,ro1-ovpn-udp.pointtoserver.com,ro1-ovpn-tcp.pointtoserver.com
-Europe,Hungary,Budapest,hu1.pointtoserver.com,hu1-ovpn-udp.pointtoserver.com,hu1-ovpn-tcp.pointtoserver.com
-South America,Argentina,Buenos Aires,vlus-ar1.pointtoserver.com,vlus-ar1-ovpn-udp.pointtoserver.com,vlus-ar1-ovpn-tcp.pointtoserver.com
-Africa,Egypt,Cairo,vlus-eg1.pointtoserver.com,vlus-eg1-ovpn-udp.pointtoserver.com,vlus-eg1-ovpn-tcp.pointtoserver.com
-South America,Venezuela,Caracas,ve1.pointtoserver.com,ve1-ovpn-udp.pointtoserver.com,ve1-ovpn-tcp.pointtoserver.com
-North America,Saint Lucia,Castries,vleu-lc.pointtoserver.com,vleu-lc-ovpn-udp.pointtoserver.com,vleu-lc-ovpn-tcp.pointtoserver.com
-Asia,India,Chennai,in1.pointtoserver.com,in1-ovpn-udp.pointtoserver.com,in1-ovpn-tcp.pointtoserver.com
-North America,United States,Chicago,usil1.pointtoserver.com,usil1-ovpn-udp.pointtoserver.com,usil1-ovpn-tcp.pointtoserver.com
-Europe,Moldova,Chisinau,md1.pointtoserver.com,md1-ovpn-udp.pointtoserver.com,md1-ovpn-tcp.pointtoserver.com
-Asia,Sri Lanka,Colombo,vlus-lk1.pointtoserver.com,vlus-lk1-ovpn-udp.pointtoserver.com,vlus-lk1-ovpn-tcp.pointtoserver.com
-North America,United States,Columbus,usoh1.pointtoserver.com,usoh1-ovpn-udp.pointtoserver.com,usoh1-ovpn-tcp.pointtoserver.com
-Europe,Denmark,Copenhagen,vleu-dk1.pointtoserver.com,vleu-dk1-ovpn-udp.pointtoserver.com,vleu-dk1-ovpn-tcp.pointtoserver.com
-Africa,Senegal,Dakar,vlus-sn1.pointtoserver.com,vlus-sn1-ovpn-udp.pointtoserver.com,vlus-sn1-ovpn-tcp.pointtoserver.com
-Africa,Tanzania,Dar Es Salaam,vlus-tz1.pointtoserver.com,vlus-tz1-ovpn-udp.pointtoserver.com,vlus-tz1-ovpn-tcp.pointtoserver.com
-Asia,Bangladesh,Dhaka,vlus-bd1.pointtoserver.com,vlus-bd1-ovpn-udp.pointtoserver.com,vlus-bd1-ovpn-tcp.pointtoserver.com
-Middle East,Qatar,Doha,qa1.pointtoserver.com,qa1-ovpn-udp.pointtoserver.com,qa1-ovpn-tcp.pointtoserver.com
-Middle East,United Arab Emirates,Dubai,ae1.pointtoserver.com,ae1-ovpn-udp.pointtoserver.com,ae1-ovpn-tcp.pointtoserver.com
-Europe,Ireland,Dublin,ie1.pointtoserver.com,ie1-ovpn-udp.pointtoserver.com,ie1-ovpn-tcp.pointtoserver.com
-Asia,Tajikistan,Dushanbe,vlus-tj1.pointtoserver.com,vlus-tj-ovpn-udp.pointtoserver.com,vlus-tj-ovpn-tcp.pointtoserver.com
-Europe,Finland,Espoo,fi1.pointtoserver.com,,
-Asia,Hong Kong (SAR),Fanling,hkf1.pointtoserver.com,,
-Europe,Germany,Frankfurt,de1.pointtoserver.com,de-ovpn-udp.pointtoserver.com,de-ovpn-tcp.pointtoserver.com
-North America,The Bahamas,Freeport,bs1.pointtoserver.com,bs1-ovpn-udp.pointtoserver.com,bs1-ovpn-tcp.pointtoserver.com
-North America,Cayman Islands,George Town,vleu-ky.pointtoserver.com,vleu-ky-ovpn-udp.pointtoserver.com,vleu-ky-ovpn-tcp.pointtoserver.com
-South America,Guyana,Georgetown,vleu-gy.pointtoserver.com,vleu-gy-ovpn-udp.pointtoserver.com,vleu-gy-ovpn-tcp.pointtoserver.com
-North America,United States,Georgia,usga1.pointtoserver.com,usga1-ovpn-udp.pointtoserver.com,usga1-ovpn-tcp.pointtoserver.com
-Europe,United Kingdom,Gosport,ukg1.pointtoserver.com,ukg1-ovpn-udp.pointtoserver.com,ukg1-ovpn-tcp.pointtoserver.com
-North America,Guatemala,Guatemala,vleu-gt.pointtoserver.com,vleu-gt-ovpn-udp.pointtoserver.com,vleu-gt-ovpn-tcp.pointtoserver.com
-North America,Bermuda,Hamilton,vleu-bm.pointtoserver.com,vleu-bm-ovpn-udp.pointtoserver.com,vleu-bm-ovpn-tcp.pointtoserver.com
-Asia,Vietnam,Hanoi,vlap-vn1.pointtoserver.com,vlap-vn1-ovpn-udp.pointtoserver.com,vlap-vn1-ovpn-tcp.pointtoserver.com
-North America,Cuba,Havana,cu1.pointtoserver.com,cu1-ovpn-udp.pointtoserver.com,cu1-ovpn-tcp.pointtoserver.com
-Asia,Hong Kong (SAR),Hong Kong,hk1.pointtoserver.com,hk1-ovpn-udp.pointtoserver.com,hk1-ovpn-tcp.pointtoserver.com
-North America,United States,Houston,ustx1.pointtoserver.com,ustx1-ovpn-udp.pointtoserver.com,ustx1-ovpn-tcp.pointtoserver.com
-Asia,Pakistan,Islamabad,pk1.pointtoserver.com,pk1-ovpn-udp.pointtoserver.com,pk1-ovpn-tcp.pointtoserver.com
-Asia,Turkey,Istanbul,tr1.pointtoserver.com,vlus-tr1-ovpn-udp.pointtoserver.com,vlus-tr1-ovpn-tcp.pointtoserver.com
-Asia,Indonesia,Jakarta,idn1.pointtoserver.com,idn1-ovpn-udp.pointtoserver.com,idn1-ovpn-tcp.pointtoserver.com
-Middle East,Saudi Arabia,Jeddah,sa1.pointtoserver.com,sa1-ovpn-udp.pointtoserver.com,sa1-ovpn-tcp.pointtoserver.com
-Africa,South Africa,Johannesburg,za1.pointtoserver.com,za1-ovpn-udp.pointtoserver.com,za1-ovpn-tcp.pointtoserver.com
-Asia,Malaysia,Johor Baharu,my1.pointtoserver.com,,
-Asia,Afghanistan,Kabul,vlus-af1.pointtoserver.com,vlus-af1-ovpn-udp.pointtoserver.com,vlus-af1-ovpn-tcp.pointtoserver.com
-North America,Jamaica,Kingston,jm1.pointtoserver.com,jm1-ovpn-udp.pointtoserver.com,jm1-ovpn-tcp.pointtoserver.com
-Asia,Malaysia,Kuala Lumpur,my-kl1.pointtoserver.com,my-kl1-ovpn-udp.pointtoserver.com,my-kl1-ovpn-tcp.pointtoserver.com
-Middle East,Kuwait,Kuwait,vlus-kw1.pointtoserver.com,vlus-kw1-ovpn-udp.pointtoserver.com,vlus-kw1-ovpn-tcp.pointtoserver.com
-South America,Peru,Lima,pe1.pointtoserver.com,pe1-ovpn-udp.pointtoserver.com,pe1-ovpn-tcp.pointtoserver.com
-Europe,Portugal,Lisbon,pt1.pointtoserver.com,pt1-ovpn-udp.pointtoserver.com,pt1-ovpn-tcp.pointtoserver.com
-Europe,Slovenia,Ljubljana,si1.pointtoserver.com,si1-ovpn-udp.pointtoserver.com,si1-ovpn-tcp.pointtoserver.com
-Europe,United Kingdom,London,ukl1.pointtoserver.com,ukl1-ovpn-udp.pointtoserver.com,ukl1-ovpn-tcp.pointtoserver.com
-North America,United States,Los Angeles,usla1.pointtoserver.com,usla1-ovpn-udp.pointtoserver.com,usla1-ovpn-tcp.pointtoserver.com
-Europe,Luxembourg,Luxembourg,lu1.pointtoserver.com,lu1-ovpn-udp.pointtoserver.com,lu1-ovpn-tcp.pointtoserver.com
-Europe,United Kingdom,Maidenhead,ukm1.pointtoserver.com,ukm1-ovpn-udp.pointtoserver.com,ukm1-ovpn-tcp.pointtoserver.com
-North America,Nicaragua,Managua,vleu-ni.pointtoserver.com,vleu-ni-ovpn-udp.pointtoserver.com,vleu-ni-ovpn-tcp.pointtoserver.com
-Middle East,Bahrain,Manama,bh.pointtoserver.com,bh-ovpn-udp.pointtoserver.com,bh-ovpn-tcp.pointtoserver.com
-Europe,United Kingdom,Manchester,vlus-uk-man1.pointtoserver.com,vlus-uk-man1-ovpn-udp.pointtoserver.com,vlus-uk-man1-ovpn-tcp.pointtoserver.com
-Asia,Philippines,Manila,vlap-ph1.pointtoserver.com,vlap-ph1-ovpn-udp.pointtoserver.com,vlap-ph1-ovpn-tcp.pointtoserver.com
-Oceania,Australia,Melbourne,au-me1.pointtoserver.com,au-me1-ovpn-udp.pointtoserver.com,au-me1-ovpn-tcp.pointtoserver.com
-North America,Mexico,Mexico City,vlus-mx1.pointtoserver.com,vlus-mx1-ovpn-udp.pointtoserver.com,vlus-mx1-ovpn-tcp.pointtoserver.com
-North America,United States,Miami,usfl1.pointtoserver.com,usfl1-ovpn-udp.pointtoserver.com,usfl1-ovpn-tcp.pointtoserver.com
-Europe,Italy,Milano,it1.pointtoserver.com,vlus-it1-ovpn-udp.pointtoserver.com,vlus-it1-ovpn-tcp.pointtoserver.com
-Africa,Kenya,Mombasa,ke1.pointtoserver.com,ke1-ovpn-udp.pointtoserver.com,ke1-ovpn-tcp.pointtoserver.com
-Europe,Monaco,Monaco,mn1.pointtoserver.com,mn1-ovpn-udp.pointtoserver.com,mn1-ovpn-tcp.pointtoserver.com
-North America,Canada,Montreal,caq1.pointtoserver.com,caq1-ovpn-udp.pointtoserver.com,caq1-ovpn-tcp.pointtoserver.com
-Europe,Russia,Moscow,ru1.pointtoserver.com,vlus-ru1-ovpn-udp.pointtoserver.com,vlus-ru1-ovpn-tcp.pointtoserver.com
-Europe,Germany,Munich,de1.pointtoserver.com,de1-ovpn-udp.pointtoserver.com,de1-ovpn-tcp.pointtoserver.com
-North America,United States,New Jersey,usnj1.pointtoserver.com,usnj1-ovpn-udp.pointtoserver.com,usnj1-ovpn-tcp.pointtoserver.com
-North America,United States,New York,usny1.pointtoserver.com,usny1-ovpn-udp.pointtoserver.com,usny1-ovpn-tcp.pointtoserver.com
-Africa,Niger,Niamey,vlus-ne1.pointtoserver.com,vlus-ne1-ovpn-udp.pointtoserver.com,vlus-ne1-ovpn-tcp.pointtoserver.com
-Europe,Cyprus,Nicosia,cy1.pointtoserver.com,cy1-ovpn-udp.pointtoserver.com,cy1-ovpn-tcp.pointtoserver.com
-Europe,Serbia,Niš,rs1.pointtoserver.com,rs1-ovpn-udp.pointtoserver.com,rs1-ovpn-tcp.pointtoserver.com
-Africa,Mauritania,Nouakchott,vlus-mr1.pointtoserver.com,vlus-mr1-ovpn-udp.pointtoserver.com,vlus-mr1-ovpn-tcp.pointtoserver.com
-Europe,Germany,Nuremberg,de-ao1.pointtoserver.com,de-ao1-ovpn-udp.pointtoserver.com,de-ao1-ovpn-tcp.pointtoserver.com
-Europe,Ukraine,Odessa,ua1.pointtoserver.com,ua1-ovpn-udp.pointtoserver.com,ua1-ovpn-tcp.pointtoserver.com
-Europe,Isle of Man,Onchan,im1.pointtoserver.com,im1-ovpn-udp.pointtoserver.com,im1-ovpn-tcp.pointtoserver.com
-North America,Aruba,Oranjestad,aw1.pointtoserver.com,aw1-ovpn-udp.pointtoserver.com,aw1-ovpn-tcp.pointtoserver.com
-Europe,Norway,Oslo,vleu-no1.pointtoserver.com,vleu-no1-ovpn-udp.pointtoserver.com,vleu-no1-ovpn-tcp.pointtoserver.com
-North America,Haiti,PORT-AU-PRINCE,vleu-ht1.pointtoserver.com,vleu-ht1-ovpn-udp.pointtoserver.com,vleu-ht1-ovpn-tcp.pointtoserver.com
-South America,Panama,Panama City,vlus-pa1.pointtoserver.com,vlus-pa1-ovpn-udp.pointtoserver.com,vlus-pa1-ovpn-tcp.pointtoserver.com
-South America,Suriname,Paramaribo,vleu-sr.pointtoserver.com,vleu-sr-ovpn-udp.pointtoserver.com,vleu-sr-ovpn-tcp.pointtoserver.com
-Europe,France,Paris,fr1.pointtoserver.com,fr1-ovpn-udp.pointtoserver.com,fr1-ovpn-tcp.pointtoserver.com
-Oceania,Australia,Perth,au-pe1.pointtoserver.com,au-pe1-ovpn-udp.pointtoserver.com,au-pe1-ovpn-tcp.pointtoserver.com
-Asia,Cambodia,Phnom Penh,kh1.pointtoserver.com,kh1-ovpn-udp.pointtoserver.com,kh1-ovpn-tcp.pointtoserver.com
-North America,United States,Phoenix,usphx1.pointtoserver.com,usphx1-ovpn-udp.pointtoserver.com,usphx1-ovpn-tcp.pointtoserver.com
-Europe,Montenegro,Podgorica,vleu-me1.pointtoserver.com,vleu-me1-ovpn-udp.pointtoserver.com,vleu-me1-ovpn-tcp.pointtoserver.com
-Africa,Mauritius,Port Louis,mu1.pointtoserver.com,mu1-ovpn-udp.pointtoserver.com,mu1-ovpn-tcp.pointtoserver.com
-Asia,Papua New Guinea,Port Moresby,vlus-pg1.pointtoserver.com,vlus-pg1-ovpn-udp.pointtoserver.com,vlus-pg1-ovpn-tcp.pointtoserver.com
-North America,Trinidad and Tobago,Port of Spain,vleu-tt.pointtoserver.com,vleu-tt-ovpn-udp.pointtoserver.com,vleu-tt-ovpn-tcp.pointtoserver.com
-Europe,Czech Republic,Prague,cz.pointtoserver.com,,
-Africa,Cape Verde,Praia,vleu-cv.pointtoserver.com,vleu-cv-ovpn-udp.pointtoserver.com,vleu-cv-ovpn-tcp.pointtoserver.com
-South America,Ecuador,Quito,ec1.pointtoserver.com,ec1-ovpn-udp.pointtoserver.com,ec1-ovpn-tcp.pointtoserver.com
-Europe,Latvia,RIGA,lv1.pointtoserver.com,lv1-ovpn-udp.pointtoserver.com,lv1-ovpn-tcp.pointtoserver.com
-Africa,Morocco,Rabat,ma1.pointtoserver.com,ma1-ovpn-udp.pointtoserver.com,ma1-ovpn-tcp.pointtoserver.com
-Asia,Myanmar,Rangoon,vlus-mm1.pointtoserver.com,vlus-mm1-ovpn-udp.pointtoserver.com,vlus-mm1-ovpn-tcp.pointtoserver.com
-Europe,Iceland,Reykjavik,is1.pointtoserver.com,is1-ovpn-udp.pointtoserver.com,is1-ovpn-tcp.pointtoserver.com
-South America,British Virgin Islands,Road Town,vg1.pointtoserver.com,vg1-ovpn-udp.pointtoserver.com,vg1-ovpn-tcp.pointtoserver.com
-North America,Dominica,Roseau,vleu-dm.pointtoserver.com,vleu-dm-ovpn-udp.pointtoserver.com,vleu-dm-ovpn-tcp.pointtoserver.com
-Middle East,Oman,Salalah,om1.pointtoserver.com,om1-ovpn-udp.pointtoserver.com,om1-ovpn-tcp.pointtoserver.com
-North America,United States,Salt Lake City,usut.pointtoserver.com,usut-ovpn-udp.pointtoserver.com,usut-ovpn-tcp.pointtoserver.com
-North America,United States,San Francisco,ussf.pointtoserver.com,vlsa-ussf1-ovpn-udp.pointtoserver.com,vlsa-ussf1-ovpn-tcp.pointtoserver.com
-North America,Costa Rica,San Jose,vlus-cr1.pointtoserver.com,vlus-cr1-ovpn-udp.pointtoserver.com,vlus-cr1-ovpn-tcp.pointtoserver.com
-North America,Puerto Rico,San Juan,pr1.pointtoserver.com,pr1-ovpn-udp.pointtoserver.com,pr1-ovpn-tcp.pointtoserver.com
-North America,El Salvador,San Salvador,vleu-sv.pointtoserver.com,vleu-sv-ovpn-udp.pointtoserver.com,vleu-sv-ovpn-tcp.pointtoserver.com
-South America,Chile,Santiago,vlbr-cl.pointtoserver.com,vlbr-cl-ovpn-udp.pointtoserver.com,vlbr-cl-ovpn-tcp.pointtoserver.com
-North America,Dominican Republic,Santo Domingo,vleu-do.pointtoserver.com,vleu-do-ovpn-udp.pointtoserver.com,vleu-do-ovpn-tcp.pointtoserver.com
-South America,Brazil,Sao Paulo,br1.pointtoserver.com,br1-ovpn-udp.pointtoserver.com,br1-ovpn-tcp.pointtoserver.com
-Europe,Bosnia and Herzegovina,Sarajevo,ba1.pointtoserver.com,ba1-ovpn-udp.pointtoserver.com,ba1-ovpn-tcp.pointtoserver.com
-North America,United States,Seattle,ussa.pointtoserver.com,ussa-ovpn-udp.pointtoserver.com,ussa-ovpn-tcp.pointtoserver.com
-Asia,"Korea, South",Seoul,kr1.pointtoserver.com,kr1-ovpn-udp.pointtoserver.com,kr1-ovpn-tcp.pointtoserver.com
-Asia,China,Shanghai,cn-hn1.pointtoserver.com,cn-hn1-ovpn-udp.pointtoserver.com,cn-hn1-ovpn-tcp.pointtoserver.com
-Asia,Singapore,Singapore,sg1.pointtoserver.com.,sg1-ovpn-udp.pointtoserver.com,sg1-ovpn-tcp.pointtoserver.com
-Europe,Malta,Sliema,mt1.pointtoserver.com,mt1-ovpn-udp.pointtoserver.com,mt1-ovpn-tcp.pointtoserver.com
-Europe,Bulgaria,Sofia,bg1.pointtoserver.com,bg1-ovpn-udp.pointtoserver.com,bg1-ovpn-tcp.pointtoserver.com
-North America,Grenada,St George's,vleu-gd.pointtoserver.com,vleu-gd-ovpn-udp.pointtoserver.com,vleu-gd-ovpn-tcp.pointtoserver.com
-Europe,Sweden,Stockholm,se1.pointtoserver.com,se1-ovpn-udp.pointtoserver.com,vlus-se1-ovpn-tcp.pointtoserver.com
-South America,Bolivia,Sucre,vleu-bo.pointtoserver.com,vleu-bo-ovpn-udp.pointtoserver.com,vleu-bo-ovpn-tcp.pointtoserver.com
-Africa,Nigeria,Suleja,ng1.pointtoserver.com,ng1-ovpn-udp.pointtoserver.com,ng1-ovpn-tcp.pointtoserver.com
-Oceania,Australia,Sydney,au-sd1.pointtoserver.com,au-sd1-ovpn-udp.pointtoserver.com,au-sd1-ovpn-tcp.pointtoserver.com
-North America,Honduras,TEGUCIGALPA,vleu-hn.pointtoserver.com,vleu-hn-ovpn-udp.pointtoserver.com,vleu-hn-ovpn-tcp.pointtoserver.com
-Asia,Taiwan,Taipei,vlap-tw1.pointtoserver.com,vlap-tw1-ovpn-udp.pointtoserver.com,vlap-tw1-ovpn-tcp.pointtoserver.com
-Europe,Estonia,Tallinn,ee1.pointtoserver.com,ee1-ovpn-udp.pointtoserver.com,ee1-ovpn-tcp.pointtoserver.com
-Asia,Uzbekistan,Tashkent,vlus-uz1.pointtoserver.com,vlus-uz-ovpn-udp.pointtoserver.com,vlus-uz-ovpn-tcp.pointtoserver.com
-Europe,Georgia,Tbilisi,vlus-ge1.pointtoserver.com,vlus-ge1-ovpn-udp.pointtoserver.com,vlus-ge1-ovpn-tcp.pointtoserver.com
-Europe,Greece,Thessaloniki,gr1.pointtoserver.com,gr1-ovpn-udp.pointtoserver.com,gr1-ovpn-tcp.pointtoserver.com
-Europe,Albania,Tirane,al1.pointtoserver.com,al1-ovpn-udp.pointtoserver.com,al1-ovpn-tcp.pointtoserver.com
-Asia,Japan,Tokyo,jp-tk1.pointtoserver.com,jp-tk1-ovpn-udp.pointtoserver.com,jp-tk1-ovpn-tcp.pointtoserver.com
-North America,Canada,Toronto,cato.pointtoserver.com,cato-ovpn-udp.pointtoserver.com,cato-ovpn-tcp.pointtoserver.com
-Middle East,Lebanon,Tripoli,lb1.pointtoserver.com,lb1-ovpn-udp.pointtoserver.com,lb1-ovpn-tcp.pointtoserver.com
-Africa,Tunisia,Tunis,vlus-tn1.pointtoserver.com,vlus-tn1-ovpn-udp.pointtoserver.com,vlus-tn1-ovpn-tcp.pointtoserver.com
-Asia,Mongolia,Ulaanbaatar,vlus-mn1.pointtoserver.com,vlus-mn1-ovpn-udp.pointtoserver.com,vlus-mn1-ovpn-tcp.pointtoserver.com
-Europe,Liechtenstein,Vaduz,li1.pointtoserver.com,li1-ovpn-udp.pointtoserver.com,li1-ovpn-tcp.pointtoserver.com
-North America,Canada,Vancouver,cav1.pointtoserver.com,cav1-ovpn-udp.pointtoserver.com,cav1-ovpn-tcp.pointtoserver.com
-Africa,Seychelles,Victoria,sc1.pointtoserver.com,sc1-ovpn-udp.pointtoserver.com,sc1-ovpn-tcp.pointtoserver.com
-Europe,Austria,Vienna,at1.pointtoserver.com,at1-ovpn-udp.pointtoserver.com,at1-ovpn-tcp.pointtoserver.com
-Asia,Laos,Vientiane,vlus-la1.pointtoserver.com,vlus-la1-ovpn-udp.pointtoserver.com,vlus-la1-ovpn-tcp.pointtoserver.com
-Europe,Lithuania,Vilnius,lt1.pointtoserver.com,lt1-ovpn-udp.pointtoserver.com,lt1-ovpn-tcp.pointtoserver.com
-Europe,Poland,Warsaw,pl1.pointtoserver.com,pl1-ovpn-udp.pointtoserver.com,pl1-ovpn-tcp.pointtoserver.com
-North America,United States,"Washington, D.C.",uswdc1.pointtoserver.com,uswdc1-ovpn-udp.pointtoserver.com,uswdc1-ovpn-tcp.pointtoserver.com
-Europe,Armenia,Yerevan,vleu-am1.pointtoserver.com,vleu-am1-ovpn-udp.pointtoserver.com,vleu-am1-ovpn-tcp.pointtoserver.com
-Europe,Croatia,Zagreb,vlus-hr1.pointtoserver.com,vlus-hr1-ovpn-udp.pointtoserver.com,vlus-hr1-ovpn-tcp.pointtoserver.com
-Europe,Switzerland,Zurich,ch1.pointtoserver.com,ch1-ovpn-udp.pointtoserver.com,ch1-ovpn-tcp.pointtoserver.com
-North America,Montserrat,plymouth,vleu-ms.pointtoserver.com,vleu-ms-ovpn-udp.pointtoserver.com,vleu-ms-ovpn-tcp.pointtoserver.com
-Asia,Myanmar,Rangoon,vlus-mm1.pointtoserver.com,vlus-mm1-ovpn-udp.pointtoserver.com,vlus-mm1-ovpn-tcp.pointtoserver.com