System: Debian 11/KVM KH aktuell
Um nicht unnötig am CLI arbeiten zu müssen, hab ich alles in ein Shellscript gepackt. Es ist vllt nicht das schönste Script, aber es funktioniert:
Code: Select all
#!/bin/bash
#
# Basis: Keyhelp mit standardmäßiger Roundcube Installation
# Zweck: Einpflegen benutzerdefinierter Roundcube Plugins, da
# solche Plugins (aktuell) nicht updatefest sind
# Hinweis: Die verwendeten Plugins müssen im Keyhelp Panel unter
# Konfiguration >> Webmail >> Plugins eingetragen sein
#
#
workdir="/usr/src/workdir";
#
# 2FA-Plugin
# ----------
#
# Quelle: https://github.com/alexandregz/twofactor_gauthenticator
#
plugindir="/home/keyhelp/www/roundcube/plugins/twofactor_gauthenticator";
if ! [ -d "$plugindir" ]; then
if [ -d "$workdir" ]; then
rm -r $workdir;
mkdir $workdir;
cd $workdir;
fi
wget https://github.com/alexandregz/twofactor_gauthenticator/archive/refs/heads/master.zip
rc="$?"
if [ "$rc" == 0 ]; then
unzip master.zip
mv twofactor_gauthenticator-master $plugindir
chown -R keyhelp:keyhelp $plugindir
find $plugindir \( -type d -exec chmod 755 {} + \) -o \( -type f -exec chmod 644 {} + \)
else
echo "wget Error: $rc" | mailx -s CronError_rc_plugins hostmaster@domain.tld
fi
fi
Das Script prüft beim Aufruf, ob das Verzeichnis mit dem Plugin im Roundcube Pluginordner vorhanden ist. Wird das Verzeichnis nicht gefunden, wird das Plugin von Github heruntergeladen, an die richtige Stelle kopiert und die Eigentümer- und Zugriffsrechte korrekt gesetzt.
Dieses Vorgehen ist nötig, da Keyhelp beim Update von Roundcube den Pluginordner neu schreibt.
Falls ich was vergessen haben sollte oder jemand Verbesserungs-/Optimierungsbedarf sieht, arbeite ich das gern noch ein.
Achja: Ich hab das Plugin natürlich getestet, zumindest bei mir und zwei weiteren Systemen tut es das, was es soll (Getestet mit dem G**gle Authentifikator).
BTW:
Perfekt wäre es natürlich, wenn das 2FA Plugin standardmäßig in Keyhelp Roundcube integriert werden könnte...Der Mehrwert bei der Sicherheit dürfte den zusätzlichen Aufwand bestimmt wert sein...
Edit:
Ich hab im Script noch eine Returncode Prüfung für den wget Befehl eingebaut. Im Fehlerfall schickt das Script eine Mail raus, Mailadresse muß natürlich noch angepaßt werden. Um mailx verwenden zu können, muß vorher das Paket mailutils installiert sein (apt install mailutils).