[Nym3-commit] r314 - in trunk/nymbaron: Client Server

jr at conuropsis.org jr at conuropsis.org
Tue Oct 4 22:28:12 CEST 2005


Author: jr
Date: 2005-10-04 22:28:11 +0200 (Tue, 04 Oct 2005)
New Revision: 314

Modified:
   trunk/nymbaron/Client/Main.py
   trunk/nymbaron/Server/Main.py
   trunk/nymbaron/Server/User.py
Log:
- The server supports repetition of register message
- add some comments in the registration procedure of the server, remove stuff
  that wasn't used
- make inspect-account more verbose


Modified: trunk/nymbaron/Client/Main.py
===================================================================
--- trunk/nymbaron/Client/Main.py	2005-09-26 21:56:05 UTC (rev 313)
+++ trunk/nymbaron/Client/Main.py	2005-10-04 20:28:11 UTC (rev 314)
@@ -605,6 +605,7 @@
 	a = Account.Account(config, nickname)
 	#TODO be more verbose?
 	ui.display("%s@%s" % (nickname, a['servername']))
+	ui.display("Return address: %s" % a['returnaddress'])
 
 def passwd(ui, config):
     """changes the passphrase protecting the user Keyring"""

Modified: trunk/nymbaron/Server/Main.py
===================================================================
--- trunk/nymbaron/Server/Main.py	2005-09-26 21:56:05 UTC (rev 313)
+++ trunk/nymbaron/Server/Main.py	2005-10-04 20:28:11 UTC (rev 314)
@@ -36,6 +36,7 @@
 import nymbaron.Message as Message
 import nymbaron.Common as Common
 import nymbaron.Mail as Mail
+import mixminion.Crypto as _cr
 
 lifeCycle = User.lifeCycle
 """The life cycle of a mail received by the server for a nym""" 
@@ -80,6 +81,7 @@
 		# 1 Newpk, and 1 surb. more will raise an error
 
 		nymUser = None
+		mdgst = _cr.sha1(msg)
 		#phase 1 we look for the command create
 		for idx, com in enumerate(comList):
 		    if(com.ct() == 0): # TODO : evil numeric litteral
@@ -87,8 +89,25 @@
 			for pnym in com.list:
 			    try:
 				nymUser = User.User(pnym,1)
-			    except User.AlreadySuchUser: pass
-			    if(nymUser != None):
+			    except User.AlreadySuchUser:
+				#a nym pnym has been created : check it
+				#doesn't relate to the creat being processed
+				nymUser = User.User(pnym, 0)
+				if nymUser['inidgst'] == mdgst:
+				    #it does: we resend the challenge
+				    #and quit
+				    nymUser.received(h.seqNo)
+				    created = Message.Created()
+				    created.fromData(nymUser.username,
+					    nymUser['cr'])
+				    nymUser.advanced_send(
+					Message.buildMessage([created]))
+				    return
+				else:
+				    #it doesn't: we clean and continue
+				    del nymUser
+				    nymUser = None
+			    if nymUser != None:
 				break
 			if (nymUser == None):
 			    #TODO send an Error message to the client when surbs become available?
@@ -107,6 +126,9 @@
 		for idx, com in enumerate(comList):
 		    if(com.ct()==2): # TODO : evil numeric litteral
 			nymUser.addSurbs(com.surbs)
+			if nymUser['nSurbs'] < 3:
+			    print "Not Enough Surbs"
+			    raise MyException()
 			del (comList[idx])
 			break
 		if(len(comList) != 1):
@@ -122,10 +144,16 @@
 		   nymUser.abort()
 		   raise MyException()
 		else: # Valid account creation request. Send CREATED
+		    #remember we received this register request
+		    nymUser['inidgst'] = mdgst
 		    nymUser.received(h.seqNo)
+		    #we forget about CREATE2 message and consider the account as
+		    #up
+		    nymUser.setUp()
+		    #send back the challenge
 		    created = Message.Created()
+		    #TODO non empty challenge?
 		    created.fromData(nymUser.username, "")
-		    nymUser.setUp()
 		    nymUser.advanced_send(Message.buildMessage([created]))
 	    except MyException:
 		   #if you come here something went wrong during the account
@@ -151,9 +179,11 @@
 		    pass
 		#if the account is not initialized, or if it is already up we ignore Create2 messages
 		elif (com.ct() == Message.CToSCODE['Create2']):
-		    if (nymUser.isInitialized() and (not nymUser.isUp())):
-			if(nymUser.checkChallenge(com.cr)):
-			    nymUser.setUp()
+		    #for the time being we forget about CREATE2 messages
+		    pass
+		    #if not nymUser.isUp():
+		#	if(nymUser.checkChallenge(com.cr)):
+		#	    nymUser.setUp()
 		#other commands are only taken into account if the account is up
 		elif (nymUser.isUp()):
 		    if (com.ct() == Message.CToSCODE['Surb']):

Modified: trunk/nymbaron/Server/User.py
===================================================================
--- trunk/nymbaron/Server/User.py	2005-09-26 21:56:05 UTC (rev 313)
+++ trunk/nymbaron/Server/User.py	2005-10-04 20:28:11 UTC (rev 314)
@@ -91,8 +91,9 @@
 	try:
 	    f = open(self.datafile, 'r')
             if (create == 1):
-                f.close()
-                raise AlreadySuchUser
+		f.close()
+		del self
+		raise AlreadySuchUser
 	    self.data = pickle.load(f)
 	    f.close()
 	except IOError:
@@ -461,14 +462,6 @@
 	self.data['idKey'] = kid
 	self.data['encKey'] = kenc
 
-    def isInitialized(self):
-	"""True if the first 3 commands :
-	- a Create command
-	- a Newpk command
-	- a Surb command containing at least 3 surbs
-	have arrived"""
-	return (self.data['nSurbs'] > 2) and (self.data['idkey'] != None)
-
     def isUp(self):
 	"""Tells whether the account is up, ready to handle messages of the
 	nymholder"""



More information about the Nym3-commit mailing list