configuration form the arch linux stored
This commit is contained in:
169
rofi/scripts/nordvpn.sh
Executable file
169
rofi/scripts/nordvpn.sh
Executable file
@@ -0,0 +1,169 @@
|
||||
#!/bin/sh
|
||||
# __ _ _
|
||||
# _ __ ___ / _(_) _ __ ___ _ __ __| |_ ___ __ _ __
|
||||
# | '__/ _ \| |_| |_____| '_ \ / _ \| '__/ _` \ \ / / '_ \| '_ \
|
||||
# | | | (_) | _| |_____| | | | (_) | | | (_| |\ V /| |_) | | | |
|
||||
# |_| \___/|_| |_| |_| |_|\___/|_| \__,_| \_/ | .__/|_| |_|
|
||||
# |_|
|
||||
|
||||
# exit when any command fails
|
||||
set -e
|
||||
|
||||
echoexit() {
|
||||
# Print to stderr and exit
|
||||
printf "%s\n" "$@" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Checking dependencies:
|
||||
whereis nordvpn > /dev/null || echoexit "'nordvpn' not found."
|
||||
|
||||
menu() {
|
||||
# Menu command, should read from stdin and write to stdout.
|
||||
|
||||
rofi -dmenu -i -p "Select" -no-custom
|
||||
}
|
||||
|
||||
usage() {
|
||||
printf "Dynamic menu interface for nordvpn.
|
||||
Usage:
|
||||
rofi-nordvpn [-h] [-s LABEL]
|
||||
-h Display this help message.
|
||||
-s Display current vpn status, useful for status bars.
|
||||
"
|
||||
}
|
||||
|
||||
init_menu() {
|
||||
# Initial menu.
|
||||
|
||||
local choices
|
||||
choices="connect\ndisconnect\nstatus\nsettings"
|
||||
printf "%b" "$choices" | menu
|
||||
}
|
||||
|
||||
connect() {
|
||||
# nordvpn connect options.
|
||||
|
||||
local choices
|
||||
choices="default\ncountries\ncities\np2p\nonion"
|
||||
printf "%b" "$choices" | menu
|
||||
}
|
||||
|
||||
countries() {
|
||||
# Country selection.
|
||||
|
||||
local choices
|
||||
choices="$(nordvpn countries | tr -d '\r,-' | tr -s "[:blank:]" "\n" | sed '/^\s*$/d' | sort)"
|
||||
printf "%s" "$choices" | menu
|
||||
}
|
||||
|
||||
cities() {
|
||||
# City selection.
|
||||
|
||||
local choices
|
||||
choices="$(nordvpn cities "$1" | tr -d '\r,-' | tr -s "[:blank:]" "\n" | sed '/^\s*$/d' | sort)"
|
||||
printf "%s" "$choices" | menu
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
# disconnect
|
||||
|
||||
nordvpn disconnect
|
||||
}
|
||||
|
||||
status() {
|
||||
# Echo the status.
|
||||
|
||||
local status
|
||||
status="$(nordvpn status | tr -d '\r -')"
|
||||
if [ -n "${status##*Connected*}" ]; then
|
||||
printf "Off"
|
||||
else
|
||||
printf "%s" "$(printf "%s" "$status" | grep "City" | cut -d ":" -f 2)"
|
||||
fi
|
||||
}
|
||||
|
||||
vpn_status() {
|
||||
# Show vpn status.
|
||||
|
||||
local choices
|
||||
choices="$(nordvpn status | tr -d '\r-' | sed 's/^ *//')"
|
||||
printf "%s" "$choices" | menu
|
||||
}
|
||||
|
||||
settings() {
|
||||
# Show vpn settings.
|
||||
|
||||
local choices
|
||||
choices="$(nordvpn settings | tr -d '\r-' | sed 's/^ *//')"
|
||||
printf "%s" "$choices" | menu
|
||||
}
|
||||
|
||||
# Parse options to the `rofi-nordvpn` command
|
||||
while getopts ":hs" opt; do
|
||||
case ${opt} in
|
||||
h )
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
s )
|
||||
status
|
||||
exit 0
|
||||
;;
|
||||
\? )
|
||||
printf "Invalid Option: -%s\n" "$OPTARG" 1>&2
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
case "$(init_menu)" in
|
||||
"connect")
|
||||
case $(connect) in
|
||||
"default")
|
||||
nordvpn connect
|
||||
;;
|
||||
"countries")
|
||||
country="$(countries)"
|
||||
[ -n "$country" ] && nordvpn connect "$country"
|
||||
;;
|
||||
"cities")
|
||||
country="$(countries)"
|
||||
[ -n "$country" ] && city="$(cities "$country")"
|
||||
[ -n "$city" ] && nordvpn connect "$country" "$city"
|
||||
;;
|
||||
"p2p")
|
||||
nordvpn connect p2p
|
||||
;;
|
||||
"onion")
|
||||
nordvpn connect onion_over_vpn
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"disconnect")
|
||||
disconnect
|
||||
;;
|
||||
"status")
|
||||
vpn_status
|
||||
;;
|
||||
"settings")
|
||||
settings
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
© 2021 GitHub, Inc.
|
||||
Terms
|
||||
Privacy
|
||||
Security
|
||||
Status
|
||||
Docs
|
||||
Contact GitHub
|
||||
Pricing
|
||||
API
|
||||
Training
|
||||
Blog
|
||||
About
|
||||
Reference in New Issue
Block a user