Automata Toolbox - Implementation

Die Mails werden mit procmail verarbeitet. (Alternative wäre ein WWW-Formular, aber das ist unnötig oder sogar hinderlich. Der Student soll sich ja die Sache in Ruhe überlegen, und das File mit der Antwort dann in Ruhe in seinem bevorzugten Editor tippen. Wenn das fertig ist, kann er es abschicken.)

Im Home-Verzeichnis des Hostusers steht das File .forward mit dem Inhalt

 "|IFS=' '&&p=/usr/bin/procmail&&test -f $p&&exec $p -Yf-||exit 75 #ti"
dadurch werden einlaufende Mails an procmail geschickt, das durch ein File .procmailrc so konfiguriert ist:
:0 b
* !^Subject:.*Re:
* !^FROM_DAEMON
| /home/autotool/autotool/bin/Autotool_Main  `formail -rt -xTo:` $MATCH
Man sieht, wie zunächst Mailbouncing verhindert wird und dann der Inhalt der Email und der Absender an den Autotool-Manager weitergegeben wird. Dieser prüft Subject und Absender, leitet das studentische Modul in eine Datei weiter und erzeugt ein entsprechendes Hauptprogramm, das im einfachsten Fall so aussieht:
module Main (main) where

import L122 (bewerte)
import Student19918 (student)

main = do
  res <- bewerte student
  appendFile "/home/autotool/autotool/log/RES" $ "Sat Oct 20 20:15:01 CEST 2001 ( 19918 ) mrahn ( 9 ) L122 : " ++ res ++ "\n"
Hier läuft der Autotool-Manager mit der Prozess-ID "19918" und der User mit der Emailadresse "mrahn" mit der Matrikelnummer "9" hat eine Einsendung für Aufgabe "L122" eingeschickt, die nun überprüft wird. (In diesem speziellen Fall würde das Hauptprogramm kompiliert und dann ausgeführt, in anderen Fällen werden die Hauptprogramme interpretiert. Entscheidend dafür ist der jeweilige Ressourcenbedarf, die Festlegung findet im dispatch-File statt.)

Schließlich ist noch eine automatische Protokollierung eingebaut, dabei ist es egal, wieviele Versuche der Student benötigt - soll er ruhig probieren, so oft er will.


Kontakt: autotool-admin

last modified: $Date: 2002/05/24 10:46:47 $