From 9c0b851de4af486cabe51689454a406b6a6e360c Mon Sep 17 00:00:00 2001 From: io <> Date: Sat, 22 Jan 2005 23:11:54 +0000 Subject: [PATCH] automatic mailbot initiated --- mailbot/bin/bot-manager.sh | 42 +++++++++++++++++++++++++ mailbot/bin/functions.sh | 15 +++++++++ mailbot/etc/mailbot.conf | 11 +++++++ mailbot/lang/de/errors.txt | 1 + mailbot/struktur.txt | 64 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+) create mode 100755 mailbot/bin/bot-manager.sh create mode 100644 mailbot/bin/functions.sh create mode 100644 mailbot/etc/mailbot.conf create mode 100644 mailbot/lang/de/errors.txt create mode 100644 mailbot/struktur.txt diff --git a/mailbot/bin/bot-manager.sh b/mailbot/bin/bot-manager.sh new file mode 100755 index 0000000..ce731ad --- /dev/null +++ b/mailbot/bin/bot-manager.sh @@ -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 diff --git a/mailbot/bin/functions.sh b/mailbot/bin/functions.sh new file mode 100644 index 0000000..eb915e5 --- /dev/null +++ b/mailbot/bin/functions.sh @@ -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" +} + + diff --git a/mailbot/etc/mailbot.conf b/mailbot/etc/mailbot.conf new file mode 100644 index 0000000..588908f --- /dev/null +++ b/mailbot/etc/mailbot.conf @@ -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" diff --git a/mailbot/lang/de/errors.txt b/mailbot/lang/de/errors.txt new file mode 100644 index 0000000..c682a7d --- /dev/null +++ b/mailbot/lang/de/errors.txt @@ -0,0 +1 @@ +1: keine Parameter angegeben! diff --git a/mailbot/struktur.txt b/mailbot/struktur.txt new file mode 100644 index 0000000..b8d8a57 --- /dev/null +++ b/mailbot/struktur.txt @@ -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)