Updating bottlepy to the latest revision

This commit is contained in:
Miroslav Stampar 2023-02-20 14:44:56 +01:00
parent 01310a47fd
commit 15d9c8f9ed
2 changed files with 35 additions and 47 deletions

View File

@ -20,7 +20,7 @@ from thirdparty import six
from thirdparty.six import unichr as _unichr from thirdparty.six import unichr as _unichr
# sqlmap version (<major>.<minor>.<month>.<monthly commit>) # sqlmap version (<major>.<minor>.<month>.<monthly commit>)
VERSION = "1.7.2.10" VERSION = "1.7.2.11"
TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable" TYPE = "dev" if VERSION.count('.') > 2 and VERSION.split('.')[-1] != '0' else "stable"
TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34} TYPE_COLORS = {"dev": 33, "stable": 90, "pip": 34}
VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE) VERSION_STRING = "sqlmap/%s#%s" % ('.'.join(VERSION.split('.')[:-1]) if VERSION.count('.') > 2 and VERSION.split('.')[-1] == '0' else VERSION, TYPE)

View File

@ -69,12 +69,12 @@ if __name__ == '__main__':
# Imports and Python 2/3 unification ########################################## # Imports and Python 2/3 unification ##########################################
############################################################################### ###############################################################################
import base64, calendar, cgi, email.utils, functools, hmac, imp, itertools,\ import base64, calendar, cgi, email.utils, functools, hmac, itertools,\
mimetypes, os, re, tempfile, threading, time, warnings, weakref, hashlib mimetypes, os, re, tempfile, threading, time, warnings, weakref, hashlib
from types import FunctionType from types import FunctionType
from datetime import date as datedate, datetime, timedelta from datetime import date as datedate, datetime, timedelta
from tempfile import TemporaryFile from tempfile import NamedTemporaryFile
from traceback import format_exc, print_exc from traceback import format_exc, print_exc
from unicodedata import normalize from unicodedata import normalize
@ -83,34 +83,6 @@ try:
except ImportError: except ImportError:
from json import dumps as json_dumps, loads as json_lds from json import dumps as json_dumps, loads as json_lds
# inspect.getargspec was removed in Python 3.6, use
# Signature-based version where we can (Python 3.3+)
try:
from inspect import signature
def getargspec(func):
params = signature(func).parameters
args, varargs, keywords, defaults = [], None, None, []
for name, param in params.items():
if param.kind == param.VAR_POSITIONAL:
varargs = name
elif param.kind == param.VAR_KEYWORD:
keywords = name
else:
args.append(name)
if param.default is not param.empty:
defaults.append(param.default)
return (args, varargs, keywords, tuple(defaults) or None)
except ImportError:
try:
from inspect import getfullargspec
def getargspec(func):
spec = getfullargspec(func)
kwargs = makelist(spec[0]) + makelist(spec.kwonlyargs)
return kwargs, spec[1], spec[2], spec[3]
except ImportError:
from inspect import getargspec
py = sys.version_info py = sys.version_info
py3k = py.major > 2 py3k = py.major > 2
@ -123,9 +95,17 @@ if py3k:
urlunquote = functools.partial(urlunquote, encoding='latin1') urlunquote = functools.partial(urlunquote, encoding='latin1')
from http.cookies import SimpleCookie, Morsel, CookieError from http.cookies import SimpleCookie, Morsel, CookieError
from collections.abc import MutableMapping as DictMixin from collections.abc import MutableMapping as DictMixin
from types import ModuleType as new_module
import pickle import pickle
from io import BytesIO from io import BytesIO
import configparser import configparser
# getfullargspec was deprecated in 3.5 and un-deprecated in 3.6
# getargspec was deprecated in 3.0 and removed in 3.11
from inspect import getfullargspec
def getargspec(func):
spec = getfullargspec(func)
kwargs = makelist(spec[0]) + makelist(spec.kwonlyargs)
return kwargs, spec[1], spec[2], spec[3]
basestring = str basestring = str
unicode = str unicode = str
@ -143,9 +123,12 @@ else: # 2.x
from Cookie import SimpleCookie, Morsel, CookieError from Cookie import SimpleCookie, Morsel, CookieError
from itertools import imap from itertools import imap
import cPickle as pickle import cPickle as pickle
from imp import new_module
from StringIO import StringIO as BytesIO from StringIO import StringIO as BytesIO
import ConfigParser as configparser import ConfigParser as configparser
from collections import MutableMapping as DictMixin from collections import MutableMapping as DictMixin
from inspect import getargspec
unicode = unicode unicode = unicode
json_loads = json_lds json_loads = json_lds
exec(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec')) exec(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec'))
@ -256,6 +239,7 @@ class lazy_attribute(object):
setattr(cls, self.__name__, value) setattr(cls, self.__name__, value)
return value return value
############################################################################### ###############################################################################
# Exceptions and Events ####################################################### # Exceptions and Events #######################################################
############################################################################### ###############################################################################
@ -1353,7 +1337,7 @@ class BaseRequest(object):
body.write(part) body.write(part)
body_size += len(part) body_size += len(part)
if not is_temp_file and body_size > self.MEMFILE_MAX: if not is_temp_file and body_size > self.MEMFILE_MAX:
body, tmp = TemporaryFile(mode='w+b'), body body, tmp = NamedTemporaryFile(mode='w+b'), body
body.write(tmp.getvalue()) body.write(tmp.getvalue())
del tmp del tmp
is_temp_file = True is_temp_file = True
@ -2010,6 +1994,7 @@ class JSONPlugin(object):
dumps = self.json_dumps dumps = self.json_dumps
if not self.json_dumps: return callback if not self.json_dumps: return callback
@functools.wraps(callback)
def wrapper(*a, **ka): def wrapper(*a, **ka):
try: try:
rv = callback(*a, **ka) rv = callback(*a, **ka)
@ -2057,7 +2042,7 @@ class _ImportRedirect(object):
""" Create a virtual package that redirects imports (see PEP 302). """ """ Create a virtual package that redirects imports (see PEP 302). """
self.name = name self.name = name
self.impmask = impmask self.impmask = impmask
self.module = sys.modules.setdefault(name, imp.new_module(name)) self.module = sys.modules.setdefault(name, new_module(name))
self.module.__dict__.update({ self.module.__dict__.update({
'__file__': __file__, '__file__': __file__,
'__path__': [], '__path__': [],
@ -2066,10 +2051,15 @@ class _ImportRedirect(object):
}) })
sys.meta_path.append(self) sys.meta_path.append(self)
def find_spec(self, fullname, path, target=None):
if '.' not in fullname: return
if fullname.rsplit('.', 1)[0] != self.name: return
from importlib.util import spec_from_loader
return spec_from_loader(fullname, self)
def find_module(self, fullname, path=None): def find_module(self, fullname, path=None):
if '.' not in fullname: return if '.' not in fullname: return
packname = fullname.rsplit('.', 1)[0] if fullname.rsplit('.', 1)[0] != self.name: return
if packname != self.name: return
return self return self
def load_module(self, fullname): def load_module(self, fullname):
@ -2825,18 +2815,15 @@ def redirect(url, code=None):
raise res raise res
def _file_iter_range(fp, offset, bytes, maxread=1024 * 1024, close=False): def _rangeiter(fp, offset, limit, bufsize=1024 * 1024):
""" Yield chunks from a range in a file, optionally closing it at the end. """ Yield chunks from a range in a file. """
No chunk is bigger than maxread. """
fp.seek(offset) fp.seek(offset)
while bytes > 0: while limit > 0:
part = fp.read(min(bytes, maxread)) part = fp.read(min(limit, bufsize))
if not part: if not part:
break break
bytes -= len(part) limit -= len(part)
yield part yield part
if close:
fp.close()
def static_file(filename, root, def static_file(filename, root,
@ -2940,9 +2927,10 @@ def static_file(filename, root,
if not ranges: if not ranges:
return HTTPError(416, "Requested Range Not Satisfiable") return HTTPError(416, "Requested Range Not Satisfiable")
offset, end = ranges[0] offset, end = ranges[0]
rlen = end - offset
headers["Content-Range"] = "bytes %d-%d/%d" % (offset, end - 1, clen) headers["Content-Range"] = "bytes %d-%d/%d" % (offset, end - 1, clen)
headers["Content-Length"] = str(end - offset) headers["Content-Length"] = str(rlen)
if body: body = _file_iter_range(body, offset, end - offset, close=True) if body: body = _closeiter(_rangeiter(body, offset, rlen), body.close)
return HTTPResponse(body, status=206, **headers) return HTTPResponse(body, status=206, **headers)
return HTTPResponse(body, **headers) return HTTPResponse(body, **headers)
@ -3359,7 +3347,7 @@ class MeinheldServer(ServerAdapter):
class FapwsServer(ServerAdapter): class FapwsServer(ServerAdapter):
""" Extremely fast webserver using libev. See http://www.fapws.org/ """ """ Extremely fast webserver using libev. See https://github.com/william-os4y/fapws3 """
def run(self, handler): # pragma: no cover def run(self, handler): # pragma: no cover
depr(0, 13, "fapws3 is not maintained and support will be dropped.") depr(0, 13, "fapws3 is not maintained and support will be dropped.")
@ -4276,7 +4264,7 @@ def view(tpl_name, **defaults):
tplvars.update(result) tplvars.update(result)
return template(tpl_name, **tplvars) return template(tpl_name, **tplvars)
elif result is None: elif result is None:
return template(tpl_name, defaults) return template(tpl_name, **defaults)
return result return result
return wrapper return wrapper