3 """Mailove rozhrani pro sadu kryptoanalytickych nastroju."""
10 from email.mime.text import MIMEText
11 from time import asctime
14 from ocesavac import ocesat
15 from jakobsen import reference
16 from spolecne import ABECEDA
22 settings = pickle.load(open('./robot_settings'))
23 os.chdir(settings.path)
25 def posli_mail(komu, predmet, text, loguj=None):
27 msg['Subject'] = predmet
28 msg['From'] = settings.name + " <" + settings.mail + ">"
30 smtplib.SMTP('localhost').sendmail(settings.mail, komu, msg.as_string())
32 soubor = open(loguj, 'w')
33 soubor.write(msg.as_string())
37 mail = email.message_from_file(sys.stdin)
38 predmet, _, opsny = mail['Subject'].strip().upper().partition(' ')
39 odesilatel = mail['From']
40 if predmet != settings.subject:
44 #TODO dokumentace k Vigenerovi
46 posli_mail(odesilatel, "Napoveda", ''.join(["Napoveda:\n"
47 "Prikazy robotovi vkladejte do predmetu zpravy "
49 settings.mail, ".\nNa velikosti pismen nezalezi."
50 "\n\nSeznam prikazu:\n"
51 "\"", settings.subject, "\" Analyza zpravy z tela mailu.\n"
52 "\"", settings.subject, " X\" Vynuti analyzu bez mezer.\n"
53 "\"", settings.subject, " M\" Vynuti analyzu s mezerami.\n"
54 "\"", settings.subject, " B\" Vypise cetnost vsech bigramu.\n"
55 "\"", settings.subject, " P\" Vypise vsechny posunuti textu.\n"
56 "\"", settings.subject, " A\" Vypise uplne vsechno co dava "
57 "alespon trochu smysl (nedoporucuji).\n"
58 "\"", settings.subject, " H\" Tato napoveda.\n"
59 "\nVolby (mimo \"H\") je mozno libovolne kombinovat.\n"
60 "Napriklad \"", settings.subject, " LXB\" analyzuje posledni "
61 "prijatou zpravu s vynucenim analyzy bez mezer a navic vypise "
63 "\nS pozdravem\nVas Robot\n"]))
67 mail = pickle.load(open('./msg_last.tmp'))
68 m1 = re.match(r".*\<(.*)\>.*", mail['From'])
69 m2 = re.match(r".*\<(.*)\>.*", odesilatel)
79 posli_mail(odesilatel, "Omluva", "Omlouvam se,"
80 " ale Vase zprava uz bohuzel neni na serveru ulozena.\n")
83 if mail.is_multipart():
84 telo = mail.get_payload(0).get_payload().strip()
86 telo = mail.get_payload().strip()
88 if len(ocesat(telo, False)) < 2:
89 posli_mail(odesilatel, "Omluva", "Omlouvam se,"
90 " ale Vase zprava je prilis kratka.\n")
94 analyza = krypto.analyza(zprava, opsny)
97 posli_mail(odesilatel,
98 "Analyza Vasi zpravy",
99 analyza + "\n\nS pozdravem\nVas Robot",
102 f = open('./msg_last.tmp', 'w')
106 f = open('./robot.log', 'a')
107 m = re.match(r".*\<(.*)\>.*", odesilatel)
109 odesilatel2 = m.group(1)
111 odesilatel2 = odesilatel
112 f.write(asctime() + " " + odesilatel2 + " " + opsny + "\n")