#!/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 &