#!/bin/sh
#########################################################
# Dies ist ein bash script mit kdialog-Aufrufen.
# Er soll das Installieren und Benutzen von
# CISCO-VPN-Clients (auf der Uni-Saarland) erleichtern.
# Für Schäden und mögliche Sicherheitsprobleme
# übernehme ich keine Haftung.
# user- und pwd-Angaben sollten im Normalfall in der
# bash_history nicht zu sehen sein, nur der Skriptaufruf.
#########################################################
OLDPATH=$PATH
KDIALOG=`/usr/bin/which kdialog`;
KONSOLE=`/usr/bin/which konsole`;
SU=`/usr/bin/which su`;
if !(test -e $KDIALOG || test -x $KDIALOG) 
then
	$KONSOLE --noclose -e echo "Ich kann den kdialog in $PATH nicht finden. Installiere zuerst den kdialog!"
	exit 1
	
fi

#Profil kopieren
function profil_installieren(){
$KDIALOG --title "$0: Profil erstellen" --msgbox "Jetzt wir ein Profil erstellt. Lade dazu das entsprechende Profil (world oder unisb) von http://www.rz.uni-saarland.de/services/netz/vpn/ und zeige auf diese Profil-Datei."
LOCALPROFILE=`$KDIALOG --getopenfilename ~/ "*.pcf"`
echo $LOCALPROFILE
PROFILENAME=`$KDIALOG --title "$0: Name für Profil" --inputbox "Welchen Namen soll ich dem Profil $LOCALPROFILE geben?"`
PROFILENAME=`echo ${PROFILENAME// /_}`
PROFILENAME=`echo ${PROFILENAME//.pcf/}`
PROFILENAME=`echo ${PROFILENAME//$/}`
PROFILEPATH="/etc/opt/cisco-vpnclient/Profiles/$PROFILENAME.pcf"
if /bin/cp $LOCALPROFILE $PROFILEPATH
then
	REPORT="$REPORT
DieProfil-Datei '$LOCALPROFILE' nach '$PROFILEPATH' kopiert.
--->
Profil-Instalation ebenfalls erfolgreich.
"
fi
$KDIALOG --title "$0: Profil auswählen" --msgbox "Ab jetzt kannst Du ein Profil aus einer Liste von Profilen auswählen. Eventuell vorkommende Leerzeichen im eingegebenen Profil-Namen wurden durch unterstrich (_) erstetzt.";
}

case "$1" in
  install)
REPORT="Instalation mit dem $0 Skript verlief wie folgt:
"
#Nachrich zur Instalation
$KDIALOG --title "$0: Datei mit vpnclient für Linux erforderlich" --msgbox "Zeige auf die Datei mit dem VPN-client für Linux, die Du vom ftp://ftp.rz.uni-saarland.de/pub/Local/VPN/ heruntergeladen hast.\n
Sie lautet in etwa: vpnclient-linux-nummern.tar.gz. zB: vpnclient-linux-4.6.00.0045-k9.tar.gz"
#vpnclient-linux-xxx.tag.gz öffnen
VPNCLIENTFILE=`$KDIALOG --title "Zeige auf heruntergeladene vpnclient-linux-XXX.tar.gz" --getopenfilename ~/ "*.tar.gz"`;
#echo $VPNCLIENTFILE;
REPORT="$REPORT
VPN-Client-Datei lautete: $VPNCLIENTFILE.
"
VPNCLIENTTMP="./vpnclient.tar.gz"
/bin/cp $VPNCLIENTFILE $VPNCLIENTTMP
REPORT="$REPORT
$VPNCLIENTFILE wurde als vpnclient.tar.gz nach $PWD kopiert.
"
/bin/tar xzf $VPNCLIENTTMP
/bin/rm $VPNCLIENTTMP
REPORT="$REPORT
vpnclient.tar.gz wurde als Verzeichnis vpnclient entpackt und vpnclient.tar.gz anschließend gelöscht
"
#INFO instalation
$KDIALOG --title "$0: Root-Rechte erforderlich" --msgbox "Jetzt wirst Du in der Konsole das root-Passwort eingeben müssen, damit der VPN-client kompiliert und gestartet werden kann. Das temporäre Verzeichnis wird später automatisch gelöscht.\n
Im Normalfall (wenn die passenden kernel-Quellen installiert sind) brauchst Du nach der Passworteingabe nur ENTER zu drücken.";
echo '---------ab hier su root----------'
if /bin/su root 'cd ./vpnclient && ./vpn_install && cd ../ &&  /bin/chmod -R 777 vpnclient && /etc/init.d/vpnclient_init start'
then
	REPORT="$REPORT
