#! /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