Package spade :: Package xmppd :: Package modules :: Module jep0078
[hide private]
[frames] | no frames]

Source Code for Module spade.xmppd.modules.jep0078

 1  # Distributed under the terms of GPL version 2 or any later 
 2  # Copyright (C) Alexey Nezhdanov 2004 
 3  # JEP0078 (Non-SASL authenticaion) for xmppd.py 
 4   
 5  # $Id: jep0078.py,v 1.6 2004/10/23 09:22:44 snakeru Exp $ 
 6   
 7  from xmpp import * 
 8  from xmppd import * 
 9  #from xmppd import SESSION_OPENED 
10  import hashlib 
11   
12 -class NSA(PlugIn):
13 NS=NS_AUTH
14 - def plugin(self,server):
17
18 - def getAuthInfoHandler(self,session,stanza):
19 servername=stanza['to'] 20 if servername and servername not in self._owner.servernames: 21 session.send(Error(stanza,ERR_ITEM_NOT_FOUND)) 22 else: 23 iq=stanza.buildReply('result') 24 iq.T.query.NT.username=stanza.T.query.T.username 25 iq.T.query.NT.password 26 iq.T.query.NT.digest 27 iq.T.query.NT.resource 28 session.send(iq) 29 raise NodeProcessed
30
31 - def setAuthInfoHandler(self,session,stanza):
32 if not stanza['to']: stanza['to']=session.ourname 33 servername=stanza['to'].getDomain() 34 username=stanza.T.query.T.username.getData().lower() 35 password=self._owner.AUTH.getpassword(username,servername) 36 if password is not None: digest=hashlib.sha1(session.ID+password).hexdigest() 37 try: 38 query_password = stanza.T.query.T.password.getData() 39 except: 40 query_password = None 41 42 if servername not in self._owner.servernames: 43 session.send(Error(stanza,ERR_ITEM_NOT_FOUND)) 44 elif session.ourname==servername \ 45 and password \ 46 and (query_password==password \ 47 or stanza.T.query.T.digest.getData()==digest ) \ 48 and stanza.T.query.T.resource.getData(): 49 session.send(stanza.buildReply('result')) 50 fulljid="%s@%s/%s"%(username,servername,stanza.T.query.T.resource.getData()) 51 session.peer=fulljid 52 s=self._owner.deactivatesession(fulljid) 53 if s: s.terminate_stream(STREAM_CONFLICT) 54 session.set_session_state(SESSION_OPENED) 55 else: 56 session.send(stanza.buildReply('error')) 57 raise NodeProcessed
58