(conn)
| 227 | |
| 228 | @staticmethod |
| 229 | def _connReadProxy(conn): |
| 230 | retVal = b"" |
| 231 | |
| 232 | if not kb.dnsMode and conn: |
| 233 | headers = conn.info() |
| 234 | if kb.pageCompress and headers and hasattr(headers, "getheader") and (headers.getheader(HTTP_HEADER.CONTENT_ENCODING, "").lower() in ("gzip", "deflate") or "text" not in headers.getheader(HTTP_HEADER.CONTENT_TYPE, "").lower()): |
| 235 | retVal = conn.read(MAX_CONNECTION_TOTAL_SIZE) |
| 236 | if len(retVal) == MAX_CONNECTION_TOTAL_SIZE: |
| 237 | warnMsg = "large compressed response detected. Disabling compression" |
| 238 | singleTimeWarnMessage(warnMsg) |
| 239 | kb.pageCompress = False |
| 240 | raise SqlmapCompressionException |
| 241 | else: |
| 242 | while True: |
| 243 | if not conn: |
| 244 | break |
| 245 | else: |
| 246 | try: |
| 247 | part = conn.read(MAX_CONNECTION_READ_SIZE) |
| 248 | except AssertionError: |
| 249 | part = b"" |
| 250 | |
| 251 | if len(part) == MAX_CONNECTION_READ_SIZE: |
| 252 | warnMsg = "large response detected. This could take a while" |
| 253 | singleTimeWarnMessage(warnMsg) |
| 254 | part = re.sub(getBytes(r"(?si)%s.+?%s" % (kb.chars.stop, kb.chars.start)), getBytes("%s%s%s" % (kb.chars.stop, LARGE_READ_TRIM_MARKER, kb.chars.start)), part) |
| 255 | retVal += part |
| 256 | else: |
| 257 | retVal += part |
| 258 | break |
| 259 | |
| 260 | if len(retVal) > MAX_CONNECTION_TOTAL_SIZE: |
| 261 | warnMsg = "too large response detected. Automatically trimming it" |
| 262 | singleTimeWarnMessage(warnMsg) |
| 263 | break |
| 264 | |
| 265 | if conf.yuge: |
| 266 | retVal = YUGE_FACTOR * retVal |
| 267 | |
| 268 | return retVal |
| 269 | |
| 270 | @staticmethod |
| 271 | def getPage(**kwargs): |
no test coverage detected