Skip to main content

Python library and CLI for running an HTTP/2 proxy that describes each frame

Project description

tcp-h2-describe

Python library and CLI for running an HTTP/2 proxy that describes each frame

Install

python3 -m pip install --upgrade tcp-h2-describe

Usage

For example, on a machine where there is a local HTTP/2 server running on port 50051:

$ tcp-h2-describe --server-port 50051
Starting tcp-h2-describe proxy server on port 24909
  Proxying server located at localhost:50051
...
$ # OR
$ python -m tcp_h2_describe --server-port 50051
Starting tcp-h2-describe proxy server on port 24909
  Proxying server located at localhost:50051
...

Options also exist to customize the port where the tcp-h2-describe proxy runs as well as the remote server that is being proxied:

$ python -m tcp_h2_describe --help
usage: tcp-h2-describe [-h] [--proxy-port PROXY_PORT]
                       [--server-host SERVER_HOST] [--server-port SERVER_PORT]

Run `tcp-h2-describe` reverse proxy server. This will forward traffic to a
proxy port along to an already running HTTP/2 server. For each HTTP/2 frame
forwarded (either client->server or server->client) a description will be
printed to the console explaining what each byte in the frame means.

optional arguments:
  -h, --help            show this help message and exit
  --proxy-port PROXY_PORT
                        The port that will be used for running the "describe"
                        proxy. (default: 24909)
  --server-host SERVER_HOST
                        The hostname for the server that is being proxied.
                        (default: None)
  --server-port SERVER_PORT
                        The port for the server that is being proxied.
                        (default: 80)

To use directly from Python code

import tcp_h2_describe

proxy_port = 13370
server_port = 50051
tcp_h2_describe.serve_proxy(proxy_port, server_port)

# OR: Spawn a thread to avoid blocking
import threading

server_thread = threading.Thread(
    target=tcp_h2_describe.serve_proxy,
    args=(proxy_port, server_port),
)
server_thread.start()

See example output when proxying an HTTP server and a gRPC server. Additionally, the tcp-h2-describe proxy supports the proxy protocol.

Development

To work on adding a feature or to run the tests, see the DEVELOPMENT doc for more information on how to get started.

License

tcp-h2-describe is made available under the Apache 2.0 License. For more details, see the LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tcp-h2-describe-0.1.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

tcp_h2_describe-0.1.0-py2.py3-none-any.whl (24.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file tcp-h2-describe-0.1.0.tar.gz.

File metadata

  • Download URL: tcp-h2-describe-0.1.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.33.0 CPython/3.7.3

File hashes

Hashes for tcp-h2-describe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2d2e8acbab348d4fc3359b18c9f8e63aee652d68c13dc4547b46c9fcbf7debd7
MD5 1885171d2aa4ca59ffdd43af2268c0be
BLAKE2b-256 643ffc4020b443b72bee4d1a0588dd7a7995df585afeb11c3f0a402f62a1acec

See more details on using hashes here.

File details

Details for the file tcp_h2_describe-0.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: tcp_h2_describe-0.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.33.0 CPython/3.7.3

File hashes

Hashes for tcp_h2_describe-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 635f9652dfa33b823c3e04f5285d318065d9ae49e71cd71556f7112988e235df
MD5 54d575cd76371c7849f6efc8d5d3c6e3
BLAKE2b-256 d562c59a93e978d9ab31205424763b834008fc360616188000520dff4231ddcf

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page