automatic mailbot initiated

This commit is contained in:
io 2005-01-22 23:11:54 +00:00
parent 325ef9927e
commit 9c0b851de4
5 changed files with 133 additions and 0 deletions

42
mailbot/bin/bot-manager.sh Executable file
View 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
View 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
View 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"

View file

@ -0,0 +1 @@
1: keine Parameter angegeben!

64
mailbot/struktur.txt Normal file
View 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)