zaklad mailoveho rozhrani
authorTomas Musil <tomik.musil@gmail.com>
Thu, 12 Apr 2012 17:52:34 +0000 (19:52 +0200)
committerTomas Musil <tomik.musil@gmail.com>
Thu, 12 Apr 2012 17:52:34 +0000 (19:52 +0200)
robot.py [new file with mode: 0755]

diff --git a/robot.py b/robot.py
new file mode 100755 (executable)
index 0000000..2cbc1d5
--- /dev/null
+++ b/robot.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+
+"""Mailove rozhrani pro sadu kryptoanalytickych nastroju."""
+
+import os
+import sys
+import re
+import smtplib
+import email
+from email.mime.text import MIMEText
+from time import asctime
+import pickle
+
+from ocesavac import ocesat
+from spolecne import ABECEDA
+
+class settings:
+    pass
+
+settings = pickle.load(open('./robot_settings'))
+os.chdir(settings.path)
+
+def posli_mail(komu, predmet, text, loguj=None):
+    msg = MIMEText(text)
+    msg['Subject'] = predmet
+    msg['From'] = settings.name + " <" + settings.mail  + ">"
+    msg['To'] = komu
+    smtplib.SMTP('localhost').sendmail(settings.mail, komu, msg.as_string())
+    if loguj:
+        soubor = open(loguj, 'w')
+        soubor.write(msg.as_string())
+        soubor.close()
+
+# Cteni mailu
+mail = email.message_from_file(sys.stdin)
+predmet, _, opsny = mail['Subject'].strip().upper().partition(' ')
+odesilatel = mail['From']
+if predmet != settings.subject:
+    sys.exit()
+if 'L' in opsny:
+    mail = pickle.load(open('./msg_last.tmp'))
+    m1 = re.match(r".*\<(.*)\>.*", mail['From'])
+    m2 = re.match(r".*\<(.*)\>.*", odesilatel)
+    if m1:
+        f1 = m1.group(1)
+    else:
+        f1 = mail['From']
+    if m2:
+        f2 = m2.group(1)
+    else:
+        f2 = odesilatel
+    if (f1 != f2):
+        posli_mail(odesilatel, "Omluva", "Omlouvam se,"
+                   " ale Vase zprava uz bohuzel neni na serveru ulozena.\n")
+        sys.exit()
+
+if mail.is_multipart():
+    telo = mail.get_payload(0).get_payload().strip()
+else:
+    telo = mail.get_payload().strip()
+
+if len(ocesat(telo, False)) < 2:
+    posli_mail(odesilatel, "Omluva", "Omlouvam se,"
+                   " ale Vase zprava je prilis kratka.\n")
+    sys.exit()
+zprava = telo.upper()
+
+# TODO zpracovat zpravu a odeslat vysledek
+#pridat "\nS pozdravem\nVas Robot"
+
+posli_mail(odesilatel,
+           "Analyza Vasi zpravy",
+           "\n".join(analyza),
+           './robot_last.tmp')
+
+f = open('./msg_last.tmp', 'w')
+pickle.dump(mail, f)
+f.close()
+
+f = open('./robot.log', 'a')
+m = re.match(r".*\<(.*)\>.*", odesilatel)
+if m:
+    odesilatel2 = m.group(1)
+else:
+    odesilatel2 = odesilatel
+f.write(asctime() + " " +  odesilatel2 + " " + opsny + "\n")
+f.close()