Hackfut Security File Manager
Current Path:
/opt/alt/python37/lib64/python3.7/site-packages/aiohttp
opt
/
alt
/
python37
/
lib64
/
python3.7
/
site-packages
/
aiohttp
/
📁
..
📁
.hash
📄
__init__.py
(6.71 KB)
📁
__pycache__
📄
_cparser.pxd
(4.88 KB)
📄
_find_header.c
(183.17 KB)
📄
_find_header.h
(170 B)
📄
_find_header.pxd
(68 B)
📄
_headers.pxi
(1.96 KB)
📄
_helpers.c
(207.99 KB)
📄
_helpers.cpython-37m-x86_64-linux-gnu.so
(190.32 KB)
📄
_helpers.pyi
(202 B)
📄
_helpers.pyx
(1.02 KB)
📄
_http_parser.c
(955.26 KB)
📄
_http_parser.cpython-37m-x86_64-linux-gnu.so
(1.38 MB)
📄
_http_parser.pyx
(25.95 KB)
📄
_http_writer.c
(216.08 KB)
📄
_http_writer.cpython-37m-x86_64-linux-gnu.so
(202.37 KB)
📄
_http_writer.pyx
(4.47 KB)
📄
_websocket.c
(135.18 KB)
📄
_websocket.cpython-37m-x86_64-linux-gnu.so
(91.18 KB)
📄
_websocket.pyx
(1.52 KB)
📄
abc.py
(5.38 KB)
📄
base_protocol.py
(2.64 KB)
📄
client.py
(43.87 KB)
📄
client_exceptions.py
(9.06 KB)
📄
client_proto.py
(8 KB)
📄
client_reqrep.py
(36.02 KB)
📄
client_ws.py
(10.29 KB)
📄
connector.py
(49.66 KB)
📄
cookiejar.py
(13.25 KB)
📄
formdata.py
(5.98 KB)
📄
hdrs.py
(4.61 KB)
📄
helpers.py
(25.63 KB)
📄
http.py
(1.78 KB)
📄
http_exceptions.py
(2.53 KB)
📄
http_parser.py
(31.83 KB)
📄
http_websocket.py
(24.76 KB)
📄
http_writer.py
(5.84 KB)
📄
locks.py
(1.13 KB)
📄
log.py
(325 B)
📄
multipart.py
(31.68 KB)
📄
payload.py
(13.38 KB)
📄
payload_streamer.py
(2.06 KB)
📄
py.typed
(7 B)
📄
pytest_plugin.py
(11.5 KB)
📄
resolver.py
(4.97 KB)
📄
streams.py
(20.35 KB)
📄
tcp_helpers.py
(962 B)
📄
test_utils.py
(20.72 KB)
📄
tracing.py
(14.95 KB)
📄
typedefs.py
(1.72 KB)
📄
web.py
(17.51 KB)
📄
web_app.py
(16.86 KB)
📄
web_exceptions.py
(9.87 KB)
📄
web_fileresponse.py
(10.53 KB)
📄
web_log.py
(7.39 KB)
📄
web_middlewares.py
(4.04 KB)
📄
web_protocol.py
(22.02 KB)
📄
web_request.py
(27.23 KB)
📄
web_response.py
(26.92 KB)
📄
web_routedef.py
(5.9 KB)
📄
web_runner.py
(10.93 KB)
📄
web_server.py
(2.01 KB)
📄
web_urldispatcher.py
(38.62 KB)
📄
web_ws.py
(16.85 KB)
📄
worker.py
(8.57 KB)
Editing: _http_writer.pyx
from cpython.bytes cimport PyBytes_FromStringAndSize from cpython.exc cimport PyErr_NoMemory from cpython.mem cimport PyMem_Free, PyMem_Malloc, PyMem_Realloc from cpython.object cimport PyObject_Str from libc.stdint cimport uint8_t, uint64_t from libc.string cimport memcpy from multidict import istr DEF BUF_SIZE = 16 * 1024 # 16KiB cdef char BUFFER[BUF_SIZE] cdef object _istr = istr # ----------------- writer --------------------------- cdef struct Writer: char *buf Py_ssize_t size Py_ssize_t pos cdef inline void _init_writer(Writer* writer): writer.buf = &BUFFER[0] writer.size = BUF_SIZE writer.pos = 0 cdef inline void _release_writer(Writer* writer): if writer.buf != BUFFER: PyMem_Free(writer.buf) cdef inline int _write_byte(Writer* writer, uint8_t ch): cdef char * buf cdef Py_ssize_t size if writer.pos == writer.size: # reallocate size = writer.size + BUF_SIZE if writer.buf == BUFFER: buf = <char*>PyMem_Malloc(size) if buf == NULL: PyErr_NoMemory() return -1 memcpy(buf, writer.buf, writer.size) else: buf = <char*>PyMem_Realloc(writer.buf, size) if buf == NULL: PyErr_NoMemory() return -1 writer.buf = buf writer.size = size writer.buf[writer.pos] = <char>ch writer.pos += 1 return 0 cdef inline int _write_utf8(Writer* writer, Py_UCS4 symbol): cdef uint64_t utf = <uint64_t> symbol if utf < 0x80: return _write_byte(writer, <uint8_t>utf) elif utf < 0x800: if _write_byte(writer, <uint8_t>(0xc0 | (utf >> 6))) < 0: return -1 return _write_byte(writer, <uint8_t>(0x80 | (utf & 0x3f))) elif 0xD800 <= utf <= 0xDFFF: # surogate pair, ignored return 0 elif utf < 0x10000: if _write_byte(writer, <uint8_t>(0xe0 | (utf >> 12))) < 0: return -1 if _write_byte(writer, <uint8_t>(0x80 | ((utf >> 6) & 0x3f))) < 0: return -1 return _write_byte(writer, <uint8_t>(0x80 | (utf & 0x3f))) elif utf > 0x10FFFF: # symbol is too large return 0 else: if _write_byte(writer, <uint8_t>(0xf0 | (utf >> 18))) < 0: return -1 if _write_byte(writer, <uint8_t>(0x80 | ((utf >> 12) & 0x3f))) < 0: return -1 if _write_byte(writer, <uint8_t>(0x80 | ((utf >> 6) & 0x3f))) < 0: return -1 return _write_byte(writer, <uint8_t>(0x80 | (utf & 0x3f))) cdef inline int _write_str(Writer* writer, str s): cdef Py_UCS4 ch for ch in s: if _write_utf8(writer, ch) < 0: return -1 # --------------- _serialize_headers ---------------------- cdef str to_str(object s): typ = type(s) if typ is str: return <str>s elif typ is _istr: return PyObject_Str(s) elif not isinstance(s, str): raise TypeError("Cannot serialize non-str key {!r}".format(s)) else: return str(s) cdef void _safe_header(str string) except *: if "\r" in string or "\n" in string: raise ValueError( "Newline or carriage return character detected in HTTP status message or " "header. This is a potential security issue." ) def _serialize_headers(str status_line, headers): cdef Writer writer cdef object key cdef object val cdef bytes ret _init_writer(&writer) for key, val in headers.items(): _safe_header(to_str(key)) _safe_header(to_str(val)) try: if _write_str(&writer, status_line) < 0: raise if _write_byte(&writer, b'\r') < 0: raise if _write_byte(&writer, b'\n') < 0: raise for key, val in headers.items(): if _write_str(&writer, to_str(key)) < 0: raise if _write_byte(&writer, b':') < 0: raise if _write_byte(&writer, b' ') < 0: raise if _write_str(&writer, to_str(val)) < 0: raise if _write_byte(&writer, b'\r') < 0: raise if _write_byte(&writer, b'\n') < 0: raise if _write_byte(&writer, b'\r') < 0: raise if _write_byte(&writer, b'\n') < 0: raise return PyBytes_FromStringAndSize(writer.buf, writer.pos) finally: _release_writer(&writer)
Upload File
Create Folder