lepsi zachazeni s maily
[krypto.git] / robot.py
index 16eaaf0..58fed48 100755 (executable)
--- a/robot.py
+++ b/robot.py
@@ -9,8 +9,10 @@ from ocesavac import ocesat
 import jakobsen
 from jakobsen import reference
 import koincidence
+import posuny
 import pickle
 import os
+import re
 
 ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 
@@ -55,7 +57,7 @@ if opsny == 'H':
     sys.exit()
 if 'L' in opsny:
     mail = pickle.load(open('./msg_last.tmp'))
-    if (mail['From'] != odesilatel):
+    if ((re.match(r".*\<(.*)\>.*", mail['From']).group(1) or mail['From']) != (re.match(r".*\<(.*)\>.*", odesilatel).group(1) or odesilatel)):
         posli_mail(odesilatel, "Omluva", "Omlouvam se,"
                    " ale Vase zprava uz bohuzel neni na serveru ulozena.\n")
         sys.exit()
@@ -118,7 +120,6 @@ analyza.append("\nIndexy koincidence (vzdy bez mezer):")
 analyza.append(koincidence.tabulka_indexu(zprava))
 
 # Jakobsen
-# TODO verze bez mezer
 if mod_m:
     analyza.append("\nJakobsen (s mezerami):")
     analyza.append(jakobsen.desifruj(zprava, './ref'))
@@ -127,21 +128,15 @@ if mod_x:
     analyza.append(jakobsen.desifruj(zprava, './bref'))
 
 # Posuny v abecede
-# TODO najit nejvhodnejsi posuny a vypsat jenom ty
-def posun(char):
-    if 65 <= ord(char) < 90:
-        return chr(ord(char) + 1)
-    if ord(char) == 90:
-        return 'A'
-    else:
-        return char
+(posun, posunuty_text) = posuny.nejlepsi(zprava)
+
 
 if 'P' in opsny or 'A' in opsny:
-    analyza.append("\nPosuny v abecede:")
-    posunuty = zprava
-    for i in range(26):
-        posunuty = map(posun, posunuty)
-        analyza.append(''.join(posunuty))
+    analyza.append("\nPosuny v abecede (nejlepsi posun {0}):".format(posun))
+    analyza.append("{0} {1}".format(i, posuny.vsechny(zprava)[i]) for i in range(26))
+else:
+    analyza.append("\nNejlepsi posun ({0}):".format(posun))
+    analyza.append(posunuty_text)
 
 # Bigramy
 if ('B' in opsny or 'A' in opsny):
@@ -186,5 +181,6 @@ pickle.dump(mail, f)
 f.close()
 
 f = open('./robot.log', 'a')
-f.write(asctime() + " " +  odesilatel + "\n")
+odesilatel2 = re.match(r".*\<(.*)\>.*", odesilatel) or odesilatel
+f.write(asctime() + " " +  odesilatel2 + " " + opsny + "\n")
 f.close()