[Nym3-commit] r252 - trunk/nym3/Client

laurent at conuropsis.org laurent at conuropsis.org
Sat May 7 17:22:53 CEST 2005


Author: laurent
Date: 2005-05-07 17:22:51 +0200 (Sat, 07 May 2005)
New Revision: 252

Modified:
   trunk/nym3/Client/Main.py
Log:
Add client `dump-syn' command.


Modified: trunk/nym3/Client/Main.py
===================================================================
--- trunk/nym3/Client/Main.py	2005-05-07 15:22:11 UTC (rev 251)
+++ trunk/nym3/Client/Main.py	2005-05-07 15:22:51 UTC (rev 252)
@@ -51,6 +51,7 @@
     \tget\t\tRetrieve email
     \tprocess\t\tProcess returning server messages
     \tlist-syn\tList already fetched summaries
+    \tdump-syn\tDump already fetched summaries
     \tlist-mbox\tList already fetched emails
     \tsend-surb\tSend SURBs
     \texport\t\tExport already fetched emails to a file"""
@@ -397,6 +398,36 @@
 		ui.display(Mail.syn_summary(syn))
 		index += 1
 
+def dump_syn(ui, config, nickname = None):
+    account = get_account_from_nickname(ui, config, nickname,
+	    "No nickname given, abort\nUse -n <nickname>")
+    synbox = account.get_synbox()
+    mbox = account.get_mbox()
+    secring = decode_secring(config, ui)
+    index = 1
+    for (midlist, bf, enc_synset) in synbox:
+	bflist = Mail.bf2list(bf)
+	synset = decipher_string(enc_synset, secring, account['encKeys'])
+	if synset == None:
+	    ui.display("unable to decipher a synopses blob, lost keys?")
+	    #TODO remove the blob?
+	    #TODO if yes remove the following line
+	    index += len(midlist)
+	else:
+	    for i, mid in enumerate(midlist):
+		synlen = Message.strToIntBE(synset[20: 22])
+		syn = synset[22: 22 + synlen]
+		synset = synset[22 + synlen:]
+		if mbox.has_key(mid):
+		    avail = "email available"
+		elif i in bflist:
+		    avail = "email available on server"
+		else:
+		    avail = "email not available"
+		ui.display("%d %s %s" % (index, binascii.hexlify(mid), avail))
+		ui.display(syn)
+		index += 1
+
 def list_mbox(ui, config, nickname = None):
     account = get_account_from_nickname(ui, config, nickname,
 	    "No nickname given, abort\nUse -n <nickname>")
@@ -569,13 +600,24 @@
 	parser = OptionParser()
 	parser.add_option("-n", "--nickname", action = "store",
 			  dest = "nickname", help = "The nickname "
-			  "of the account whose emails to request")
+			  "of the account whose synopsis to list")
 	(options, args) = parser.parse_args(args[2:])
 	ui = CLI()
 	config = Config.Config()
 	list_syn(ui, config, options.nickname)
 	sys.exit(0)
 
+    if args[1] == "dump-syn":
+	parser = OptionParser()
+	parser.add_option("-n", "--nickname", action = "store",
+			  dest = "nickname", help = "The nickname "
+			  "of the account whose synopsis to dump")
+	(options, args) = parser.parse_args(args[2:])
+	ui = CLI()
+	config = Config.Config()
+	dump_syn(ui, config, options.nickname)
+	sys.exit(0)
+
     if args[1] == "list-mbox":
 	parser = OptionParser()
 	parser.add_option("-n", "--nickname", action = "store",



More information about the Nym3-commit mailing list