* Use only a single acceptor in tests to avoid Windows pitfalls
* Revert `timeout=1`, likely single acceptor on Windows during tests on GHA is the escape route
* Add a context manager test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* `IS_WINDOWS` must also be True for cygwin environments. Addresses #1169
* Give an acceptor join timeout of 10 seconds instead of None
* Reduce timeout to just 1 sec
* Install necessary types (requests is translative dep)
* Remove conflicting types
* Give precommit the necessary type
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add plugin tests, responses notebook and enhancements to `build_http_packet`
* Add js code snip for ws example
* Fix tests
* ignore all ipynb from codespell
* ignore all ipynb from codespell
* Fix tests and doc spell
* Remove usage of `tobytes`
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix chunk parser
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Lint fixes
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Avoid using `tobytes` where possible
* `send` accepts `Union[memoryview, bytes]` now
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add a response generation jupyter notebook
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Make codespell happy
* precommit codespell exclude
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Start of post encryption tests
* Assertion on post encryption callback
* Add `--cache-requests` flag
* Clean up `on_client_data` API as we no longer have a chain within core http protocol handler
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix flake8 warnings
* Fix `inconsistent-return-statements`
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Pre-release cleanups
* Add listener pool test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add multi listener test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Move default cache directory within `proxy.py` instance data directory
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add `CacheByContentTypePlugin` skeleton and remove unnecessary mixin
* Fix startup issues after removal of mixin
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* .
* Fix broken mock
* doc fix
* doc
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Initial commit
* Parse socks4 packet
* Lint check
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix lint issues
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add handler test skeleton
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Update acceptor to accept work from multiple ports
* import order
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix acceptor tests
* Tweak
* fix tests
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Convert `--port` to list of integers
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Prepare for multiport listener
* Multi listeners, but will fail in theory as no port override is currently performed
* Separate `listener` module
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update flags in readme
* Fix imports in listener test
* Fix flag parsing for `port` and `ports`
* Fix tests
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Move reverse proxy core within core lib
* Fix main test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix doc and lint
* Fix lint
* Top level category for reverse plugin
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Handle `SIGINFO`. Try `kill -s INFO <pid>`.
Also remove dirty hack added in flags to incorporate `--basic-auth`
flag. Add `__pycache__` to ignore list. Disable http proxy
during acceptor benchmark.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* not on windows
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* no cover
* # pylint: disable=E1101
* Curl retry on error and check_output 2 minute timeout
* check output timeout None
* Update `faulthandler_timeout` to 2 minutes
* Disable `test_circular_imports`, `isort` integration now works
* Fix curl flags
* Revert back to older flags
* SIGINFO attribute might not even exist
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* isort `proxy.py` main class
* isort init and main
* isort common
* pre-commit fix
* isort dashboard and testing
* isort plugins
* isort core
* Only sort top level http py files
* isort http exception and websocket
* Remove proxy auth plugin from proxy package exports and force discover `PLUGIN_PROXY_AUTH` flags
* isort parser and web server
* no setattr
* isort all
* Enable pre-commit isort hook
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Raise `HttpProtocolException` if request line scheme do not match `DEFAULT_ALLOWED_URL_SCHEMES`
* ignore WPS329
* Fix tests
* Pin to 4.3.2
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Test coverage for exception handling
* type ignore
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Enable remote threadless and threaded integration test for windows
* Run only threaded on windows
* Use powershell for execution of integration script on Windows
* Update test_integration.py
* Update test_integration.py
Co-authored-by: sowmyasudhasingh <sowmyasudhasingh@gmail.com>
Co-authored-by: Abhinav Singh <126065+abhinavsingh@users.noreply.github.com>
* Add support in `Url` to parse all types of schemes
* .
* Guard handler against http looking protocol but not web or proxy requests
* Fix condition for web server protocol detection
* doc happy
* Update flags and type check imports only
* Turn usual suspects to warnings, not error
* Add `HttpClientConnection` skeleton
* Fix doc build
* Update references in http tests
* Make `work` core agnostic to work object construction by adding an abstract static method to `Work` interface called `create`
* Make mypy happy
* Fix tests broken due to change in how work objects are now constructed
* Doc ko bhi happy karo
* Move all TCP server related flags within `tcp_server.py` and also move the encryption functionality within TCP base server
* Templatize `BaseTcpServerHandler` which now expects a client connection object bound to `TcpClientConnection`. This will allow for custom `HttpClientConnection` object in future to be used by `HttpProtocolHandler`
* Pass necessary flags to allow self-signed certificates
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix https integration tests
* Affected by https://github.com/abhinavsingh/proxy.py/issues/994
* Fix docs
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add TLS interception integration tests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix CI
* unused
* Well 3.9 just worked locally
* Dispatching empty byte to client results in OSError for Python < 3.10
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Uncomment old integration tests
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Pass separate `--ca-cert-dir` flag for parallel TLS interception tests
* Temp disable `test_modify_post_response_integration`
* mock ca cert dir
* Is threaded an issue with TLS interception?
* Disable modify chunk response for python < 3.10
* Disable modify chunk response for python < 3.10
* Add TLS interception integration tests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fixture to gen certificate once for the `test_integration` module
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use https endpoints in tls interception tests
* Fix modify post data integration test
* Only start 3 acceptor & 3 workers during integration run
* disable chunk response
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* work module
* Fix imports
* String based typing for multiprocessing.synchronize
* Fix `test_accepts_client_from_server_socket`
* Move staticmethod outside of threadless pool class
* Fix doc build
* Fix test mock
* mp grouped together
* pylint happy
* import only for type checking
* doc build
* wrong import order
* Refactor tests into submodules
* isort tests
* Add malicious request headers test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Handle invalid request parsing exception when raised, log the bytes for later inspection
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Decouple transport framework from dashboard plugin
* Move `InspectTrafficPlugin` within `http.inspector` module
* Avoid exporting plugins within `__init__.py` files
* Use `/transport/` prefix to avoid #945 conflict issue
* Add todo
* Add `--port-file` flag
* Use `--port-file` flag for integration tests using `get_available_port`
* Use temp dir
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix `base_klass` variable related lint issues
* Fix main tests
* Fix integration
* Use timeout when terminating proc
* Skip integration on win instead of xmark
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add `Descriptors` type
* Add a `DescriptorsHandlerMixin` class used throughout the http framework
* Remove dependency upon `HasFileno` ie `typing_extension` too
* Define `SelectableEvents` type
* Fix doc
* Blank line
* Remove dep on `typing-extensions`
* Discover base plugin class
* await on now async handlers
* Add `TlsInterception` acceptance test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Generate CA cert if not available
* Fix lint and tests
* Fix args
* Remove acceptance tests for now
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Refactored TlsParser based upon work done in #748
* Add missing `tls_server_hello.data`, thanks to @JerryKwan
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Pass `check.py`
* Run check.py locally
* Fix lint errors
* Fix indentation issue
* Ignore linkcheck for cloudflare links, GHA is getting a 403 reply, while the link actually works
* Fix lint
* codespell skip
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Add `protocols` abstract static method to `HttpProtocolHandlerBase` which defines which HTTP specification is followed by the core plugin
* lint
* Fix tests
* Lint fixes
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Hook connection pool lifecycle within threadless
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Fix test
* Fix spell
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Define work lifecycle events for pool
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Use isinstance
* Use mocker fixture to pass CI on 3.6 and 3.7
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>