[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