Die Anmeldung als root und Kompilation des VPN-Clients sowie anschließender Start von '/etc/init.d/vpnclient_init start' 
scheint ohne Fehler verlaufen zu sein."
fi
echo '---------su beendet---------------'
if /bin/rm -r vpnclient
then
	REPORT="$REPORT
Verzeichnis vpnclient wurde gelöscht.
"
fi
PATH=/opt/cisco-vpnclient/bin/
export PATH
VPNCLIENT=`/usr/bin/which vpnclient`
if (test -e $VPNCLIENT && test -x $VPNCLIENT)
then
	$KDIALOG --msgbox "Instalation erfolgreich verlaufen!"
fi
if !(test -e $VPNCLIENT && test -x $VPNCLIENT)
then
	$KDIALOG --msgbox "Instalation mißlungen!"
	exit 1;
fi
PATH=$OLDPATH
export PATH
REPORT="$REPORT
Die ausführbare Datei vpnclient findest Du unter: $VPNCLIENT.
--->
Die Instalation schien erfolgreich verlaufen zu sein.
"
profil_installieren
echo $REPORT > ./vpn-instalation.log
$KDIALOG --textbox ./vpn-instalation.log 600 300
;;
esac

case "$1" in
 add-profile)
 profil_installieren
 ;;
esac

case "$1" in
 '-h'|'--help')
 echo "******************
Instalation erfolg mit Aufruf '$0 install'"
 echo "Das Hinzufügen von Profilen wird mit '$0 add-profile' und während der Instalation erledigt."
 echo "Zum Benutzen/Einloggen recht der Aufruf: '$0'."
 echo "Viel Spaß damit!"
 echo "---Robert---
******************"
 exit 0
 ;;
esac
PATH=/opt/cisco-vpnclient/bin
export PATH
VPNCLIENT=`/usr/bin/which vpnclient`
echo $VPNCLIENT;
if !(test -e $VPNCLIENT && test -x $VPNCLIENT)
then
	$KDIALOG --msgbox "Ich kann den VPN-Client in $PATH nicht finden! Installieren Sie diesen zuerst indem Du ' install' an das Ende des skriptes anhängst!"
	exit 1
fi
PATH=$OLDPATH
export PATH
VPN_MODULE=`lsmod | grep -c cisco_ipsec`
if [ "$VPN_MODULE" == "0" ]
then
	
	if(VNP_INIT_START= $KDIALOG --title "VPN-dienst läuft nicht" --warningyesno "Der Cisco VPN_INIT läuft nicht. \nSoll ich ihn starten?
	Du brauchst root-rechte!")
	then
		`$KONSOLE -e $SU root /etc/init.d/vpnclient_init start`
		echo 'installiert'
	else
		`$KDIALOG --sorry "Ohne VPN-Dienst kann keine VPN-Verbindung gestartet werden.
		Bitte root um das (automatische) Starten des VPN-Dienstes!"`
		exit 1
	fi
	
fi
LISTE=`/bin/ls /etc/opt/cisco-vpnclient/Profiles/`
LISTE=($LISTE)
i=0
LIMIT=${#LISTE[*]}
#echo $LIMIT
VPNPROFILE=""
while [ "$i" -lt "$LIMIT" ]
do
	VPNPROFILE="$VPNPROFILE ${LISTE[$i]}"
	i=$((i+1))
done
VPNPROFILE=`echo ${VPNPROFILE//.pcf/}`
#echo $VPNPROFILE
PROFILENAME=`$KDIALOG --combobox "Profil wählen" $VPNPROFILE`
#PROFILENAME=`$KDIALOG --title "$0: Profilname" --inputbox "Welchen Profil soll ich nutzen?"`
VPNUSER=`$KDIALOG --title "$0: Benutzername" --inputbox "Geben Sie die Benutzerkennung für das Profil $PROFILENAME:"`
VPNPWD=`$KDIALOG --title "$0: Passwort" --password "Geben Sie das Passwort für den Benutzer $VPNUSER ein"`
$VPNCLIENT connect $PROFILENAME user $VPNUSER pwd $VPNPWD &
if ($KDIALOG --title "Verbindung mit VPN-Server" --yesno "Verbindung zum Server wurde gestartet. \nMit 'Ja' beendest Du die Verbindung sofort. \nMit 'Nein' läßt du die Verbindung weiterhin bestehen und kannst sie mit 'vpnclient disconnect' beenden.\nWillst du die Verbindung jetzt beenden? ")
then
	`$VPNCLIENT disconnect`
fi

#$VPNCLIENT connect $PROFILENAME user $VPNUSER pwd $VPNPWD
echo '*******************
Sicherheitshinweis!
user- und pwd-Angaben sollten im Normalfall in der
bash_history nicht zu sehen sein, nur der Skriptaufruf.
'
exit 0