mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2025-05-06 16:53:44 +03:00
Removing obsolete proxy handling code (Python < 2.6)
This commit is contained in:
parent
e7576a3b11
commit
17d36684b5
|
@ -131,7 +131,6 @@ from lib.parse.payloads import loadPayloads
|
||||||
from lib.request.basic import checkCharEncoding
|
from lib.request.basic import checkCharEncoding
|
||||||
from lib.request.connect import Connect as Request
|
from lib.request.connect import Connect as Request
|
||||||
from lib.request.dns import DNSServer
|
from lib.request.dns import DNSServer
|
||||||
from lib.request.proxy import ProxyHTTPSHandler
|
|
||||||
from lib.request.basicauthhandler import SmartHTTPBasicAuthHandler
|
from lib.request.basicauthhandler import SmartHTTPBasicAuthHandler
|
||||||
from lib.request.certhandler import HTTPSCertAuthHandler
|
from lib.request.certhandler import HTTPSCertAuthHandler
|
||||||
from lib.request.httpshandler import HTTPSHandler
|
from lib.request.httpshandler import HTTPSHandler
|
||||||
|
@ -970,17 +969,7 @@ def _setHTTPProxy():
|
||||||
proxyString = ""
|
proxyString = ""
|
||||||
|
|
||||||
proxyString += "%s:%d" % (hostname, port)
|
proxyString += "%s:%d" % (hostname, port)
|
||||||
|
|
||||||
# Workaround for http://bugs.python.org/issue1424152 (urllib/urllib2:
|
|
||||||
# HTTPS over (Squid) Proxy fails) as long as HTTP over SSL requests
|
|
||||||
# can't be tunneled over an HTTP proxy natively by Python (<= 2.5)
|
|
||||||
# urllib2 standard library
|
|
||||||
if PYVERSION >= "2.6":
|
|
||||||
proxyHandler = urllib2.ProxyHandler({"http": proxyString, "https": proxyString})
|
proxyHandler = urllib2.ProxyHandler({"http": proxyString, "https": proxyString})
|
||||||
elif conf.scheme == "https":
|
|
||||||
proxyHandler = ProxyHTTPSHandler(proxyString)
|
|
||||||
else:
|
|
||||||
proxyHandler = urllib2.ProxyHandler({"http": proxyString})
|
|
||||||
|
|
||||||
def _setSafeUrl():
|
def _setSafeUrl():
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
"""
|
|
||||||
Copyright (c) 2006-2012 sqlmap developers (http://sqlmap.org/)
|
|
||||||
See the file 'doc/COPYING' for copying permission
|
|
||||||
"""
|
|
||||||
|
|
||||||
import httplib
|
|
||||||
import socket
|
|
||||||
import ssl
|
|
||||||
import urllib
|
|
||||||
import urllib2
|
|
||||||
|
|
||||||
|
|
||||||
class ProxyHTTPConnection(httplib.HTTPConnection):
|
|
||||||
_ports = {"http": 80, "https": 443}
|
|
||||||
|
|
||||||
def request(self, method, url, body=None, headers={}):
|
|
||||||
# Request is called before connect, so can interpret url and get
|
|
||||||
# real host/port to be used to make CONNECT request to proxy
|
|
||||||
proto, rest = urllib.splittype(url)
|
|
||||||
|
|
||||||
if proto is None:
|
|
||||||
raise ValueError("unknown URL type: %s" % url)
|
|
||||||
|
|
||||||
# Get host
|
|
||||||
host, rest = urllib.splithost(rest)
|
|
||||||
|
|
||||||
# Try to get port
|
|
||||||
host, port = urllib.splitport(host)
|
|
||||||
|
|
||||||
# If port is not defined try to get from proto
|
|
||||||
if port is None:
|
|
||||||
try:
|
|
||||||
port = self._ports[proto]
|
|
||||||
except KeyError:
|
|
||||||
raise ValueError("unknown protocol for: %s" % url)
|
|
||||||
|
|
||||||
self._real_host = host
|
|
||||||
self._real_port = int(port)
|
|
||||||
|
|
||||||
httplib.HTTPConnection.request(self, method, rest, body, headers)
|
|
||||||
|
|
||||||
def connect(self):
|
|
||||||
httplib.HTTPConnection.connect(self)
|
|
||||||
|
|
||||||
# Send proxy CONNECT request
|
|
||||||
self.send("CONNECT %s:%d HTTP/1.0\r\n\r\n" % (self._real_host, self._real_port))
|
|
||||||
|
|
||||||
# Expect a HTTP/1.0 200 Connection established
|
|
||||||
response = self.response_class(self.sock, strict=self.strict, method=self._method)
|
|
||||||
(version, code, message) = response._read_status()
|
|
||||||
|
|
||||||
# Probably here we can handle auth requests...
|
|
||||||
if code != 200:
|
|
||||||
# Proxy returned and error, abort connection, and raise exception
|
|
||||||
self.close()
|
|
||||||
|
|
||||||
raise socket.error, "Proxy connection failed: %d %s" % (code, message.strip())
|
|
||||||
|
|
||||||
# Eat up header block from proxy
|
|
||||||
while True:
|
|
||||||
# Should not use directly fp probably
|
|
||||||
line = response.fp.readline()
|
|
||||||
|
|
||||||
if line == "\r\n":
|
|
||||||
break
|
|
||||||
|
|
||||||
class ProxyHTTPSConnection(ProxyHTTPConnection):
|
|
||||||
default_port = 443
|
|
||||||
|
|
||||||
def __init__(self, host, port=None, key_file=None, cert_file=None, strict=None, timeout=None):
|
|
||||||
ProxyHTTPConnection.__init__(self, host, port)
|
|
||||||
self.key_file = key_file
|
|
||||||
self.cert_file = cert_file
|
|
||||||
|
|
||||||
def connect(self):
|
|
||||||
ProxyHTTPConnection.connect(self)
|
|
||||||
|
|
||||||
# Make the sock ssl-aware
|
|
||||||
sslobj = ssl.wrap_socket(self.sock, self.key_file, self.cert_file)
|
|
||||||
self.sock = sslobj
|
|
||||||
|
|
||||||
class ProxyHTTPHandler(urllib2.HTTPHandler):
|
|
||||||
def __init__(self, proxy=None, debuglevel=0):
|
|
||||||
self.proxy = proxy
|
|
||||||
|
|
||||||
urllib2.HTTPHandler.__init__(self, debuglevel)
|
|
||||||
|
|
||||||
def do_open(self, http_class, req):
|
|
||||||
if self.proxy is not None:
|
|
||||||
req.set_proxy(self.proxy, "http")
|
|
||||||
|
|
||||||
return urllib2.HTTPHandler.do_open(self, ProxyHTTPConnection, req)
|
|
||||||
|
|
||||||
class ProxyHTTPSHandler(urllib2.HTTPSHandler):
|
|
||||||
def __init__(self, proxy=None, debuglevel=0):
|
|
||||||
self.proxy = proxy
|
|
||||||
|
|
||||||
urllib2.HTTPSHandler.__init__(self, debuglevel)
|
|
||||||
|
|
||||||
def do_open(self, http_class, req):
|
|
||||||
if self.proxy is not None:
|
|
||||||
req.set_proxy(self.proxy, "https")
|
|
||||||
|
|
||||||
return urllib2.HTTPSHandler.do_open(self, ProxyHTTPSConnection, req)
|
|
Loading…
Reference in New Issue
Block a user