]> code.delx.au - pymsnt/blobdiff - src/utils.py
The <host/> config option now sets the bind address for outgoing connections
[pymsnt] / src / utils.py
index d0184c900b3aa8e8906b310e70a54955ef20c7f4..cb73ea392e579f69f2e3051f0dd1964cd8f54faf 100644 (file)
@@ -3,16 +3,27 @@
 
 
 
-try:
-       from twisted.words.protocols.jabber import intern as jid
-except:
-       from tlib.jabber.jid import intern as jid
-
-
 def getLang(el):
        return el.getAttribute((u'http://www.w3.org/XML/1998/namespace', u'lang'))
 
 
+import sha
+def socks5Hash(sid, initiator, target):
+       return sha.new("%s%s%s" % (sid, initiator, target)).hexdigest()
+
+
+import urllib
+import os.path
+def getURLBits(url, assumedType=None):
+       type, rest = urllib.splittype(url)
+       if assumedType and type != assumedType:
+               return
+       hostport, path = urllib.splithost(rest)
+       host, port = urllib.splitnport(hostport, 80)
+       filename = os.path.basename(path)
+       return host, port, path, filename
+
+
 try:
        import Image
        import StringIO
@@ -57,94 +68,4 @@ errorCodeMap = {
 }
 
 
-def parseText(text, beExtremelyLenient=False):
-       t = TextParser(beExtremelyLenient)
-       t.parseString(text)
-       return t.root
-
-def parseFile(filename, beExtremelyLenient=False):
-       t = TextParser(beExtremelyLenient)
-       t.parseFile(filename)
-       return t.root
-
-
-checkTwistedCached = None
-def checkTwisted():
-       """ Returns False if we're using an old version that needs tlib, otherwise returns True """
-       global checkTwistedCached
-       if checkTwistedCached == None:
-               import twisted.copyright
-               checkTwistedCached = (VersionNumber(twisted.copyright.version) >= VersionNumber("2.0.0"))
-       return checkTwistedCached
-
-class VersionNumber:
-       def __init__(self, vstring):
-               self.varray = [0]
-               index = 0 
-               flag = True
-               for c in vstring:
-                       if c == '.':
-                               self.varray.append(0)
-                               index += 1
-                               flag = True
-                       elif c.isdigit() and flag:
-                               self.varray[index] *= 10
-                               self.varray[index] += int(c)
-                       else:
-                               flag = False
-       
-       def __cmp__(self, other):
-               i = 0
-               while(True):
-                       if i == len(other.varray):
-                               if i < len(self.varray):
-                                       return 1
-                               else:
-                                       return 0
-                       if i == len(self.varray):
-                               if i < len(other.varray):
-                                       return -1
-                               else:
-                                       return 0
-
-                       if self.varray[i] > other.varray[i]:
-                               return 1
-                       elif self.varray[i] < other.varray[i]:
-                               return -1
-
-                       i += 1
-       
-
-if checkTwisted():
-       from twisted.xish.domish import SuxElementStream
-else:
-       from tlib.domish import SuxElementStream
-class TextParser:
-       """ Taken from http://xoomer.virgilio.it/dialtone/rsschannel.py """
-
-       def __init__(self, beExtremelyLenient=False):
-               self.root = None
-               self.beExtremelyLenient = beExtremelyLenient
-
-       def parseFile(self, filename):
-               return self.parseString(file(filename).read())
-
-       def parseString(self, data):
-               es = SuxElementStream()
-               es.beExtremelyLenient = self.beExtremelyLenient
-               es.DocumentStartEvent = self.docStart
-               es.DocumentEndEvent = self.docEnd
-               es.ElementEvent = self.element
-               es.parse(data)
-               return self.root
-
-       def docStart(self, e):
-               self.root = e
-
-       def docEnd(self):
-               pass
-
-       def element(self, e):
-               self.root.addChild(e)
-