#! /usr/bin/python
# -*- encoding: utf-8 -*-

# Liest eine email von stdin, fügt zusätzliche X-Header ein die von OTRS 
# interpretiert werden können.
# Die zusätzlichen Header werden aus einer mysql-DB ausgelesen

# Wenn der Lookup fehlschlägt, wird die Mail ohne Header weitergegeben


import email
import sys
import MySQLdb
import syslog
import time

start=time.time()
syslog.openlog('otrs-mailfilter',0,syslog.LOG_LOCAL5)

msg=email.message_from_file(sys.stdin)

# ein grosser try-except block um unbekannte fehler abzufangen
try:

	# versuche die notwendigen informationen aus den datenbanken 
	# zu holen. falls das fehlschlägt einfach nur die mail ausgeben
	# wie sie ist.


	# email.utils gibt es in etch (otrs-maschine) noch nicht . email.Utils schon.

	sender=email.Utils.parseaddr(msg.get('From'))[1]
	#sender=msg.get_unixfrom().split()[1]
	
	header_status1=msg.has_key('X-OTRS-Mailfilter-Sender')

	if header_status1 == 0:
		msg.add_header('X-OTRS-Mailfilter-Sender',sender)

	try:
		# userclass und paket aus sql03:myhammeruser
#da muss  die neue OTRS-DB HIN!
		c=MySQLdb.connect('xxx.xxx.xxx.xxx','otrsDB','password','table')
		cu=c.cursor()
		cu.execute("SELECT userClass FROM table WHERE email = '%s' limit 1"%sender)
		res=cu.fetchone()
		c.close()
		
		if(None==res):	# kein eintrag in DB
			userclass='-'
		elif(None==res[0]):
			userclass='-'
		else:
			userclass=res[0]

	except MySQLdb.Error,x:
		syslog.syslog("Error: "+str(x))
		userclass='-'

	header_status=msg.has_key('X-Otrs-Ticketkey10')

	if header_status == 0:
		msg.add_header('X-OTRS-TicketKey10','UserClass')
		msg.add_header('X-OTRS-TicketValue10',userclass)



#	msg.add_header('X-OTRS-TicketKey11','Paket')
#	msg.add_header('X-OTRS-TicketValue11',paket)
		
	ende=time.time()-start
	syslog.syslog("%s: class: %s,paket: %s,%s (%2.2f s)"%(sender,userclass,paket,frager,ende))

	#  zum schluss wird das ganze auf stdout ausgegeben und dann von 
	# /opt/otrs/bin/PostMaster.pl nach OTRS übernommen


except Exception,x:
	syslog.syslog("Global Error: "+str(x))


sys.stdout.write(str(msg))
