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 spolecne import ABECEDA
21 settings = pickle.load(open('./robot_settings'))
22 os.chdir(settings.path)
24 def posli_mail(komu, predmet, text, loguj=None):
26 msg['Subject'] = predmet
27 msg['From'] = settings.name + " <" + settings.mail + ">"
29 smtplib.SMTP('localhost').sendmail(settings.mail, komu, msg.as_string())
31 soubor = open(loguj, 'w')
32 soubor.write(msg.as_string())
36 mail = email.message_from_file(sys.stdin)
37 predmet, _, opsny = mail['Subject'].strip().upper().partition(' ')
38 odesilatel = mail['From']
39 if predmet != settings.subject:
43 #TODO dokumentace k Vigenerovi
44 posli_mail(odesilatel, "Napoveda", ''.join(["Napoveda:\n"
45 "Prikazy robotovi vkladejte do predmetu zpravy "
47 settings.mail, ".\nNa velikosti pismen nezalezi."
48 "\n\nSeznam prikazu:\n"
49 "\"", settings.subject, "\" Analyza zpravy z tela mailu.\n"
50 "\"", settings.subject, " X\" Vynuti analyzu bez mezer.\n"
51 "\"", settings.subject, " M\" Vynuti analyzu s mezerami.\n"
52 "\"", settings.subject, " B\" Vypise cetnost vsech bigramu.\n"
53 "\"", settings.subject, " P\" Vypise vsechny posunuti textu.\n"
54 "\"", settings.subject, " A\" Vypise uplne vsechno co dava "
55 "alespon trochu smysl (nedoporucuji).\n"
56 "\"", settings.subject, " H\" Tato napoveda.\n"
57 "\nVolby (mimo \"H\") je mozno libovolne kombinovat.\n"
58 "Napriklad \"", settings.subject, " LXB\" analyzuje posledni "
59 "prijatou zpravu s vynucenim analyzy bez mezer a navic vypise "
61 "\nS pozdravem\nVas Robot\n"]))
65 mail = pickle.load(open('./msg_last.tmp'))
66 m1 = re.match(r".*\<(.*)\>.*", mail['From'])
67 m2 = re.match(r".*\<(.*)\>.*", odesilatel)
77 posli_mail(odesilatel, "Omluva", "Omlouvam se,"
78 " ale Vase zprava uz bohuzel neni na serveru ulozena.\n")
81 if mail.is_multipart():
82 telo = mail.get_payload(0).get_payload().strip()
84 telo = mail.get_payload().strip()
86 if len(ocesat(telo, False)) < 2:
87 posli_mail(odesilatel, "Omluva", "Omlouvam se,"
88 " ale Vase zprava je prilis kratka.\n")
92 analyza = krypto.analyza(zprava, opsny)
95 posli_mail(odesilatel,
96 "Analyza Vasi zpravy",
97 analyza + "\nS pozdravem\nVas Robot",
100 f = open('./msg_last.tmp', 'w')
104 f = open('./robot.log', 'a')
105 m = re.match(r".*\<(.*)\>.*", odesilatel)
107 odesilatel2 = m.group(1)
109 odesilatel2 = odesilatel
110 f.write(asctime() + " " + odesilatel2 + " " + opsny + "\n")