179 lines
4.2 KiB
Bash
Executable File
179 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
ReadToContinue() {
|
|
echo "Return Taste zum fortfahren..."
|
|
read
|
|
}
|
|
|
|
AddUser() {
|
|
echo -n "Benutzername : "
|
|
read username
|
|
echo -n "IP Adresse : "
|
|
read ip
|
|
echo -n "Passwort : "
|
|
read pwd
|
|
export string_to_hash="${pwd}"
|
|
hash="$(/opt/openvpn/sysoper/hashme.py)"
|
|
echo "${hash}" > /opt/openvpn/users/${username}.pwd
|
|
echo "ifconfig-push ${ip} 255.255.0.0" > /opt/openvpn/ccd/${username}
|
|
echo "User ${username} wurde erzeugt"
|
|
ReadToContinue
|
|
}
|
|
|
|
ChangePassword() {
|
|
echo -n "Benutzername : "
|
|
read username
|
|
if [ -f /opt/openvpn/users/${username}.pwd ]; then
|
|
echo -n "Passwort : "
|
|
read pwd
|
|
export string_to_hash="${pwd}"
|
|
hash="$(/opt/openvpn/sysoper/hashme.py)"
|
|
echo "${hash}" > /opt/openvpn/users/${username}.pwd
|
|
ReadToContinue
|
|
else
|
|
echo "User ${username} existiert nicht"
|
|
ReadToContinue
|
|
fi
|
|
}
|
|
|
|
DeleteUser() {
|
|
echo -n "Benutzername : "
|
|
read username
|
|
if [ -f /opt/openvpn/users/${username}.pwd ]; then
|
|
rm /opt/openvpn/users/${username}.pwd
|
|
echo "User ${username} wurde geloescht"
|
|
# Das CCD-File loeschen wir auch, falls vorhanden
|
|
if [ -f /opt/openvpn/ccd/${username} ]; then
|
|
rm /opt/openvpn/ccd/${username}
|
|
fi
|
|
ReadToContinue
|
|
else
|
|
echo "User ${username} existiert nicht"
|
|
ReadToContinue
|
|
fi
|
|
}
|
|
|
|
ShowUser() {
|
|
echo -n "Benutzername : "
|
|
read username
|
|
ip=""
|
|
if [ -f /opt/openvpn/users/${username}.pwd ]; then
|
|
if [ -f /opt/openvpn/ccd/${username} ]; then
|
|
ip="$(cat /opt/openvpn/ccd/${username} |awk '{print $2}')"
|
|
fi
|
|
echo "User ${username} existiert und hat die IP Adresse ${ip}"
|
|
echo
|
|
echo "Folgendes sind die letzten 20 Logeintraege fuer diesen User:"
|
|
echo
|
|
if [ -f /opt/openvpn/log/${username}.log ]; then
|
|
tail -20 /opt/openvpn/log/${username}.log
|
|
else
|
|
echo "Es existieren keine Logeintraege"
|
|
fi
|
|
ReadToContinue
|
|
else
|
|
echo "User ${username} existiert nicht"
|
|
ReadToContinue
|
|
fi
|
|
}
|
|
|
|
ListUsers() {
|
|
echo
|
|
echo "Username IP Adresse"
|
|
echo "=================================="
|
|
for userfile in $(ls -1 /opt/openvpn/users/*.pwd 2>/dev/null) ; do
|
|
user="${userfile##*/}"
|
|
user="${user%.pwd}"
|
|
ip="N/A"
|
|
if [ -f /opt/openvpn/ccd/${user} ]; then
|
|
ip="$(cat /opt/openvpn/ccd/${user} |awk '{print $2}')"
|
|
fi
|
|
printf "%-20s %-15s\n" "$user" "$ip"
|
|
done
|
|
echo
|
|
ReadToContinue
|
|
}
|
|
|
|
ShowLogfile() {
|
|
echo "Hinweis: mit Taste G zum Ende des Logs gehen..., Space fuer Seitenweises vorwaertsgehen..."
|
|
echo
|
|
ReadToContinue
|
|
/bin/less /opt/openvpn/log/logon.log
|
|
}
|
|
|
|
AdvancedMenu() {
|
|
acharacter=0
|
|
while [ "${acharacter}" != "9" ]; do
|
|
clear
|
|
echo "Advanced Functions"
|
|
echo "=================="
|
|
echo "1 - OpenVPN Dienst stoppen"
|
|
echo "2 - OpenVPN Dienst starten"
|
|
echo "3 - OpenVPN Dienst Statusabfrage"
|
|
echo "4 - Passwort von sysoper aendern"
|
|
echo
|
|
echo "9 - Zurueck zum Hauptmenu"
|
|
echo
|
|
echo -n "Bitte Option waehlen > "
|
|
read acharacter
|
|
case ${acharacter} in
|
|
1) /bin/sudo /bin/systemctl stop myopenvpn
|
|
ReadToContinue
|
|
;;
|
|
2) /bin/sudo /bin/systemctl start myopenvpn
|
|
ReadToContinue
|
|
;;
|
|
3) /bin/sudo /bin/systemctl status myopenvpn
|
|
ReadToContinue
|
|
;;
|
|
4) /bin/passwd sysoper
|
|
;;
|
|
9) echo Zurueck...
|
|
;;
|
|
*) echo "Ungueltige Option..."
|
|
read
|
|
esac
|
|
done
|
|
}
|
|
|
|
character=0
|
|
while [ "${character}" != "9" ]; do
|
|
clear
|
|
echo "Userverwaltung OpenVPN"
|
|
echo "======================"
|
|
echo "1 - OpenVPN Benutzer hinzufuegen"
|
|
echo "2 - OpenVPN Benutzer Passwort setzen"
|
|
echo "3 - OpenVPN Benutzer entfernen"
|
|
echo "4 - OpenVPN Benutzer anzeigen"
|
|
echo "5 - OpenVPN Benutzer auflisten"
|
|
echo
|
|
echo "7 - Logfile anzeigen"
|
|
echo "8 - Advanced Functions"
|
|
echo
|
|
echo "9 - Exit"
|
|
echo
|
|
echo -n "Bitte Option waehlen > "
|
|
read character
|
|
case ${character} in
|
|
1) AddUser
|
|
;;
|
|
2) ChangePassword
|
|
;;
|
|
3) DeleteUser
|
|
;;
|
|
4) ShowUser
|
|
;;
|
|
5) ListUsers
|
|
;;
|
|
7) ShowLogfile
|
|
;;
|
|
8) AdvancedMenu
|
|
;;
|
|
9) echo Exit...
|
|
;;
|
|
*) echo "Ungueltige Option..."
|
|
read
|
|
esac
|
|
done
|
|
exit 0
|