automatic mailbot initiated
This commit is contained in:
parent
325ef9927e
commit
9c0b851de4
5 changed files with 133 additions and 0 deletions
42
mailbot/bin/bot-manager.sh
Executable file
42
mailbot/bin/bot-manager.sh
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
CONFIG_FILE="/etc/mailbot.conf"
|
||||||
|
|
||||||
|
# initialization
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -u
|
||||||
|
|
||||||
|
if which "$0" | grep -q "^/"
|
||||||
|
then BIN_DIR="`dirname '$0'`"
|
||||||
|
else BIN_DIR="`dirname \"\`pwd\`/$0\"`"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# load configuration
|
||||||
|
[ ! -e "$CONFIG_FILE" ] && echo "error: configuration file ($CONFIG_FILE) is not available" >&2 && exit 255
|
||||||
|
. "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# load public functions
|
||||||
|
FUNCTIONS_FILE="$BIN_DIR/functions.sh"
|
||||||
|
[ ! -e "$FUNCTIONS_FILE" ] && echo "error: include file ($FUNCTIONS_FILE) is not available" >&2 && exit 254
|
||||||
|
. "$FUNCTIONS_FILE"
|
||||||
|
|
||||||
|
############ main ##############
|
||||||
|
|
||||||
|
[ $# -ne 1 ] && error_msg 1
|
||||||
|
ACTION="$1"
|
||||||
|
|
||||||
|
case "$ACTION" in
|
||||||
|
request)
|
||||||
|
echo request
|
||||||
|
;;
|
||||||
|
auth)
|
||||||
|
echo request
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
echo "syntax: $0 { request | auth | help }"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error 2 "$ACTION"
|
||||||
|
;;
|
||||||
|
esac
|
15
mailbot/bin/functions.sh
Normal file
15
mailbot/bin/functions.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
error_msg()
|
||||||
|
# print the according error message and exit
|
||||||
|
# error messages are take from etc/error-messages.txt
|
||||||
|
# params:
|
||||||
|
# NUM - error number
|
||||||
|
# ERROR_INFO - additional information
|
||||||
|
{
|
||||||
|
NUM="$1"; shift
|
||||||
|
SUBST="$*"
|
||||||
|
sed -rn "/^$NUM:/p; s/^$NUM:[:spaces:]*//; s/_INFO_/$SUBST/" "$ERR_MSG_FILE"
|
||||||
|
# extract lines, that are prefixed with "NUM:", remove this part and replace _INFO_ by ERROR_INFO
|
||||||
|
exit "$NUM"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
11
mailbot/etc/mailbot.conf
Normal file
11
mailbot/etc/mailbot.conf
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
ROOT_DIR="`dirname \"$BIN_DIR\"`"
|
||||||
|
|
||||||
|
LANGUAGE=de
|
||||||
|
LANGUAGE_ROOT="$ROOT_DIR/lang"
|
||||||
|
|
||||||
|
MODULES_DIR="$ROOT_DIR/modules"
|
||||||
|
|
||||||
|
REQUEST_DIR="$ROOT_DIR/requests"
|
||||||
|
|
||||||
|
ERR_MSG_FILE="$LANGUAGE_ROOT/$LANGUAGE/errors.txt"
|
||||||
|
MSG_FILE="$LANGUAGE_ROOT/$LANGUAGE/messages.txt"
|
1
mailbot/lang/de/errors.txt
Normal file
1
mailbot/lang/de/errors.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1: keine Parameter angegeben!
|
64
mailbot/struktur.txt
Normal file
64
mailbot/struktur.txt
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
Worum geht es: ein Mensch moechte etwas tun, was der Authorisierung durch einen anderen Menschen bedarf - ueber einen email-bot wird dem Anfragenden eine Zugangsinformation mitgeteilt, sofern der Moderator zustimmt.
|
||||||
|
|
||||||
|
1) Vorraussetzungen:
|
||||||
|
- ein Mensch (R) moechte etwas tun (z.B. einen mail-account anlegen)
|
||||||
|
- ein anderer Mensch (M) hat das Recht, diese Taten zu authorisieren
|
||||||
|
- M und R wollen/koennen sich nicht physisch treffen
|
||||||
|
- M kennt eine Mailadresse von R - er vertraut darauf, dass nur R Zugriff darauf hat
|
||||||
|
|
||||||
|
2) Vorgang:
|
||||||
|
- R sendet eine Anfrage an eine bekannte Mailadresse
|
||||||
|
- ein Bot reagiert auf diese Mail indem er sie gefiltert an M weiterschickt
|
||||||
|
- M kann die Anforderung durch eine Antwort an den Bot bestaetigen, ablehnen oder ignorieren (=ablehnen)
|
||||||
|
- Alternative: die Zusage von M loest die gewuenschte Aktion aus - R erhaelt eine Infomail
|
||||||
|
|
||||||
|
3) Struktur:
|
||||||
|
|
||||||
|
3.1) Plugins
|
||||||
|
3.1.1) htaccess befristet gewaehren
|
||||||
|
somit kann eine bestimmte Aktion vom Nutzer innerhalb eines gewissen Zeitraums ausgefuehrt werden
|
||||||
|
|
||||||
|
3.2) Datenbank
|
||||||
|
- Modulname
|
||||||
|
- Datum
|
||||||
|
- Quellmail
|
||||||
|
- Message-ID
|
||||||
|
- infos
|
||||||
|
|
||||||
|
3.3) request-bot
|
||||||
|
- empfaengt Anfrage und entscheidet, welchem Modul die Information zu uebergeben ist
|
||||||
|
- das Modul liefert Informationen zum weiteren Vorgehen zurueck
|
||||||
|
-- Anfrage nicht speichern: Aktion wurde bereits ausgefuehrt (weil sie keine Bestaetigung erfordert) oder sie wurde verweigert
|
||||||
|
-- Anfrage speichern: Info an den Moderator und Datenbankeintrag erzeugen
|
||||||
|
- auf jeden Fall eine Infomail an Anfragenden senden
|
||||||
|
|
||||||
|
3.4) auth-bot
|
||||||
|
- empfaengt Zustimmung/Ablehnung vom Moderator
|
||||||
|
- verifiziert eventuell die Moderator-Mail (gpg)
|
||||||
|
- Modul wird aufgerufen - dieses liefert einen passenden Mailtext zurueck
|
||||||
|
- Datenbank-Eintrag loeschen
|
||||||
|
|
||||||
|
5.4) Modul
|
||||||
|
- liefert folgendes zurueck:
|
||||||
|
-- Anfrage speichern:
|
||||||
|
--- exitcode 0
|
||||||
|
--- request-id
|
||||||
|
--- Adresse des Moderators
|
||||||
|
--- Betreffzeile fuer Moderator
|
||||||
|
--- Betreffzeile fuer Anfrager
|
||||||
|
--- Anfrage-Infos fuer Datenbank
|
||||||
|
--- Mailinhalt fuer Moderator (out3)
|
||||||
|
--- Mailinhalt fuer Anfrager (out4)
|
||||||
|
-- Anfrage nicht speichern:
|
||||||
|
--- exitcode 1
|
||||||
|
--- Betreffzeile
|
||||||
|
--- Text fuer Anfrager
|
||||||
|
- Interface:
|
||||||
|
-- request Informationen
|
||||||
|
-- auth request-id
|
||||||
|
|
||||||
|
|
||||||
|
Mail-Reply:
|
||||||
|
eigene ID: Message-ID
|
||||||
|
bezugs-id: In-Reply-To (optional)
|
||||||
|
Referenzen: References (die letzte ist die bezugs-id, falls diese fehlt)
|
Loading…
Reference in a new issue