* Invoke self-install via PEP517 in the CI
* Add tox envs for building dists via PEP 517
* Add linting dists via tox to GHA
* Upgrade `master` to `develop` in `setup.py`
* Simplify `python_requires` in `setup.py`
* Convert dynamic `setup.py` into static `setup.cfg`
* Build docker from 3.10-alpine
* Bump version to 3.4.0
* Add instructions for how to run dashboard
* Order of menu
* Override dashboard png path until submitted
* Add some doc string for top-level Proxy class. Also some TODOs and warnings regarding PID file overwrite
* Allow HttpProxyBasePlugin implementations to register custom descriptors for read/write events
* Remove hardcoded adblock regex into json config. Update upstream filter to block facebook, not google
* ProxyPoolPlugin and ReverseProxyPlugin must now be updated to use get/read/write descriptor APIs
* Add get/read/write descriptor API for HttpWebServerBasePlugin too
* Surface actual listening port via flags.port
* Update dev guide
* Move plugin_examples/ as proxy.plugin
* Update proxy.plugin ref path in readme
* Remove unnecessary port flag
* Remove plugin_examples from github workflows
* dashboard folder is a npm package not python package anymore
* Plugins can now be tried using Docker image
* Move tests into individual modules too
* Ensure one test class per file
* Fix docker image after refactoring
* Add github actions workflow for building docker image
* Fix image name
* Setup python required for extracting proxy version
* Version will also require deps
* Handle OSError thrown when curl --proxy-cacert flag is invalid
* Add server-cert
* Dockerfile dont need --ipv4 since now its auto-detected and deprecated
* Add make server-cert info
* Add support for HTTPS interception.
1) Start as
proxy.py --ca-key-file ca-key.pem --ca-cert-file ca-cert.pem --ca-signing-key-file ca-signing-key.pem
2) Test using curl
curl -v -L -x proxy.py:8899 --cacert ca-cert.pem https://google.com
Now proxy.py is able to decrypt HTTPS traffic between curl and
google.com. Generated certificates are stored under ~/.proxy.py
directory.
* Add comments for why interception do not work if client is communicating with proxy.py over https
* Fix tests
* Exit with message when trying to https intercept and also serve over https
* lint
* Disable OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_TLSv1, OP_NO_TLSv1_1 when wrapping upstream server socket
* Ensure client.conn.shutdown is called if necessary.
* Add mypy check for plugin_examples.py
* Exception handling when client sends invalid requests
* Verify plugin_examples
* mypy compat
* HttpRequestRejected
* Use pipes instead of queues.
Possible solution for #68
* Handle ConnectionRefusedError
* Close corresponding pipes on shutdown
* Abstract classes for plugins.
* Add github workflows
* Use pytest for github workflow
* Add Windows/Mac workflows
* Use os.matrix
* 3.8 and 3.9 probably dont exists yet
* Do not fail-fast, also python 3.5 seems to be throwing syntax error for typing
* autopep8
* Disable windows-latest workflow which seems to hang
1. MultiCoreDispatcher now dispatches request in round robin fashion.
2. Added Python3 static type hinting
add Google Cloud Run Button
Preserve proxy.py name as otherwise it breaks module system. Just provide a custom service name to fix Google Cloud Run issue
Custom service name for Google Cloud Run.
Specify port in app.json as required by Google Cloud Run
Go cannot unmarshall int :)
Port desc
Looks like PORT cannot be overridden, for now use port 8080 in Dockerfile
Remove cloudrun integration.
While proxy.py runs successfully within the container, gvisor
limitations doesn't allow proxy.py to accept client connections.
Specifically membarrier syscall isn't allowed.
Update README.md