[Nym3-commit] r492 - trunk/nymbaron/Server
laurent at conuropsis.org
laurent at conuropsis.org
Sun Mar 19 21:14:38 CET 2006
Author: laurent
Date: 2006-03-19 21:14:37 +0100 (Sun, 19 Mar 2006)
New Revision: 492
Modified:
trunk/nymbaron/Server/Main.py
Log:
Fix breakage introduced in r486, account creation should work again.
Modified: trunk/nymbaron/Server/Main.py
===================================================================
--- trunk/nymbaron/Server/Main.py 2006-03-19 18:17:23 UTC (rev 491)
+++ trunk/nymbaron/Server/Main.py 2006-03-19 20:14:37 UTC (rev 492)
@@ -134,7 +134,7 @@
def findCommand(ccode, clist):
"""Find a command of given code in the argument list, return index"""
- for i in range(clist.len()):
+ for i in range(len(clist)):
if clist[i].ct() == ccode:
return i
return IndexError
@@ -144,8 +144,8 @@
to a valid creation request. Also checks the signature.
"""
sr = Message.StrReader(msg)
+ h = sr.readHeader()
comList = sr.readCommandCToSList()
- h = sr.readHeader()
digest = _cr.sha1(msg)
try:
if len(comList) != 3:
@@ -199,6 +199,7 @@
logger.info("No Surb Command")
nymUser.abort()
raise MalformedControlMessage()
+ com = comList[idx]
nymUser.addSurbs(com.surbs)
if nymUser['nSurbs'] < 3:
logger.info("Not Enough Surbs")
@@ -243,118 +244,114 @@
logger.debug("Processing control message:\n%s" % base64.encodestring(msg))
sr = Message.StrReader(msg)
- try:
- h = sr.readHeader()
- if h.nym == "":
- processCreationRequest(msg)
- else:
- try:
- nymUser = User.User(h.nym, config)
- except User.NoSuchUser:
- logger.debug("No such user %s" % h.nym)
- sys.exit(73) #TODO is it the smart error code
- if not nymUser.checkMessageSign(msg[Message.sigLength:], h.sig):
- return
- #The message comes from a known nick and is authenticated
- #register the seqNo as received
- #TODO is it ok?
- nymUser.received(h.seqNo)
- nymUser['lastSeen'] = time.time()
- comList = sr.readCommandCToSList()
- for com in comList:
- if com.ct() == Message.CToSCODE['Create']:
- #we ignore the Create command if it comes from the nymholder of an account, should we rise an error?
- pass
- #if the account is not initialized, or if it is already up we ignore Create2 messages
- elif com.ct() == Message.CToSCODE['Create2']:
- #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']:
- if len(com.surbs) == 0:
- nymUser.delSurbs()
- else:
- nymUser.addSurbs(com.surbs)
- elif com.ct() == Message.CToSCODE['Newpk']:
- nymUser.setKeys(com.kid, com.kenc)
- elif com.ct() == Message.CToSCODE['Relay']:
+ h = sr.readHeader()
+ if h.nym == "":
+ processCreationRequest(msg)
+ else:
+ try:
+ nymUser = User.User(h.nym, config)
+ except User.NoSuchUser:
+ logger.debug("No such user %s" % h.nym)
+ sys.exit(73) #TODO is it the smart error code
+ if not nymUser.checkMessageSign(msg[Message.sigLength:], h.sig):
+ return
+ #The message comes from a known nick and is authenticated
+ #register the seqNo as received
+ #TODO is it ok?
+ nymUser.received(h.seqNo)
+ nymUser['lastSeen'] = time.time()
+ comList = sr.readCommandCToSList()
+ for com in comList:
+ if com.ct() == Message.CToSCODE['Create']:
+ #we ignore the Create command if it comes from the nymholder of an account, should we rise an error?
+ pass
+ #if the account is not initialized, or if it is already up we ignore Create2 messages
+ elif com.ct() == Message.CToSCODE['Create2']:
+ #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']:
+ if len(com.surbs) == 0:
+ nymUser.delSurbs()
+ else:
+ nymUser.addSurbs(com.surbs)
+ elif com.ct() == Message.CToSCODE['Newpk']:
+ nymUser.setKeys(com.kid, com.kenc)
+ elif com.ct() == Message.CToSCODE['Relay']:
# ec = Mail.relay(h.nym, com.rt, com.ri,
# config.serverName, com.body)
# if (ec != 0):
# logger.error("mixminion exited abnormally with error code %d" % ec)
# sys.exit(2)
- #TODO: Passing this many args is messy. Perhaps they should be
- # written to a dictionary and passed as one?
- payload = Mail.relay_prep(h.nym, com.ri, config.serverName, com.body,
- config.abuse_address)
- if config.relay_method == 'smtp':
- Mail.relay_smtp(h.nym, com.ri, config.serverName, payload,
- config.timeout, config.smtphost)
- elif config.relay_method == 'sendmail':
- Mail.relay_sendmail(payload, config.sendmail_path)
- else:
- logger.error('Unsupported relay option %s specified' % config.relay_method)
- sys.exit(2)
+ #TODO: Passing this many args is messy. Perhaps they should be
+ # written to a dictionary and passed as one?
+ payload = Mail.relay_prep(h.nym, com.ri, config.serverName, com.body,
+ config.abuse_address)
+ if config.relay_method == 'smtp':
+ Mail.relay_smtp(h.nym, com.ri, config.serverName, payload,
+ config.timeout, config.smtphost)
+ elif config.relay_method == 'sendmail':
+ Mail.relay_sendmail(payload, config.sendmail_path)
+ else:
+ logger.error('Unsupported relay option %s specified' % config.relay_method)
+ sys.exit(2)
+
+ elif com.ct() == Message.CToSCODE['Get']:
+ logger.debug("Control message is a Get request from %s" % h.nym)
+ msgList = []
+ sendList = []
+ for m in com.l:
+ if nymUser.hasMail(m):
+ msgCom = Message.Msg()
+ msgCom.fromData(m, nymUser.getMail(m))
+ msgList.append(msgCom)
+ sendList.append(m)
+ ec = nymUser.advanced_send(
+ Message.buildMessage(msgList))
+ logger.debug("EC is " + str(ec))
+ if ec == 0:
+ nymUser.markMid(sendList, lifeCycle['sent-in-full'])
+ if nymUser['HoldUntilAck'] == 'never':
+ map(nymUser.delete_msg, sendList)
+
+ else:
+ logger.error("mixminion exited abnormally with error code %d" % ec)
+ sys.exit(2)
- elif com.ct() == Message.CToSCODE['Get']:
- logger.debug("Control message is a Get request from %s" % h.nym)
- msgList = []
- sendList = []
- for m in com.l:
- if nymUser.hasMail(m):
- msgCom = Message.Msg()
- msgCom.fromData(m, nymUser.getMail(m))
- msgList.append(msgCom)
- sendList.append(m)
- ec = nymUser.advanced_send(
- Message.buildMessage(msgList))
- logger.debug("EC is " + str(ec))
- if ec == 0:
- nymUser.markMid(sendList, lifeCycle['sent-in-full'])
- if nymUser['HoldUntilAck'] == 'never':
- map(nymUser.delete_msg, sendList)
-
- else:
- logger.error("mixminion exited abnormally with error code %d" % ec)
- sys.exit(2)
-
- elif com.ct() == Message.CToSCODE['Summarize']:
- comList = []
- sendList = nymUser.prepareSummary(com.num, com.after)
- mList = []
- if sendList:
- for (ml, bf, blob) in sendList:
- sumCom = Message.Summary()
- sumCom.fromData(bf, blob)
- comList.append(sumCom)
- mList = mList + ml
- else:
+ elif com.ct() == Message.CToSCODE['Summarize']:
+ comList = []
+ sendList = nymUser.prepareSummary(com.num, com.after)
+ mList = []
+ if sendList:
+ for (ml, bf, blob) in sendList:
sumCom = Message.Summary()
- sumCom.fromData("\x00\x00","")
- comList = [sumCom]
- ec = nymUser.send(Message.buildMessage(comList))
- if ec == 0:
- nymUser.markMid(mList, lifeCycle['synopsis-sent'])
- else:
- logger.error("mixminion exited abnormally with error code %d" % ec)
- sys.exit(2)
+ sumCom.fromData(bf, blob)
+ comList.append(sumCom)
+ mList = mList + ml
+ else:
+ sumCom = Message.Summary()
+ sumCom.fromData("\x00\x00","")
+ comList = [sumCom]
+ ec = nymUser.send(Message.buildMessage(comList))
+ if ec == 0:
+ nymUser.markMid(mList, lifeCycle['synopsis-sent'])
+ else:
+ logger.error("mixminion exited abnormally with error code %d" % ec)
+ sys.exit(2)
- elif com.ct() == Message.CToSCODE['Delete']:
- for mid in com.l:
- nymUser.delete_msg(mid)
- elif com.ct() == Message.CToSCODE['Policy']:
- if(com.opt in Common.userPolicy):
- nymUser[com.opt] = com.val
- else:
- pass
- except Message.ParseError, inst:
- logger.error("Parse error in incoming control message %s" % str(inst))
- sys.exit(2) #TODO error code
+ elif com.ct() == Message.CToSCODE['Delete']:
+ for mid in com.l:
+ nymUser.delete_msg(mid)
+ elif com.ct() == Message.CToSCODE['Policy']:
+ if(com.opt in Common.userPolicy):
+ nymUser[com.opt] = com.val
+ else:
+ pass
def main(args):
if len(args) < 2:
@@ -401,13 +398,22 @@
try:
msg = readMessage(options.file)
processMessage(msg)
- except MalformedControlMessage:
+ except MalformedControlMessage, inst:
+ logger.info("Tried to parse as binary control message, failed: %s"\
+ % str(inst))
# see if we got a base64 encoded message.
m = re.search("binary\\n\\n(.*)\\n---", msg, re.S)
if m:
- processMessage(base64.decodestring(m.group(1)))
+ try:
+ processMessage(base64.decodestring(m.group(1)))
+ except MalformedControlMessage, inst:
+ # We really had garbage as input, as we can't
+ # parse it as binary or as base64 encoded.
+ logger.error("Parse error in incoming control message %s" % str(inst))
+ sys.exit(2) #TODO error code
else:
- sys.stderr.write("Unable to find valid control message")
+ logger.error("Unable to find valid control message")
+ sys.exit(2) #TODO error code
sys.exit(0)
if args[1] == "clean-surbs":
More information about the Nym3-commit
mailing list