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