"""
cTypes = [s.lstrip() for s in message.getHeader('Content-Type').split(';')]
if self._checkTyping(message, cTypes): return 0
"""
cTypes = [s.lstrip() for s in message.getHeader('Content-Type').split(';')]
if self._checkTyping(message, cTypes): return 0
- if 'text/x-msmsgsinvite' in cTypes:
+# if 'text/x-msmsgsinvite' in cTypes:
# header like info is sent as part of the message body.
# header like info is sent as part of the message body.
- info = {}
- for line in message.message.split('\r\n'):
- try:
- key, val = line.split(':')
- info[key] = val.lstrip()
- except ValueError: continue
- if self._checkFileInvitation(message, info): return 0
+# info = {}
+# for line in message.message.split('\r\n'):
+# try:
+# key, val = line.split(':')
+# info[key] = val.lstrip()
+# except ValueError: continue
+# if self._checkFileInvitation(message, info): return 0
elif 'application/x-msnmsgrp2p' in cTypes:
self._handleP2PMessage(message)
return 0
elif 'application/x-msnmsgrp2p' in cTypes:
self._handleP2PMessage(message)
return 0
class NotificationClient(msn.NotificationClient):
class NotificationClient(msn.NotificationClient):
+ def doDisconnect(self):
+ if hasattr(self, "transport") and self.transport:
+ self.transport.loseConnection()
+
def loginFailure(self, message):
self.factory.msncon.loginFailed(message)
def loginFailure(self, message):
self.factory.msncon.loginFailed(message)
def logOut(self):
msn.NotificationClient.logOut(self)
def logOut(self):
msn.NotificationClient.logOut(self)
+ # If we explicitly log out, then all of these events
+ # are now redundant
+ self.loginFailure = self.doDisconnect
+ self.loggedIn = self.doDisconnect
+ self.connectionLost = self.doDisconnect
def connectionLost(self, reason):
def connectionLost(self, reason):
- if not self.factory.msncon: return # If we called logOut
def wait():
LogEvent(INFO, self.factory.msncon.ident)
msn.NotificationClient.connectionLost(self, reason)
def wait():
LogEvent(INFO, self.factory.msncon.ident)
msn.NotificationClient.connectionLost(self, reason)
self.ready = False
def __del__(self):
self.ready = False
def __del__(self):
LogEvent(INFO, self.ident)
del self.msncon
self.transport.disconnect()
def connectionLost(self, reason):
LogEvent(INFO, self.ident)
del self.msncon
self.transport.disconnect()
def connectionLost(self, reason):
self.msncon = None
self.msnobj = None
self.ident = (self.ident[0], self.ident[1] + " Disconnected!")
self.msncon = None
self.msnobj = None
self.ident = (self.ident[0], self.ident[1] + " Disconnected!")
self.con2 = con2
self.con1ToCon2 = loopback.LoopbackRelay(con1)
self.con2ToCon1 = loopback.LoopbackRelay(con2)
self.con2 = con2
self.con1ToCon2 = loopback.LoopbackRelay(con1)
self.con2ToCon1 = loopback.LoopbackRelay(con2)
- con2.makeConnection(self.con1ToCon2)
- con1.makeConnection(self.con2ToCon1)
+ self.reconnect()
+
+ def reconnect(self):
+ self.con2.makeConnection(self.con1ToCon2)
+ self.con1.makeConnection(self.con2ToCon1)
self.connected = True
def doSteps(self, steps=1):
self.connected = True
def doSteps(self, steps=1):
def setUp(self):
self.client = DummyNotificationClient()
self.client.factory = msn.NotificationFactory()
def setUp(self):
self.client = DummyNotificationClient()
self.client.factory = msn.NotificationFactory()
+ msn.MSNEventBase.connectionMade(self.client)
self.client.state = 'START'
def tearDown(self):
self.client.state = 'START'
def tearDown(self):
('93662730714769834295', 'd619dfbb1414004d34d0628766636568'),
('31154116582196216093', '95e96c4f8cfdba6f065c8869b5e984e9')]
for challenge, response in challenges:
('93662730714769834295', 'd619dfbb1414004d34d0628766636568'),
('31154116582196216093', '95e96c4f8cfdba6f065c8869b5e984e9')]
for challenge, response in challenges:
self.server.doChallenge(challenge, response)
self.failUnless(self.loop.doSteps(10), 'Failed to disconnect')
self.failUnless((self.server.state == 'PASS'), 'Incorrect challenge response.')
self.server.doChallenge(challenge, response)
self.failUnless(self.loop.doSteps(10), 'Failed to disconnect')
self.failUnless((self.server.state == 'PASS'), 'Incorrect challenge response.')
class DummyPingNotificationClient(msn.NotificationClient):
def connectionMade(self):
class DummyPingNotificationClient(msn.NotificationClient):
def connectionMade(self):
+ msn.MSNEventBase.connectionMade(self)
self.pingCheckerStart()
def sendLine(self, line):
self.pingCheckerStart()
def sendLine(self, line):
self.failUnless((self.client.state == 'GOTMESSAGE'), 'Failed to detect message')
def testInviteUser(self):
self.failUnless((self.client.state == 'GOTMESSAGE'), 'Failed to detect message')
def testInviteUser(self):
- self.client.connectionMade = lambda: None
self.client.doSendInvite()
self.failUnless(self.loop.doSteps(10), 'Failed to disconnect')
self.failUnless((self.client.state == 'INVITESUCCESS'), 'Failed to invite user')
def testSendMessage(self):
self.client.doSendInvite()
self.failUnless(self.loop.doSteps(10), 'Failed to disconnect')
self.failUnless((self.client.state == 'INVITESUCCESS'), 'Failed to invite user')
def testSendMessage(self):
- self.client.connectionMade = lambda: None
self.client.doSendMessage()
self.failUnless(self.loop.doSteps(10), 'Failed to disconnect')
self.failUnless((self.client.state == 'MESSAGESUCCESS'), 'Failed to send message')
self.client.doSendMessage()
self.failUnless(self.loop.doSteps(10), 'Failed to disconnect')
self.failUnless((self.client.state == 'MESSAGESUCCESS'), 'Failed to send message')
def importOptions(options):
for o in options:
if hasattr(config, o):
def importOptions(options):
for o in options:
if hasattr(config, o):
- setattr(config, o, options[0])
+ setattr(config, o, options[o])
else:
print "Option %s is not a defined option. Ignoring!" % (o)
else:
print "Option %s is not a defined option. Ignoring!" % (o)