]> 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 4f768e38830ab6fd8b303d324ebbb734c219ea3d..cb73ea392e579f69f2e3051f0dd1964cd8f54faf 100644 (file)
@@ -1,32 +1,28 @@
 # Copyright 2004-2005 James Bunton <james@delx.cjb.net>
 # Licensed for distribution under the GPL version 2, check COPYING for details
 
-def mutilateMe(me):
-       """ Mutilates a class :) """
-#      for key in dir(me):
-#              exec "me." + key + " = None"
+
 
 def getLang(el):
        return el.getAttribute((u'http://www.w3.org/XML/1998/namespace', u'lang'))
 
 
-import random
-def random_guid():
-       format = "{%4X%4X-%4X-%4X-%4X-%4X%4X%4X}"
-       data = []
-       for x in xrange(8):
-               data.append(random.random() * 0xAAFF + 0x1111)
-       data = tuple(data)
-       
-       return format % data
+import sha
+def socks5Hash(sid, initiator, target):
+       return sha.new("%s%s%s" % (sid, initiator, target)).hexdigest()
 
 
-import base64
-def b64enc(s):
-       return base64.encodestring(s).replace('\n', '')
+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
 
-def b64dec(s):
-       return base64.decodestring(s)
 
 try:
        import Image
@@ -72,112 +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)
-
-
-
-class RollingStack:
-       def __init__(self, size):
-               self.lst = []
-               self.size = size
-       
-       def push(self, data):
-               self.lst.append(str(data))
-               if len(self.lst) > self.size:
-                       self.lst.remove(self.lst[0])
-       
-       def grabAll(self):
-               return "".join(self.lst)
-       
-       def flush(self):
-               self.lst = []
-