#!/bin/bash 

echo "Config-Installationsprogramm für SchulVPN"

if [ $USER != "root" ];
then 
echo Root-Rechte benoetigt!
read
exit 0
fi


echo "Geben Sie das Standard-Wireless Interface ein: "
read WLAN
echo "Geben Sie die ESSID an, bei dem OpenVPN nicht verbinden soll: "
read NOVPNESSID
echo "Geben Sie das Interface an, bei dem OpvenVPN nicht verbinden soll: "
read NOVPNINT

mkdir $HOME/.vpn
mkdir $HOME/.vpn/keys

##------------------------------------------------------------------------------
#/etc/NetworkManager/dispatcher.d/02vpn
##------------------------------------------------------------------------------
echo "#!/bin/bash

INTERFACE=\$1
ACTION=\$2

ESSID=\$(iwconfig "$WLAN" | grep ESSID | cut -d':' -f2 | sed -e 's/Nickname//g' | sed -e 's/\"//g'| sed -e 's/ //g') 

echo '\$ESSID + \$INTERFACE + \$ACTION' >> /var/log/vpnscript.log

case \$ACTION in
        up)
                if [ \$ESSID     != \""$NOVPNESSID"\"      ]; then
		if [ \$INTERFACE !=  \""$NOVPNINT"\"  ]; then
			echo 'starte script' >> /var/log/vpnscript.log

                        "$HOME"/.vpn/scriptconn.sh				
		fi
                fi
                ;;

        down)
                if [ '\$(pidof openvpn)' ]; then
			echo 'killall openvpn' >> /var/log/vpnscript.log
                        killall openvpn
                fi
                ;;

        pre-up)
                ;;

        post-down)
                ;;

        *)
                echo $'Usage: \$0 {up|down|pre-up|post-down}'
		echo 'finish' >> /var/log/vpnscript.log
                exit 1
esac
" > /etc/NetworkManager/dispatcher.d/02vpn
chown root:root /etc/NetworkManager/dispatcher.d/02vpn
chmod +x /etc/NetworkManager/dispatcher.d/02vpn

##------------------------------------------------------------------------------
#~/.vpn/scriptconn.sh
##------------------------------------------------------------------------------

echo "#!/bin/bash

echo 'Starte Openvpn' >> /var/log/vpnscript.log
openvpn --config "$HOME"/.vpn/schulvpn.ovpn &

#sudo -u "$USER" kdialog --title 'OpenVPN' --passivepopup 'OpenVPN - Verbindung wird hergestellt!' 4 --display :0

#echo 'Dialog angezeit - fin' >> /var/log/vpnscript.log
exit 0
" > $HOME/.vpn/scriptconn.sh
##------------------------------------------------------------------------------
#~/.vpn/scriptstate.sh
##------------------------------------------------------------------------------

echo "#!/bin/bash

BENUTZER=$(cat /etc/passwd |grep 1000 |cut -d ':' -f1)

if [ $1 = 'connected' ]
    then sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'OpenVPN - Verbunden!' 4 --display :0
  elif [ $1 = 'disconnected' ]
    then sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'OpenVPN - Verbindung getrennt!' 4 --display :0
  else
    echo 'fail'
echo 'scriptconn started' >> /var/log/vpnlog.log
fi

exit 0
" > $HOME/.vpn/scriptstate.sh

##------------------------------------------------------------------------------
#CertCopy
##------------------------------------------------------------------------------

cert=$(ls *.key |cut -d "." -f1 |cut -d "/" -f3)
#cert=$(echo $cert | cut -d " " -f1)

controll="0"

if [ -z "$cert" ];
then
echo "Es wurde kein Zertifikat gefunden"
controll="1"
else
echo "Es wurde ein Zertifikat gefunden: "$cert".key"

cp $cert.key $HOME/.vpn/keys/$cert.key
cp $cert.crt $HOME/.vpn/keys/$cert.crt
cp    ca.crt $HOME/.vpn/keys/ca.crt
fi

if [ $controll == "0" ]
then

test -e "$HOME/.vpn/keys/$cert.crt" 
if [ 1 == $? ];
then 
echo $cert.crt nicht richtig kopiert
controll="1"
fi


test -e "$HOME/.vpn/keys/$cert.key" 
if [ 1 == $? ];
then
echo $cert.key nicht richtig kopiert
controll="1"
fi


test -e "$HOME/.vpn/keys/ca.crt" 
if [ 1 == $? ];
then  
echo ca.crt nicht richtig kopiert
controll="1"
fi


if [ 0 == $controll ];
then
echo "#Konfiguriert by Christoph Haas
#Copyleft CyberLabs 2008-09
#Veraendern auf EIGENE GEFAHR... 

#Start

##########################################################
# AENDERUNGEN START
##########################################################
#Zertifikate
ca "$HOME"/.vpn/keys/ca.crt
cert "$HOME"/.vpn/keys/"$cert".crt
key "$HOME"/.vpn/keys/"$cert".key

##########################################################
# AENDERUNGEN ENDE
#########################################################
#Modus
client

#IP Modus
float

#Tunnel Modus/Device
dev tap

#MTU laenge 
tun-mtu 1500

#probleme mit windoof clients verhindern
;fragment 1500 #udp only
mssfix

#LAN Adapter Name (optional^^)
;dev-node my-tap

#Protokoll fuern Tunnel (in da schule tcp)
proto tcp-client

#Pushs vom Server abarbeiten
pull

#Server IP / PORT
remote 10.10.63.60 1194

#Server COMMON Name
#tls-remote VPNServer

#Authentifizierung/Encryption
;auth SHA1           
cipher aes-256-cbc  

#Adress bind verhindern
nobind

#Komprimierung
comp-lzo

#LINUX/UNIX only
;persist-key 
;persist-tun

script-security 2

# eventuelle kde4 integration
;route-up '"$HOME"/.vpn/scriptstate.sh connected'
;down '"$HOME"/.vpn/scriptstate.sh disconnected'

#Ende
" > $HOME/.vpn/schulvpn.ovpn
chmod +x $HOME/.vpn/*
echo SchulVPN ist jetzt verwendbar!
read
exit 0
else
echo "Überprüfen Sie, ob das zip paket richtig entpackt wurde!"
echo "Führen Sie anschließend das Setup nocheinmal aus!"
read
exit 1
fi
fi
