# 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
}
-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():
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 = []
-