added patched (hashlib and init-script) version of pymsn-t

This commit is contained in:
Manuel Friedli 2010-01-20 17:36:43 +00:00
parent 41681b258f
commit 0bd9b20032
8 changed files with 335 additions and 0 deletions

View file

@ -0,0 +1,10 @@
--- pymsn-t/src/main.py 2008-09-19 10:53:30.000000000 +0200
+++ pymsn-t/src/main.py 2008-09-19 10:55:55.000000000 +0200
@@ -72,7 +72,6 @@
if config.reactor:
# They picked their own reactor. Lets install it.
- del sys.modules["twisted.internet.reactor"]
if config.reactor == "epoll":
from twisted.internet import epollreactor
epollreactor.install()

View file

@ -0,0 +1,122 @@
diff -ru pymsnt-0.11.3-vanilla/src/avatar.py pymsnt-0.11.3/src/avatar.py
--- pymsnt-0.11.3-vanilla/src/avatar.py 2008-02-08 13:55:07.000000000 +0000
+++ pymsnt-0.11.3/src/avatar.py 2010-01-20 17:18:44.000000000 +0000
@@ -6,7 +6,7 @@
from twisted.internet import reactor
from twisted.words.xish.domish import Element
-import sha, base64, os, os.path
+import hashlib, base64, os, os.path
import utils
import config
@@ -34,7 +34,7 @@
class Avatar:
""" Represents an Avatar. Does not store the image in memory. """
def __init__(self, imageData, avatarCache):
- self.__imageHash = sha.sha(imageData).hexdigest()
+ self.__imageHash = hashlib.sha1(imageData).hexdigest()
self.__avatarCache = avatarCache
def getImageHash(self):
diff -ru pymsnt-0.11.3-vanilla/src/legacy/msn/msn.py pymsnt-0.11.3/src/legacy/msn/msn.py
--- pymsnt-0.11.3-vanilla/src/legacy/msn/msn.py 2008-02-08 13:55:07.000000000 +0000
+++ pymsnt-0.11.3/src/legacy/msn/msn.py 2010-01-20 17:18:25.000000000 +0000
@@ -106,7 +106,7 @@
# System imports
-import types, operator, os, sys, base64, random, struct, random, sha, base64, StringIO, array, codecs, binascii
+import types, operator, os, sys, base64, random, struct, random, hashlib, base64, StringIO, array, codecs, binascii
from urllib import quote, unquote
@@ -490,7 +490,7 @@
self.type = 3
self.location = "TMP" + str(random.randint(1000,9999))
self.friendly = "AAA="
- self.sha1d = b64enc(sha.sha(imageData).digest())
+ self.sha1d = b64enc(hashlib.sha1(imageData).digest())
self.makeText()
def setNull(self):
@@ -518,7 +518,7 @@
h.append(self.friendly)
h.append("SHA1D")
h.append(self.sha1d)
- sha1c = b64enc(sha.sha("".join(h)).digest())
+ sha1c = b64enc(hashlib.sha1("".join(h)).digest())
self.text = '<msnobj Creator="%s" Size="%s" Type="%s" Location="%s" Friendly="%s" SHA1D="%s" SHA1C="%s"/>' % (self.creator, str(self.size), str(self.type), self.location, self.friendly, self.sha1d, sha1c)
def parse(self, s):
diff -ru pymsnt-0.11.3-vanilla/src/legacy/msn/msnp11chl.py pymsnt-0.11.3/src/legacy/msn/msnp11chl.py
--- pymsnt-0.11.3-vanilla/src/legacy/msn/msnp11chl.py 2008-02-08 13:55:07.000000000 +0000
+++ pymsnt-0.11.3/src/legacy/msn/msnp11chl.py 2010-01-20 17:20:28.000000000 +0000
@@ -1,7 +1,7 @@
# Copyright 2005 James Bunton <james@delx.cjb.net>
# Licensed for distribution under the GPL version 2, check COPYING for details
-import md5
+import hashlib
import struct
MSNP11_PRODUCT_ID = "PROD0090YUAUV{2B"
@@ -10,7 +10,7 @@
def doChallenge(chlData):
- md5digest = md5.md5(chlData + MSNP11_PRODUCT_KEY).digest()
+ md5digest = hashlib.md5(chlData + MSNP11_PRODUCT_KEY).digest()
# Make array of md5 string ints
md5Ints = struct.unpack("<llll", md5digest)
diff -ru pymsnt-0.11.3-vanilla/src/twistfix/words/xish/xmlstream.py pymsnt-0.11.3/src/twistfix/words/xish/xmlstream.py
--- pymsnt-0.11.3-vanilla/src/twistfix/words/xish/xmlstream.py 2008-02-08 13:56:54.000000000 +0000
+++ pymsnt-0.11.3/src/twistfix/words/xish/xmlstream.py 2010-01-20 17:19:09.000000000 +0000
@@ -29,8 +29,8 @@
def hashPassword(sid, password):
"""Create a SHA1-digest string of a session identifier and password """
- import sha
- return sha.new("%s%s" % (sid, password)).hexdigest()
+ import hashlib
+ return hashlib.sha1("%s%s" % (sid, password)).hexdigest()
class Authenticator:
""" Base class for business logic of authenticating an XmlStream
diff -ru pymsnt-0.11.3-vanilla/src/utils.py pymsnt-0.11.3/src/utils.py
--- pymsnt-0.11.3-vanilla/src/utils.py 2008-02-08 13:55:07.000000000 +0000
+++ pymsnt-0.11.3/src/utils.py 2010-01-20 17:19:40.000000000 +0000
@@ -7,9 +7,9 @@
return el.getAttribute((u'http://www.w3.org/XML/1998/namespace', u'lang'))
-import sha
+import hashlib
def socks5Hash(sid, initiator, target):
- return sha.new("%s%s%s" % (sid, initiator, target)).hexdigest()
+ return hashlib.sha1("%s%s%s" % (sid, initiator, target)).hexdigest()
import urllib
diff -ru pymsnt-0.11.3-vanilla/src/xdb.py pymsnt-0.11.3/src/xdb.py
--- pymsnt-0.11.3-vanilla/src/xdb.py 2008-02-08 13:55:07.000000000 +0000
+++ pymsnt-0.11.3/src/xdb.py 2010-01-20 17:21:01.000000000 +0000
@@ -6,7 +6,7 @@
import os
import os.path
import shutil
-import md5
+import hashlib
import config
X = os.path.sep
@@ -23,7 +23,7 @@
return file.replace("@", "%")
def makeHash(file):
- return md5.md5(file).hexdigest()[0:3]
+ return hashlib.md5(file).hexdigest()[0:3]
class XDB:

View file

@ -0,0 +1,23 @@
#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-im/pymsn-t/files/pymsn-t-0.11.2-initd,v 1.2 2007/06/04 20:48:44 griffon26 Exp $
depend() {
need net
use jabber-server
}
start() {
ebegin "Starting MSN Jabber Transport"
start-stop-daemon --start --pidfile /var/run/jabber/pymsn-t.pid --chuid jabber:jabber \
--exec /usr/bin/python2.6 INSPATH/pymsn-t.py -- \
-b -c /etc/jabber/pymsn-t.xml -l /var/log/jabber/pymsn-t.log
eend $?
}
stop() {
ebegin "Stopping MSN Jabber Transport"
start-stop-daemon --stop --quiet --pidfile /var/run/jabber/pymsn-t.pid
eend $?
}

View file

@ -0,0 +1,12 @@
diff -a -u -d -r pymsnt.a/src/legacy/msn/msn.py pymsnt.b/src/legacy/msn/msn.py
--- pymsnt.a/src/legacy/msn/msn.py 2008-02-08 16:55:07.000000000 +0300
+++ pymsnt.b/src/legacy/msn/msn.py 2008-08-05 20:40:46.000000000 +0400
@@ -110,7 +110,7 @@
from urllib import quote, unquote
-MSN_PROTOCOL_VERSION = "MSNP11 CVR0" # protocol version
+MSN_PROTOCOL_VERSION = "MSNP11" # protocol version
MSN_PORT = 1863 # default dispatch server port
MSN_MAX_MESSAGE = 1664 # max message length
MSN_CVR_STR = "0x040c winnt 5.1 i386 MSNMSGR 7.0.0777 msmsgs"

View file

@ -0,0 +1,41 @@
--- pymsn-t/src/main.py 2008-04-04 17:45:43.000000000 +0400
+++ pymsn-t/src/main.py 2008-08-05 17:44:17.000000000 +0400
@@ -91,6 +91,7 @@
from twisted.words.xish.domish import Element
from twisted.words.protocols.jabber import component
from twisted.words.protocols.jabber.jid import internJID
+from twisted.python import log
from debug import LogEvent, INFO, WARN, ERROR
@@ -352,13 +353,29 @@
pf = open(config.pid, "w")
pf.write("%s\n" % pid)
pf.close()
+
+ def removePID(self, pidfile):
+ # Remove a PID file
+ if not pidfile:
+ return
+ try:
+ os.unlink(pidfile)
+ except OSError, e:
+ if e.errno == errno.EACCES or e.errno == errno.EPERM:
+ log.msg("Warning: No permission to delete pid file")
+ else:
+ log.msg("Failed to unlink PID file:")
+ log.deferr()
+ except:
+ log.msg("Failed to unlink PID file:")
+ log.deferr()
def shuttingDown(self):
self.transportSvc.removeMe()
# Keep the transport running for another 3 seconds
def cb(ignored=None):
if config.pid:
- twistd.removePID(config.pid)
+ self.removePID(config.pid)
d = Deferred()
d.addCallback(cb)
reactor.callLater(3.0, d.callback, None)

View file

@ -0,0 +1,44 @@
--- pymsn-t/src/legacy/glue.py 2008-09-19 10:53:30.000000000 +0200
+++ pymsn-t/src/legacy/glue.py 2008-09-19 10:52:38.000000000 +0200
@@ -379,7 +379,13 @@
self.session.removeMe()
def connectionLost(self, reason):
- LogEvent(INFO, self.jabberID)
+ LogEvent(INFO, self.jabberID)
+ # If we got a second referral, don't really log out but let the next NS
+ # try to log us in
+ if reason.type == error.ConnectionDone and self.gotadditionalXFR != 0:
+ LogEvent(INFO, self.ident)
+ self.gotadditionalXFR = 0
+ return
if reason.type != error.ConnectionDone:
text = lang.get(self.session.lang).msnDisconnected % reason
self.session.sendMessage(to=self.jabberID, fro=config.jid, body=text)
--- pymsn-t/src/legacy/msn/msn.py 2008-09-19 10:53:30.000000000 +0200
+++ pymsn-t/src/legacy/msn/msn.py 2008-09-19 10:52:38.000000000 +0200
@@ -1347,7 +1347,9 @@
port = MSN_PORT
if not self._fireCallback(id, host, int(port), params[4]):
- raise MSNProtocolError, "Got XFR (referral) that I didn't ask for .. should this happen?" # debug
+ #raise MSNProtocolError, "Got XFR (referral) that I didn't ask for .. should this happen?" # debug
+ self.factory.msncon.gotadditionalXFR = 1
+ self.factory.msncon.connectors.append(reactor.connectTCP(host, int(port), self.factory, bindAddress=(self.factory.msncon.BINDADDRESS, 0)))
def handle_RNG(self, params):
checkParamLen(len(params), 6, 'RNG')
--- pymsn-t/src/legacy/msn/msnw.py 2008-09-19 10:53:30.000000000 +0200
+++ pymsn-t/src/legacy/msn/msnw.py 2008-09-19 10:52:38.000000000 +0200
@@ -67,8 +67,9 @@
LogEvent(INFO, self.ident)
def _gotNotificationReferral(self, (host, port)):
- self.timeout.cancel()
- self.timeout = None
+ if self.timeout != None:
+ self.timeout.cancel()
+ self.timeout = None
# Create the NotificationClient
self.notificationFactory = msn.NotificationFactory()
self.notificationFactory.userHandle = self.username