mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-22 01:26:42 +03:00
removed unnecessary files
This commit is contained in:
parent
87ecf205cb
commit
05331d1eb0
8
thirdparty/ansistrm/__init__.py~
vendored
8
thirdparty/ansistrm/__init__.py~
vendored
|
@ -1,8 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
"""
|
|
||||||
Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/)
|
|
||||||
See the file 'doc/COPYING' for copying permission
|
|
||||||
"""
|
|
||||||
|
|
||||||
pass
|
|
150
thirdparty/ansistrm/ansistrm.py~
vendored
150
thirdparty/ansistrm/ansistrm.py~
vendored
|
@ -1,150 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright (C) 2010-2012 Vinay Sajip. All rights reserved. Licensed under the new BSD license.
|
|
||||||
#
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
|
|
||||||
class ColorizingStreamHandler(logging.StreamHandler):
|
|
||||||
# color names to indices
|
|
||||||
color_map = {
|
|
||||||
'black': 0,
|
|
||||||
'red': 1,
|
|
||||||
'green': 2,
|
|
||||||
'yellow': 3,
|
|
||||||
'blue': 4,
|
|
||||||
'magenta': 5,
|
|
||||||
'cyan': 6,
|
|
||||||
'white': 7,
|
|
||||||
}
|
|
||||||
|
|
||||||
# levels to (background, foreground, bold/intense)
|
|
||||||
if os.name == 'nt':
|
|
||||||
level_map = {
|
|
||||||
logging.DEBUG: (None, 'blue', False),
|
|
||||||
logging.INFO: (None, 'green', False),
|
|
||||||
logging.WARNING: (None, 'yellow', False),
|
|
||||||
logging.ERROR: (None, 'red', False),
|
|
||||||
logging.CRITICAL: ('red', 'white', False)
|
|
||||||
}
|
|
||||||
else:
|
|
||||||
level_map = {
|
|
||||||
logging.DEBUG: (None, 'blue', False),
|
|
||||||
logging.INFO: (None, 'green', False),
|
|
||||||
logging.WARNING: (None, 'yellow', False),
|
|
||||||
logging.ERROR: (None, 'red', False),
|
|
||||||
logging.CRITICAL: ('red', 'white', False)
|
|
||||||
}
|
|
||||||
csi = '\x1b['
|
|
||||||
reset = '\x1b[0m'
|
|
||||||
|
|
||||||
@property
|
|
||||||
def is_tty(self):
|
|
||||||
isatty = getattr(self.stream, 'isatty', None)
|
|
||||||
return isatty and isatty()
|
|
||||||
|
|
||||||
def emit(self, record):
|
|
||||||
try:
|
|
||||||
message = self.format(record)
|
|
||||||
stream = self.stream
|
|
||||||
|
|
||||||
if not self.is_tty:
|
|
||||||
stream.write(message)
|
|
||||||
else:
|
|
||||||
self.output_colorized(message)
|
|
||||||
stream.write(getattr(self, 'terminator', '\n'))
|
|
||||||
|
|
||||||
self.flush()
|
|
||||||
except (KeyboardInterrupt, SystemExit):
|
|
||||||
raise
|
|
||||||
except:
|
|
||||||
self.handleError(record)
|
|
||||||
|
|
||||||
if os.name != 'nt':
|
|
||||||
def output_colorized(self, message):
|
|
||||||
self.stream.write(message)
|
|
||||||
else:
|
|
||||||
import re
|
|
||||||
ansi_esc = re.compile(r'\x1b\[((?:\d+)(?:;(?:\d+))*)m')
|
|
||||||
|
|
||||||
nt_color_map = {
|
|
||||||
0: 0x00, # black
|
|
||||||
1: 0x04, # red
|
|
||||||
2: 0x02, # green
|
|
||||||
3: 0x06, # yellow
|
|
||||||
4: 0x01, # blue
|
|
||||||
5: 0x05, # magenta
|
|
||||||
6: 0x03, # cyan
|
|
||||||
7: 0x07, # white
|
|
||||||
}
|
|
||||||
|
|
||||||
def output_colorized(self, message):
|
|
||||||
import ctypes
|
|
||||||
|
|
||||||
parts = self.ansi_esc.split(message)
|
|
||||||
write = self.stream.write
|
|
||||||
h = None
|
|
||||||
fd = getattr(self.stream, 'fileno', None)
|
|
||||||
|
|
||||||
if fd is not None:
|
|
||||||
fd = fd()
|
|
||||||
|
|
||||||
if fd in (1, 2): # stdout or stderr
|
|
||||||
h = ctypes.windll.kernel32.GetStdHandle(-10 - fd)
|
|
||||||
|
|
||||||
while parts:
|
|
||||||
text = parts.pop(0)
|
|
||||||
|
|
||||||
if text:
|
|
||||||
write(text)
|
|
||||||
|
|
||||||
if parts:
|
|
||||||
params = parts.pop(0)
|
|
||||||
|
|
||||||
if h is not None:
|
|
||||||
params = [int(p) for p in params.split(';')]
|
|
||||||
color = 0
|
|
||||||
|
|
||||||
for p in params:
|
|
||||||
if 40 <= p <= 47:
|
|
||||||
color |= self.nt_color_map[p - 40] << 4
|
|
||||||
elif 30 <= p <= 37:
|
|
||||||
color |= self.nt_color_map[p - 30]
|
|
||||||
elif p == 1:
|
|
||||||
color |= 0x08 # foreground intensity on
|
|
||||||
elif p == 0: # reset to default color
|
|
||||||
color = 0x07
|
|
||||||
else:
|
|
||||||
pass # error condition ignored
|
|
||||||
|
|
||||||
ctypes.windll.kernel32.SetConsoleTextAttribute(h, color)
|
|
||||||
|
|
||||||
def colorize(self, message, record):
|
|
||||||
if record.levelno in self.level_map:
|
|
||||||
bg, fg, bold = self.level_map[record.levelno]
|
|
||||||
params = []
|
|
||||||
|
|
||||||
if bg in self.color_map:
|
|
||||||
params.append(str(self.color_map[bg] + 40))
|
|
||||||
|
|
||||||
if fg in self.color_map:
|
|
||||||
params.append(str(self.color_map[fg] + 30))
|
|
||||||
|
|
||||||
if bold:
|
|
||||||
params.append('1')
|
|
||||||
|
|
||||||
if params:
|
|
||||||
if message.lstrip() != message:
|
|
||||||
prefix = re.search(r"\s+", message).group(0)
|
|
||||||
message = message[len(prefix):]
|
|
||||||
else:
|
|
||||||
prefix = ""
|
|
||||||
|
|
||||||
message = "%s%s" % (prefix, ''.join((self.csi, ';'.join(params),
|
|
||||||
'm', message, self.reset)))
|
|
||||||
|
|
||||||
return message
|
|
||||||
|
|
||||||
def format(self, record):
|
|
||||||
message = logging.StreamHandler.format(self, record)
|
|
||||||
return self.colorize(message, record)
|
|
8
thirdparty/colorama/__init__.py~
vendored
8
thirdparty/colorama/__init__.py~
vendored
|
@ -1,8 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
"""
|
|
||||||
Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/)
|
|
||||||
See the file 'doc/COPYING' for copying permission
|
|
||||||
"""
|
|
||||||
|
|
||||||
pass
|
|
464
thirdparty/keepalive/keepalive.py~
vendored
464
thirdparty/keepalive/keepalive.py~
vendored
|
@ -1,464 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright 2002-2003 Michael D. Stenner
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU Lesser General Public License as published
|
|
||||||
# by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU Lesser General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
"""An HTTP handler for urllib2 that supports HTTP 1.1 and keepalive.
|
|
||||||
|
|
||||||
import urllib2
|
|
||||||
from keepalive import HTTPHandler
|
|
||||||
keepalive_handler = HTTPHandler()
|
|
||||||
opener = urllib2.build_opener(keepalive_handler)
|
|
||||||
urllib2.install_opener(opener)
|
|
||||||
|
|
||||||
fo = urllib2.urlopen('http://www.python.org')
|
|
||||||
|
|
||||||
To remove the handler, simply re-run build_opener with no arguments, and
|
|
||||||
install that opener.
|
|
||||||
|
|
||||||
You can explicitly close connections by using the close_connection()
|
|
||||||
method of the returned file-like object (described below) or you can
|
|
||||||
use the handler methods:
|
|
||||||
|
|
||||||
close_connection(host)
|
|
||||||
close_all()
|
|
||||||
open_connections()
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
keepalive_handler.close_all()
|
|
||||||
|
|
||||||
EXTRA ATTRIBUTES AND METHODS
|
|
||||||
|
|
||||||
Upon a status of 200, the object returned has a few additional
|
|
||||||
attributes and methods, which should not be used if you want to
|
|
||||||
remain consistent with the normal urllib2-returned objects:
|
|
||||||
|
|
||||||
close_connection() - close the connection to the host
|
|
||||||
readlines() - you know, readlines()
|
|
||||||
status - the return status (ie 404)
|
|
||||||
reason - english translation of status (ie 'File not found')
|
|
||||||
|
|
||||||
If you want the best of both worlds, use this inside an
|
|
||||||
AttributeError-catching try:
|
|
||||||
|
|
||||||
try: status = fo.status
|
|
||||||
except AttributeError: status = None
|
|
||||||
|
|
||||||
Unfortunately, these are ONLY there if status == 200, so it's not
|
|
||||||
easy to distinguish between non-200 responses. The reason is that
|
|
||||||
urllib2 tries to do clever things with error codes 301, 302, 401,
|
|
||||||
and 407, and it wraps the object upon return.
|
|
||||||
|
|
||||||
You can optionally set the module-level global HANDLE_ERRORS to 0,
|
|
||||||
in which case the handler will always return the object directly.
|
|
||||||
If you like the fancy handling of errors, don't do this. If you
|
|
||||||
prefer to see your error codes, then do.
|
|
||||||
|
|
||||||
"""
|
|
||||||
from httplib import _CS_REQ_STARTED, _CS_REQ_SENT, _CS_IDLE, CannotSendHeader
|
|
||||||
|
|
||||||
from lib.core.convert import unicodeencode
|
|
||||||
from lib.core.data import kb
|
|
||||||
|
|
||||||
import threading
|
|
||||||
import urllib2
|
|
||||||
import httplib
|
|
||||||
import socket
|
|
||||||
|
|
||||||
VERSION = (0, 1)
|
|
||||||
#STRING_VERSION = '.'.join(map(str, VERSION))
|
|
||||||
DEBUG = 0
|
|
||||||
HANDLE_ERRORS = 1
|
|
||||||
|
|
||||||
class HTTPHandler(urllib2.HTTPHandler):
|
|
||||||
def __init__(self):
|
|
||||||
self._connections = {}
|
|
||||||
|
|
||||||
def close_connection(self, host):
|
|
||||||
"""close connection to <host>
|
|
||||||
host is the host:port spec, as in 'www.cnn.com:8080' as passed in.
|
|
||||||
no error occurs if there is no connection to that host."""
|
|
||||||
self._remove_connection(host, close=1)
|
|
||||||
|
|
||||||
def open_connections(self):
|
|
||||||
"""return a list of connected hosts"""
|
|
||||||
retVal = []
|
|
||||||
currentThread = threading.currentThread()
|
|
||||||
for name, host in self._connections.keys():
|
|
||||||
if name == currentThread.getName():
|
|
||||||
retVal.append(host)
|
|
||||||
return retVal
|
|
||||||
|
|
||||||
def close_all(self):
|
|
||||||
"""close all open connections"""
|
|
||||||
for _, conn in self._connections.items():
|
|
||||||
conn.close()
|
|
||||||
self._connections = {}
|
|
||||||
|
|
||||||
def _remove_connection(self, host, close=0):
|
|
||||||
key = self._get_connection_key(host)
|
|
||||||
if self._connections.has_key(key):
|
|
||||||
if close: self._connections[key].close()
|
|
||||||
del self._connections[key]
|
|
||||||
|
|
||||||
def _get_connection_key(self, host):
|
|
||||||
return (threading.currentThread().getName(), host)
|
|
||||||
|
|
||||||
def _start_connection(self, h, req):
|
|
||||||
h.clearheaders()
|
|
||||||
try:
|
|
||||||
if req.has_data():
|
|
||||||
data = req.get_data()
|
|
||||||
h.putrequest('POST', req.get_selector())
|
|
||||||
if not req.headers.has_key('Content-type'):
|
|
||||||
req.headers['Content-type'] = 'application/x-www-form-urlencoded'
|
|
||||||
if not req.headers.has_key('Content-length'):
|
|
||||||
req.headers['Content-length'] = '%d' % len(data)
|
|
||||||
else:
|
|
||||||
h.putrequest('GET', req.get_selector())
|
|
||||||
|
|
||||||
if not req.headers.has_key('Connection'):
|
|
||||||
req.headers['Connection'] = 'keep-alive'
|
|
||||||
|
|
||||||
for args in self.parent.addheaders:
|
|
||||||
h.putheader(*args)
|
|
||||||
for k, v in req.headers.items():
|
|
||||||
h.putheader(k, v)
|
|
||||||
h.endheaders()
|
|
||||||
if req.has_data():
|
|
||||||
h.send(data)
|
|
||||||
except socket.error, err:
|
|
||||||
h.close()
|
|
||||||
raise urllib2.URLError(err)
|
|
||||||
|
|
||||||
def do_open(self, http_class, req):
|
|
||||||
h = None
|
|
||||||
host = req.get_host()
|
|
||||||
if not host:
|
|
||||||
raise urllib2.URLError('no host given')
|
|
||||||
|
|
||||||
try:
|
|
||||||
need_new_connection = 1
|
|
||||||
key = self._get_connection_key(host)
|
|
||||||
h = self._connections.get(key)
|
|
||||||
if not h is None:
|
|
||||||
try:
|
|
||||||
self._start_connection(h, req)
|
|
||||||
except:
|
|
||||||
r = None
|
|
||||||
else:
|
|
||||||
try: r = h.getresponse()
|
|
||||||
except httplib.ResponseNotReady, e: r = None
|
|
||||||
except httplib.BadStatusLine, e: r = None
|
|
||||||
|
|
||||||
if r is None or r.version == 9:
|
|
||||||
# httplib falls back to assuming HTTP 0.9 if it gets a
|
|
||||||
# bad header back. This is most likely to happen if
|
|
||||||
# the socket has been closed by the server since we
|
|
||||||
# last used the connection.
|
|
||||||
if DEBUG: print "failed to re-use connection to %s" % host
|
|
||||||
h.close()
|
|
||||||
else:
|
|
||||||
if DEBUG: print "re-using connection to %s" % host
|
|
||||||
need_new_connection = 0
|
|
||||||
if need_new_connection:
|
|
||||||
if DEBUG: print "creating new connection to %s" % host
|
|
||||||
h = http_class(host)
|
|
||||||
self._connections[key] = h
|
|
||||||
self._start_connection(h, req)
|
|
||||||
r = h.getresponse()
|
|
||||||
except socket.error, err:
|
|
||||||
if h: h.close()
|
|
||||||
raise urllib2.URLError(err)
|
|
||||||
|
|
||||||
# if not a persistent connection, don't try to reuse it
|
|
||||||
if r.will_close: self._remove_connection(host)
|
|
||||||
|
|
||||||
if DEBUG:
|
|
||||||
print "STATUS: %s, %s" % (r.status, r.reason)
|
|
||||||
r._handler = self
|
|
||||||
r._host = host
|
|
||||||
r._url = req.get_full_url()
|
|
||||||
|
|
||||||
#if r.status == 200 or not HANDLE_ERRORS:
|
|
||||||
#return r
|
|
||||||
if r.status == 200 or not HANDLE_ERRORS:
|
|
||||||
# [speedplane] Must return an adinfourl object
|
|
||||||
resp = urllib2.addinfourl(r, r.msg, req.get_full_url())
|
|
||||||
resp.code = r.status
|
|
||||||
resp.msg = r.reason
|
|
||||||
return resp;
|
|
||||||
else:
|
|
||||||
r.code = r.status
|
|
||||||
return self.parent.error('http', req, r, r.status, r.reason, r.msg)
|
|
||||||
|
|
||||||
def http_open(self, req):
|
|
||||||
return self.do_open(HTTPConnection, req)
|
|
||||||
|
|
||||||
class HTTPResponse(httplib.HTTPResponse):
|
|
||||||
|
|
||||||
# we need to subclass HTTPResponse in order to
|
|
||||||
# 1) add readline() and readlines() methods
|
|
||||||
# 2) add close_connection() methods
|
|
||||||
# 3) add info() and geturl() methods
|
|
||||||
|
|
||||||
# in order to add readline(), read must be modified to deal with a
|
|
||||||
# buffer. example: readline must read a buffer and then spit back
|
|
||||||
# one line at a time. The only real alternative is to read one
|
|
||||||
# BYTE at a time (ick). Once something has been read, it can't be
|
|
||||||
# put back (ok, maybe it can, but that's even uglier than this),
|
|
||||||
# so if you THEN do a normal read, you must first take stuff from
|
|
||||||
# the buffer.
|
|
||||||
|
|
||||||
# the read method wraps the original to accomodate buffering,
|
|
||||||
# although read() never adds to the buffer.
|
|
||||||
# Both readline and readlines have been stolen with almost no
|
|
||||||
# modification from socket.py
|
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, sock, debuglevel=0, strict=0, method=None):
|
|
||||||
if method: # the httplib in python 2.3 uses the method arg
|
|
||||||
httplib.HTTPResponse.__init__(self, sock, debuglevel, method)
|
|
||||||
else: # 2.2 doesn't
|
|
||||||
httplib.HTTPResponse.__init__(self, sock, debuglevel)
|
|
||||||
self.fileno = sock.fileno
|
|
||||||
self._rbuf = ''
|
|
||||||
self._rbufsize = 8096
|
|
||||||
self._handler = None # inserted by the handler later
|
|
||||||
self._host = None # (same)
|
|
||||||
self._url = None # (same)
|
|
||||||
|
|
||||||
_raw_read = httplib.HTTPResponse.read
|
|
||||||
|
|
||||||
def close_connection(self):
|
|
||||||
self.close()
|
|
||||||
self._handler._remove_connection(self._host, close=1)
|
|
||||||
|
|
||||||
def info(self):
|
|
||||||
return self.msg
|
|
||||||
|
|
||||||
def geturl(self):
|
|
||||||
return self._url
|
|
||||||
|
|
||||||
def read(self, amt=None):
|
|
||||||
# the _rbuf test is only in this first if for speed. It's not
|
|
||||||
# logically necessary
|
|
||||||
if self._rbuf and not amt is None:
|
|
||||||
L = len(self._rbuf)
|
|
||||||
if amt > L:
|
|
||||||
amt -= L
|
|
||||||
else:
|
|
||||||
s = self._rbuf[:amt]
|
|
||||||
self._rbuf = self._rbuf[amt:]
|
|
||||||
return s
|
|
||||||
|
|
||||||
s = self._rbuf + self._raw_read(amt)
|
|
||||||
self._rbuf = ''
|
|
||||||
return s
|
|
||||||
|
|
||||||
def readline(self, limit=-1):
|
|
||||||
data = ""
|
|
||||||
i = self._rbuf.find('\n')
|
|
||||||
while i < 0 and not (0 < limit <= len(self._rbuf)):
|
|
||||||
new = self._raw_read(self._rbufsize)
|
|
||||||
if not new: break
|
|
||||||
i = new.find('\n')
|
|
||||||
if i >= 0: i = i + len(self._rbuf)
|
|
||||||
self._rbuf = self._rbuf + new
|
|
||||||
if i < 0: i = len(self._rbuf)
|
|
||||||
else: i = i+1
|
|
||||||
if 0 <= limit < len(self._rbuf): i = limit
|
|
||||||
data, self._rbuf = self._rbuf[:i], self._rbuf[i:]
|
|
||||||
return data
|
|
||||||
|
|
||||||
def readlines(self, sizehint = 0):
|
|
||||||
total = 0
|
|
||||||
list = []
|
|
||||||
while 1:
|
|
||||||
line = self.readline()
|
|
||||||
if not line: break
|
|
||||||
list.append(line)
|
|
||||||
total += len(line)
|
|
||||||
if sizehint and total >= sizehint:
|
|
||||||
break
|
|
||||||
return list
|
|
||||||
|
|
||||||
|
|
||||||
class HTTPConnection(httplib.HTTPConnection):
|
|
||||||
# use the modified response class
|
|
||||||
response_class = HTTPResponse
|
|
||||||
_headers = None
|
|
||||||
|
|
||||||
def clearheaders(self):
|
|
||||||
self._headers = {}
|
|
||||||
|
|
||||||
def putheader(self, header, value):
|
|
||||||
"""Send a request header line to the server.
|
|
||||||
|
|
||||||
For example: h.putheader('Accept', 'text/html')
|
|
||||||
"""
|
|
||||||
if self.__state != _CS_REQ_STARTED:
|
|
||||||
raise CannotSendHeader()
|
|
||||||
|
|
||||||
self._headers[header] = value
|
|
||||||
|
|
||||||
def endheaders(self):
|
|
||||||
"""Indicate that the last header line has been sent to the server."""
|
|
||||||
|
|
||||||
if self.__state == _CS_REQ_STARTED:
|
|
||||||
self.__state = _CS_REQ_SENT
|
|
||||||
else:
|
|
||||||
raise CannotSendHeader()
|
|
||||||
|
|
||||||
for header in ['Host', 'Accept-Encoding']:
|
|
||||||
if header in self._headers:
|
|
||||||
str = '%s: %s' % (header, self._headers[header])
|
|
||||||
self._output(str)
|
|
||||||
del self._headers[header]
|
|
||||||
|
|
||||||
for header, value in self._headers.items():
|
|
||||||
str = '%s: %s' % (header, value)
|
|
||||||
self._output(str)
|
|
||||||
|
|
||||||
self._send_output()
|
|
||||||
|
|
||||||
def send(self, str):
|
|
||||||
httplib.HTTPConnection.send(self, unicodeencode(str, kb.pageEncoding))
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
##### TEST FUNCTIONS
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
def error_handler(url):
|
|
||||||
global HANDLE_ERRORS
|
|
||||||
orig = HANDLE_ERRORS
|
|
||||||
keepalive_handler = HTTPHandler()
|
|
||||||
opener = urllib2.build_opener(keepalive_handler)
|
|
||||||
urllib2.install_opener(opener)
|
|
||||||
pos = {0: 'off', 1: 'on'}
|
|
||||||
for i in (0, 1):
|
|
||||||
print " fancy error handling %s (HANDLE_ERRORS = %i)" % (pos[i], i)
|
|
||||||
HANDLE_ERRORS = i
|
|
||||||
try:
|
|
||||||
fo = urllib2.urlopen(url)
|
|
||||||
foo = fo.read()
|
|
||||||
fo.close()
|
|
||||||
try: status, reason = fo.status, fo.reason
|
|
||||||
except AttributeError: status, reason = None, None
|
|
||||||
except IOError, e:
|
|
||||||
print " EXCEPTION: %s" % e
|
|
||||||
raise
|
|
||||||
else:
|
|
||||||
print " status = %s, reason = %s" % (status, reason)
|
|
||||||
HANDLE_ERRORS = orig
|
|
||||||
hosts = keepalive_handler.open_connections()
|
|
||||||
print "open connections:", ' '.join(hosts)
|
|
||||||
keepalive_handler.close_all()
|
|
||||||
|
|
||||||
def continuity(url):
|
|
||||||
import md5
|
|
||||||
format = '%25s: %s'
|
|
||||||
|
|
||||||
# first fetch the file with the normal http handler
|
|
||||||
opener = urllib2.build_opener()
|
|
||||||
urllib2.install_opener(opener)
|
|
||||||
fo = urllib2.urlopen(url)
|
|
||||||
foo = fo.read()
|
|
||||||
fo.close()
|
|
||||||
m = md5.new(foo)
|
|
||||||
print format % ('normal urllib', m.hexdigest())
|
|
||||||
|
|
||||||
# now install the keepalive handler and try again
|
|
||||||
opener = urllib2.build_opener(HTTPHandler())
|
|
||||||
urllib2.install_opener(opener)
|
|
||||||
|
|
||||||
fo = urllib2.urlopen(url)
|
|
||||||
foo = fo.read()
|
|
||||||
fo.close()
|
|
||||||
m = md5.new(foo)
|
|
||||||
print format % ('keepalive read', m.hexdigest())
|
|
||||||
|
|
||||||
fo = urllib2.urlopen(url)
|
|
||||||
foo = ''
|
|
||||||
while 1:
|
|
||||||
f = fo.readline()
|
|
||||||
if f: foo = foo + f
|
|
||||||
else: break
|
|
||||||
fo.close()
|
|
||||||
m = md5.new(foo)
|
|
||||||
print format % ('keepalive readline', m.hexdigest())
|
|
||||||
|
|
||||||
def comp(N, url):
|
|
||||||
print ' making %i connections to:\n %s' % (N, url)
|
|
||||||
|
|
||||||
sys.stdout.write(' first using the normal urllib handlers')
|
|
||||||
# first use normal opener
|
|
||||||
opener = urllib2.build_opener()
|
|
||||||
urllib2.install_opener(opener)
|
|
||||||
t1 = fetch(N, url)
|
|
||||||
print ' TIME: %.3f s' % t1
|
|
||||||
|
|
||||||
sys.stdout.write(' now using the keepalive handler ')
|
|
||||||
# now install the keepalive handler and try again
|
|
||||||
opener = urllib2.build_opener(HTTPHandler())
|
|
||||||
urllib2.install_opener(opener)
|
|
||||||
t2 = fetch(N, url)
|
|
||||||
print ' TIME: %.3f s' % t2
|
|
||||||
print ' improvement factor: %.2f' % (t1/t2, )
|
|
||||||
|
|
||||||
def fetch(N, url, delay=0):
|
|
||||||
lens = []
|
|
||||||
starttime = time.time()
|
|
||||||
for i in xrange(N):
|
|
||||||
if delay and i > 0: time.sleep(delay)
|
|
||||||
fo = urllib2.urlopen(url)
|
|
||||||
foo = fo.read()
|
|
||||||
fo.close()
|
|
||||||
lens.append(len(foo))
|
|
||||||
diff = time.time() - starttime
|
|
||||||
|
|
||||||
j = 0
|
|
||||||
for i in lens[1:]:
|
|
||||||
j = j + 1
|
|
||||||
if not i == lens[0]:
|
|
||||||
print "WARNING: inconsistent length on read %i: %i" % (j, i)
|
|
||||||
|
|
||||||
return diff
|
|
||||||
|
|
||||||
def test(url, N=10):
|
|
||||||
print "checking error hander (do this on a non-200)"
|
|
||||||
try: error_handler(url)
|
|
||||||
except IOError, e:
|
|
||||||
print "exiting - exception will prevent further tests"
|
|
||||||
sys.exit()
|
|
||||||
print
|
|
||||||
print "performing continuity test (making sure stuff isn't corrupted)"
|
|
||||||
continuity(url)
|
|
||||||
print
|
|
||||||
print "performing speed comparison"
|
|
||||||
comp(N, url)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
import time
|
|
||||||
import sys
|
|
||||||
try:
|
|
||||||
N = int(sys.argv[1])
|
|
||||||
url = sys.argv[2]
|
|
||||||
except:
|
|
||||||
print "%s <integer> <url>" % sys.argv[0]
|
|
||||||
else:
|
|
||||||
test(url, N)
|
|
3
thirdparty/magic/__init__.py~
vendored
3
thirdparty/magic/__init__.py~
vendored
|
@ -1,3 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
pass
|
|
3
thirdparty/multipart/__init__.py~
vendored
3
thirdparty/multipart/__init__.py~
vendored
|
@ -1,3 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
pass
|
|
78
thirdparty/pagerank/pagerank.py~
vendored
78
thirdparty/pagerank/pagerank.py~
vendored
|
@ -1,78 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Script for getting Google Page Rank of page
|
|
||||||
# Google Toolbar 3.0.x/4.0.x Pagerank Checksum Algorithm
|
|
||||||
#
|
|
||||||
# original from http://pagerank.gamesaga.net/
|
|
||||||
# this version was adapted from http://www.djangosnippets.org/snippets/221/
|
|
||||||
# by Corey Goldberg - 2010
|
|
||||||
#
|
|
||||||
# updated by reference http://www.seroundtable.com/google-pagerank-change-14132.html
|
|
||||||
# by Miroslav Stampar - 2012
|
|
||||||
#
|
|
||||||
# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
|
||||||
|
|
||||||
import urllib
|
|
||||||
|
|
||||||
def get_pagerank(url):
|
|
||||||
_ = 'http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&ch=%s&q=info:%s' % (check_hash(hash_url(url)), urllib.quote(url))
|
|
||||||
try:
|
|
||||||
f = urllib.urlopen(_)
|
|
||||||
rank = f.read().strip()[9:]
|
|
||||||
except Exception:
|
|
||||||
rank = 'N/A'
|
|
||||||
else:
|
|
||||||
rank = '0' if not rank or not rank.isdigit() else rank
|
|
||||||
return rank
|
|
||||||
|
|
||||||
def int_str(string_, integer, factor):
|
|
||||||
for i in xrange(len(string_)) :
|
|
||||||
integer *= factor
|
|
||||||
integer &= 0xFFFFFFFF
|
|
||||||
integer += ord(string_[i])
|
|
||||||
|
|
||||||
return integer
|
|
||||||
|
|
||||||
def hash_url(string_):
|
|
||||||
c1 = int_str(string_, 0x1505, 0x21)
|
|
||||||
c2 = int_str(string_, 0, 0x1003F)
|
|
||||||
|
|
||||||
c1 >>= 2
|
|
||||||
c1 = ((c1 >> 4) & 0x3FFFFC0) | (c1 & 0x3F)
|
|
||||||
c1 = ((c1 >> 4) & 0x3FFC00) | (c1 & 0x3FF)
|
|
||||||
c1 = ((c1 >> 4) & 0x3C000) | (c1 & 0x3FFF)
|
|
||||||
|
|
||||||
t1 = (c1 & 0x3C0) << 4
|
|
||||||
t1 |= c1 & 0x3C
|
|
||||||
t1 = (t1 << 2) | (c2 & 0xF0F)
|
|
||||||
|
|
||||||
t2 = (c1 & 0xFFFFC000) << 4
|
|
||||||
t2 |= c1 & 0x3C00
|
|
||||||
t2 = (t2 << 0xA) | (c2 & 0xF0F0000)
|
|
||||||
|
|
||||||
return (t1 | t2)
|
|
||||||
|
|
||||||
def check_hash(hash_int):
|
|
||||||
hash_str = '%u' % (hash_int)
|
|
||||||
flag = 0
|
|
||||||
check_byte = 0
|
|
||||||
|
|
||||||
i = len(hash_str) - 1
|
|
||||||
while i >= 0:
|
|
||||||
byte = int(hash_str[i])
|
|
||||||
if 1 == (flag % 2):
|
|
||||||
byte *= 2;
|
|
||||||
byte = byte / 10 + byte % 10
|
|
||||||
check_byte += byte
|
|
||||||
flag += 1
|
|
||||||
i -= 1
|
|
||||||
|
|
||||||
check_byte %= 10
|
|
||||||
if 0 != check_byte:
|
|
||||||
check_byte = 10 - check_byte
|
|
||||||
if 1 == flag % 2:
|
|
||||||
if 1 == check_byte % 2:
|
|
||||||
check_byte += 9
|
|
||||||
check_byte >>= 1
|
|
||||||
|
|
||||||
return '7' + str(check_byte) + hash_str
|
|
8
thirdparty/socks/__init__.py~
vendored
8
thirdparty/socks/__init__.py~
vendored
|
@ -1,8 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
"""
|
|
||||||
Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/)
|
|
||||||
See the file 'doc/COPYING' for copying permission
|
|
||||||
"""
|
|
||||||
|
|
||||||
pass
|
|
8
thirdparty/termcolor/__init__.py~
vendored
8
thirdparty/termcolor/__init__.py~
vendored
|
@ -1,8 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
"""
|
|
||||||
Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/)
|
|
||||||
See the file 'doc/COPYING' for copying permission
|
|
||||||
"""
|
|
||||||
|
|
||||||
pass
|
|
Loading…
Reference in New Issue
Block a user