Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sqlmapproject
GitHub Repository: sqlmapproject/sqlmap
Path: blob/master/lib/request/chunkedhandler.py
2989 views
1
#!/usr/bin/env python
2
3
"""
4
Copyright (c) 2006-2025 sqlmap developers (https://sqlmap.org)
5
See the file 'LICENSE' for copying permission
6
"""
7
8
from lib.core.data import conf
9
from lib.core.enums import HTTP_HEADER
10
from thirdparty.six.moves import urllib as _urllib
11
12
class ChunkedHandler(_urllib.request.HTTPHandler):
13
"""
14
Ensures that HTTPHandler is working properly in case of Chunked Transfer-Encoding
15
"""
16
17
def _http_request(self, request):
18
host = request.get_host() if hasattr(request, "get_host") else request.host
19
if not host:
20
raise _urllib.error.URLError("no host given")
21
22
if request.data is not None: # POST
23
data = request.data
24
if not request.has_header(HTTP_HEADER.CONTENT_TYPE):
25
request.add_unredirected_header(HTTP_HEADER.CONTENT_TYPE, "application/x-www-form-urlencoded")
26
if not request.has_header(HTTP_HEADER.CONTENT_LENGTH) and not conf.chunked:
27
request.add_unredirected_header(HTTP_HEADER.CONTENT_LENGTH, "%d" % len(data))
28
29
sel_host = host
30
if request.has_proxy():
31
sel_host = _urllib.parse.urlsplit(request.get_selector()).netloc
32
33
if not request.has_header(HTTP_HEADER.HOST):
34
request.add_unredirected_header(HTTP_HEADER.HOST, sel_host)
35
for name, value in self.parent.addheaders:
36
name = name.capitalize()
37
if not request.has_header(name):
38
request.add_unredirected_header(name, value)
39
return request
40
41
http_request = _http_request
42
43