Files
docker-deluge-openvpn/openvpn/nordvpn/NordVPN_Server_Selector.sh
Tom Humphrey 04b117c521 Update NordVPN.sh
Added NordVPN Variables to docker file

Update start.sh

Update NordVPN.sh

Update NordVPN configs on run

NordVPN was missing server files. Have updated to run the nordvpn updateConfigs.sh script on start

Update NordVPN_Server_Selector.sh

Update start.sh

Moved Selector script to NordVPN directory

Update NordVPN_Server_Selector.sh

Update NordVPN_Server_Selector.sh

Update updateConfigs.sh

Update updateConfigs.sh

Added auto-update of NordVPN

container will auto-update NordVPN files on start. This increases the start up time by a bit. But ensures that all configs are present for the auto-selector script

Create default.ovpn

Update default.ovpn
2019-03-09 21:48:47 +00:00

63 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
country_filter() { # curl -s "https://api.nordvpn.com/v1/servers/countries" | jq --raw-output '.[] | [.code, .name] | @tsv'
local nordvpn_api=$1 country=(${NORDVPN_COUNTRY//[;,]/ })
if [[ ${#country[@]} -ge 1 ]]; then
country=${country[0]//_/ }
local country_id=`curl -s "${nordvpn_api}/v1/servers/countries" | jq --raw-output ".[] |
select( (.name|test(\"^${country}$\";\"i\")) or
(.code|test(\"^${country}$\";\"i\")) ) |
.id" | head -n 1`
if [[ -n ${country_id} ]]; then
echo "Searching for country : ${country} (${country_id})" > /dev/stderr
echo "filters\[country_id\]=${country_id}&"
fi
fi
}
group_filter() { # curl -s "https://api.nordvpn.com/v1/servers/groups" | jq --raw-output '.[] | [.identifier, .title] | @tsv'
local nordvpn_api=$1 category=(${NORDVPN_CATEGORY//[;,]/ })
if [[ ${#category[@]} -ge 1 ]]; then
category=${category[0]//_/ }
local identifier=`curl -s "${nordvpn_api}/v1/servers/groups" | jq --raw-output ".[] |
select( .title | test(\"${category}\";\"i\") ) |
.identifier" | head -n 1`
if [[ -n ${identifier} ]]; then
echo "Searching for group: ${identifier}" > /dev/stderr
echo "filters\[servers_groups\]\[identifier\]=${identifier}&"
fi
fi
}
technology_filter() { # curl -s "https://api.nordvpn.com/v1/technologies" | jq --raw-output '.[] | [.identifier, .name ] | @tsv' | grep openvpn
local identifier
if [[ ${NORDVPN_PROTOCOL,,} =~ .*udp.* ]]; then
identifier="openvpn_udp"
elif [[ ${NORDVPN_PROTOCOL,,} =~ .*tcp.* ]];then
identifier="openvpn_tcp"
fi
if [[ -n ${identifier} ]]; then
echo "Searching for technology: ${identifier}" > /dev/stderr
echo "filters\[servers_technologies\]\[identifier\]=${identifier}&"
fi
}
select_hostname() { #TODO return multiples
local nordvpn_api="https://api.nordvpn.com" \
filters hostname
echo "Selecting the best server..." > /dev/stderr
filters+="$(country_filter ${nordvpn_api})"
filters+="$(group_filter ${nordvpn_api})"
filters+="$(technology_filter )"
hostname=`curl -s "${nordvpn_api}/v1/servers/recommendations?${filters}limit=1" | jq --raw-output ".[].hostname"`
if [[ -z ${hostname} ]]; then
echo "Unable to find a server with the specified parameters, using any recommended server" > /dev/stderr
hostname=`curl -s "${nordvpn_api}/v1/servers/recommendations?limit=1" | jq --raw-output ".[].hostname"`
fi
echo "Best server : ${hostname}" > /dev/stderr
echo ${hostname}
}
# Select recommended VPN
echo "$(select_hostname).${NORDVPN_PROTOCOL,,}"