92 lines
3.0 KiB
Bash
Executable File
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 &
|