heads/yokai-openvpn-launcher

92 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
SCRIPT=$0
function run_yokai_openvpn() {
openvpn --up '/usr/bin/zenity --notification --text "OpenVPN connection established and running."' --down '/usr/bin/zenity --notification --text "OpenVPN connection closed!"' --config /etc/openvpn/client.conf
zenity --question --text 'OpenVPN client process exited, do you want to reconnect?'
if [ "$?" -ne 0 ]; then
exit 0
fi
# user said "yes", get on with it (again)
$SCRIPT
}
# CA file selection
while true; do
echo 'Asking for CA file.'
CA_CERT=`zenity --file-selection --title="Select an OpenVPN CA certificate"`
case $? in
0)
echo "CA file \"$CA_CERT\" selected."
break
;;
1)
echo 'User cancelled while selecting CA file'
zenity --warning --text 'Please select a CA certificate file.'
;;
-1)
echo 'An error occured during CA certificate file selection.'
zenity --error --text 'An unexpected error has occured during CA certificate file selection.'
exit 1
;;
esac
done
# copy CA file to a place specified in /etc/openvpn/client.conf
cp $CA_CERT /etc/openvpn/ca.crt
# hostname, port number, credentials
HOST_NAME=`zenity --entry --title 'Enter hostname' --text 'Please enter OpenVPN server hostname'`
HOST_PORT=`zenity --entry --title 'Enter port number' --text 'Please enter OpenVPN server port number'`
CRED_USER=`zenity --entry --title 'Enter username' --text 'Please enter your OpenVPN username'`
CRED_PASS=`zenity --entry --hide-text --title 'Enter password' --text 'Please enter your OpenVPN password'`
#ENTRY=`zenity --password --username`
#CRED_USER=`echo $ENTRY | cut -d'|' -f1`
#CRED_PASS=`echo $ENTRY | cut -d'|' -f2`
# Note: Replaced by the above because of old Zenity version in Tails
#while true; do
# ENTRY=`zenity --forms --title 'OpenVPN server details' --text 'Please enter OpenVPN server details.' --add-entry 'Hostname' --add-entry 'Port' --add-entry 'Username' --add-password 'Password'`
# case $? in
# 0)
# HOST_NAME=`echo $ENTRY | cut -d'|' -f1`
# HOST_PORT=`echo $ENTRY | cut -d'|' -f2`
# CRED_USER=`echo $ENTRY | cut -d'|' -f3`
# CRED_PASS=`echo $ENTRY | cut -d'|' -f4`
# # TODO: simple validity checks (port number, empty strings)
# break
# ;;
# 1)
# echo 'User cancelled while entering OpenVPN server data'
# zenity --warning --text='You must enter OpenVPN server credentials in order to connect to the Net.'
# ;;
# -1)
# echo 'An error occured during credentials input.'
# zenity --error --text 'An unexpected error has occured during credentials input.'
# exit 1
# ;;
# esac
#done
# replace 'remote' line in /etc/openvpn/client.conf
echo "== remote $HOST_NAME $HOST_PORT"
sed -i "s/remote .*/remote $HOST_NAME $HOST_PORT/g" /etc/openvpn/client.conf
# fill in /etc/openvpn/credentials file
echo $CRED_USER > /etc/openvpn/credentials
echo $CRED_PASS >> /etc/openvpn/credentials
openvpn /etc/openvpn/client.conf
zenity --question --text 'OpenVPN client process exited, do you want to reconnect?'
if [ "$?" -ne 0 ]; then
exit 0
fi
run_yokai_openvpn &