Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxy Plugins #62

Merged
merged 6 commits into from
Aug 24, 2019
Merged

Proxy Plugins #62

merged 6 commits into from
Aug 24, 2019

Conversation

abhinavsingh
Copy link
Owner

@abhinavsingh abhinavsingh commented Aug 20, 2019

Targeted towards feature requests in #28 and #30 . First draft of Proxy plugins.

Add plugins to proxy.py for programmable proxy.

As requested in #30 and
other mediums, introduce proxy.py plugins.  plugin_examples.py provides
examples for how to use them.

Add capability for plugins to simply ProxyRejectRequest.
Non-blocking accepts helps specially in tests to abort the test server
gracefully.

Add ipv6 tcp server client tests

Add tests for TcpServer and HttpServer

Add HttpProxyConfig object to avoid unnecessary arg passing.
1. Rename HttpServer to MultiCoreRequestDispatcher, there wasn't
anything Http about that class, all Http implementation happens in
HttpProxy class
2. PY 2.7 DEPRECATION ERRORS
3. Add --log-format cli option
4. Remove _ from HttpProxy private methods, refactor it's core for
clarify (remove redundant close() and other details)
Fix tests for py2.7 which require external mock module

Disable tests which require listening on sockets for Travis.

Make travis make free

set TESTING_ON_TRAVIS=1 for windows
Load plugins during test execution

Further decouple proxy/webserver logic outside of HttpProtocolHandler.

Per connection plugin instances to avoid locks

Handle BrokenPipeError and teardown if read_from_descriptors return True
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant