#! /usr/bin/tclsh
# gibt nachrichten anhand des trace levels aus
# param level: trace level, bei welchem die nachricht erscheinen soll
# param msg: nachricht
proc message {level msg} {
global state
if {$level <= $state(-trace)} {
puts stderr $msg
}
}
# oeffnet den Socket
# wenn kein Erfolg => exit 1 und raus
proc openSocket {} {
global state
# versucht socket zu oeffnen, sonst fehlermeldung und exit
if {[catch { socket $state(-server) $state(-port) } state(socket)]} {
message 1 "Es konnte keine Verbindung hergestellt werden :-("
exit 1
}
message 2 "Verbindung mit $state(-server):$state(-port) hergestellt"
return
}
# schliesst den Socket zum Mailserver
proc closeSocket {} {
global state
message 2 "Schliesse Verbindung zum Server"
close $state(socket)
}
# sendet ein Kommando an den Socket
# parameter: cmd - Zusendendes Kommando
proc sendSocket cmd {
global state
puts $state(socket) "$cmd"
flush $state(socket)
message 3 "> $cmd"
}
# liest eine Zeile vom Socket und gibt diese zurueck
proc readSocket {} {
global state
gets $state(socket) srvmsg
message 3 "< $srvmsg "
return $srvmsg
}
## Konfiguration
array set state {
-trace 3
-server "lena"
-port 25
}
########################################################
# Hier beginnt der von euch zu implementierende Teil
# Denkt an das Auswerten der Serverrueckmeldungen
########################################################
########################################################
# Hilfe:
# Datum: Eine Datumsangabe ist wie folgt aufgebaut:
# "Date: Sun, 19 Jun 2005 15:33:06 +0200"
# Es kann mit dem bash 'date' Kommando
# generiert werden, siehe "man date" :-)
#######################################################
exit 0