Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
5f91b17
Always update latest tag for docker releases
abhinavsingh Oct 10, 2019
a19da5d
Update issue templates (#123)
abhinavsingh Oct 10, 2019
bb7f5a6
Invoke HttpWebServerBasePlugin.handle_request for each request in HTT…
abhinavsingh Oct 11, 2019
3b5e2cc
Reduce docker image size
abhinavsingh Oct 11, 2019
2840afc
Ensure teardown is always accompanied with Connection: close header
abhinavsingh Oct 11, 2019
6455a34
Invoke proxy plugin handle_request for each request in HTTP/1.1 pipel…
abhinavsingh Oct 13, 2019
dc560be
Add --timeout flag with default value of 10 second. (#129)
abhinavsingh Oct 13, 2019
9d46cba
Test plugin examples (#130)
abhinavsingh Oct 13, 2019
a1bb659
Threadless execution using coroutines (#134)
abhinavsingh Oct 16, 2019
69445a8
Remove pip upgrade for windows which seems to be failing on travis (#…
abhinavsingh Oct 16, 2019
c77f8b5
Add pipeline response parsing tests (#137)
abhinavsingh Oct 16, 2019
ca1d1e7
os.close only for threadless (#138)
abhinavsingh Oct 16, 2019
5731528
Update pytest from 5.2.1 to 5.2.2 (#142)
pyup-bot Oct 27, 2019
5db42b3
Update setuptools from 41.4.0 to 41.5.0 (#145)
pyup-bot Oct 28, 2019
52275f0
Update typing-extensions from 3.7.4 to 3.7.4.1 (#147)
pyup-bot Oct 28, 2019
e7e9e14
Update flake8 from 3.7.8 to 3.7.9 (#148)
pyup-bot Oct 28, 2019
521a49f
Update setuptools from 41.5.0 to 41.5.1 (#149)
pyup-bot Oct 28, 2019
3b2b2e5
Update py-spy from 0.2.2 to 0.3.0 (#144)
pyup-bot Oct 28, 2019
e145482
Proxy.py Dashboard (#141)
abhinavsingh Oct 28, 2019
1ce16b9
Update mypy==0.740 (#151)
abhinavsingh Oct 28, 2019
0e2194d
Update README.md (#152)
abhinavsingh Oct 28, 2019
75a818d
Update setuptools from 41.5.1 to 41.6.0 (#153)
pyup-bot Oct 30, 2019
3aa1dc2
Test refactor + Docker image CI (#154)
abhinavsingh Oct 30, 2019
183d03b
Separate packages for Dashboard (#157)
abhinavsingh Nov 6, 2019
93d8a55
Add non-blocking embedded mode feature (#159)
abhinavsingh Nov 8, 2019
0cc4e5e
Add private / public key generation utils which comply with new requi…
abhinavsingh Nov 12, 2019
ee7a69b
Give structure to dashboard app (#163)
abhinavsingh Nov 12, 2019
d20cf1c
Move traffic_control outside of core plugin, it maps to several plugi…
abhinavsingh Nov 12, 2019
7ca7c2d
Introduce sendMessage websocket api which allows for callbacks (#166)
abhinavsingh Nov 12, 2019
3d65366
Add proxy.main.TestCase for unit testing Python application with prox…
abhinavsingh Nov 12, 2019
e42cfef
Consistent dashboard look and feel across plugins (#169)
abhinavsingh Nov 12, 2019
5cc9f2d
Dashboard Inspect traffic tab + devtools (#170)
abhinavsingh Nov 13, 2019
a46e73f
Load devtools within iframe
abhinavsingh Nov 13, 2019
7561967
Load devtools within iframe (#171)
abhinavsingh Nov 13, 2019
1b0c2f8
Merge branch 'develop' of github.com:abhinavsingh/proxy.py into develop
abhinavsingh Nov 13, 2019
c943dd7
Allow to pass flags as kwargs too in embed mode (#172)
abhinavsingh Nov 14, 2019
439d58f
Devtools Protocol (#174)
abhinavsingh Nov 15, 2019
148c260
Move dashboard backend within proxy module, now ships via same pip pa…
abhinavsingh Nov 15, 2019
131e936
Move plugin_examples/ as proxy.plugin and update readme (#179)
abhinavsingh Nov 15, 2019
bb7006b
Move benchmark module within proxy (#181)
abhinavsingh Nov 16, 2019
6aed912
Update pytest from 5.2.3 to 5.2.4 (#180)
pyup-bot Nov 16, 2019
ad42e0d
Doc & Banner update to match GitHub (#182)
abhinavsingh Nov 19, 2019
5ead1ef
Update twine from 2.0.0 to 3.0.0 (#183)
pyup-bot Nov 19, 2019
dace059
Update pytest from 5.2.4 to 5.3.0 (#186)
pyup-bot Nov 20, 2019
0c4e1cb
Testing support improvements (#185)
abhinavsingh Nov 22, 2019
e03cae3
Initialize Menubar (#188)
abhinavsingh Nov 22, 2019
81e2c89
Update twine from 3.0.0 to 3.1.0 (#190)
pyup-bot Nov 24, 2019
4fa4b99
Update setuptools from 41.6.0 to 42.0.0 (#191)
pyup-bot Nov 24, 2019
9767010
Memory optimizations (#189)
abhinavsingh Nov 24, 2019
f2b9a63
Update setuptools from 42.0.0 to 42.0.1 (#193)
pyup-bot Nov 25, 2019
093e852
Make connection queue / recv work with memoryview to avoid copies (#192)
abhinavsingh Nov 27, 2019
35a88c0
Cleanup (#194)
abhinavsingh Nov 27, 2019
c9ce446
Add py3.8 support and bump node to 12.x (#195)
abhinavsingh Nov 27, 2019
ae92adc
autopep8 (#196)
abhinavsingh Nov 27, 2019
c6da332
Update pytest from 5.3.0 to 5.3.1 (#197)
pyup-bot Nov 27, 2019
81bf006
Update twine from 3.1.0 to 3.1.1 (#200)
pyup-bot Nov 28, 2019
b88d480
Add reverse proxy example (#201)
abhinavsingh Nov 30, 2019
6f4fe34
Add proxy over ssh tunnel functionality (#198)
abhinavsingh Nov 30, 2019
dc1d5b6
update mypy to 0.750 (#204)
abhinavsingh Dec 1, 2019
654696d
Test Core Eventing (#205)
abhinavsingh Dec 1, 2019
bfbbc5a
Test Dashboard backend (#206)
abhinavsingh Dec 1, 2019
35ce5fe
Update setuptools from 42.0.1 to 42.0.2 (#207)
pyup-bot Dec 1, 2019
3bd61e0
Add tox.ini (#208)
abhinavsingh Dec 1, 2019
4713ad6
Homebrew formula (#209)
abhinavsingh Dec 2, 2019
54d2a1c
Packaging (#210)
abhinavsingh Dec 2, 2019
fff914e
Add support for regex based routing. Fixes #203 (#211)
abhinavsingh Dec 2, 2019
6419225
Remove public folder references (#212)
abhinavsingh Dec 2, 2019
6137fd6
Refactor (#213)
abhinavsingh Dec 2, 2019
419026d
Build docker of Python 3.8 (#214)
abhinavsingh Dec 2, 2019
7f9ffad
Move homebrew under helper (#215)
abhinavsingh Dec 2, 2019
5e71437
Handle ETIMEDOUT, EHOSTUNREACH, ECONNRESET on no internet (#216)
abhinavsingh Dec 2, 2019
8971f82
Enable mccabe (#217)
abhinavsingh Dec 2, 2019
cc7e4f5
No need of per day or week stats (#218)
abhinavsingh Dec 2, 2019
269484d
Make HTTP handler constructor free of socket file number (#219)
abhinavsingh Dec 2, 2019
ccaf868
Response parser now reaches COMPLETE even when no body is expected (#…
abhinavsingh Dec 3, 2019
169d490
Update tox from 3.14.1 to 3.14.2 (#221)
pyup-bot Dec 3, 2019
2f21dea
Update paramiko from 2.6.0 to 2.7.0 (#225)
pyup-bot Dec 4, 2019
e9dfc53
Update paramiko from 2.7.0 to 2.7.1 (#227)
pyup-bot Dec 10, 2019
ba5c84d
Proxy Pool Plugin (#228)
abhinavsingh Dec 10, 2019
59325ae
Update pytest from 5.3.1 to 5.3.2 (#229)
pyup-bot Dec 14, 2019
fee3af9
Update coverage from 4.5.4 to 5.0 (#230)
pyup-bot Dec 14, 2019
71a7471
Update mypy from 0.750 to 0.760 (#232)
pyup-bot Dec 18, 2019
fdf0cc5
Update mypy from 0.760 to 0.761 (#235)
pyup-bot Dec 20, 2019
625dc4d
Move manager initialization outside of top level scope. Fixes #233 (…
abhinavsingh Dec 20, 2019
c6c0939
Share lock to acceptors via pool (#238)
abhinavsingh Dec 20, 2019
63e6d22
Optionally initialize manager in main thread and use the same for Eve…
abhinavsingh Dec 21, 2019
7f9385e
Highlight language syntax (#240)
abhinavsingh Dec 22, 2019
8babac3
Update coverage from 5.0 to 5.0.1 (#241)
pyup-bot Dec 23, 2019
e84c212
Integration testing (#243)
abhinavsingh Dec 26, 2019
2d0c820
Merge branch 'master' into develop
abhinavsingh Dec 26, 2019
a7d4d45
GitHub workflow badge (#244)
abhinavsingh Dec 26, 2019
3cba430
Merge branch 'develop' of github.com:abhinavsingh/proxy.py into develop
abhinavsingh Dec 26, 2019
01652f9
Update brew version to 2.0.0 (#245)
abhinavsingh Dec 26, 2019
22c537f
Create CODE_OF_CONDUCT.md (#246)
abhinavsingh Dec 26, 2019
67ab173
Update tox from 3.14.2 to 3.14.3 (#248)
pyup-bot Dec 29, 2019
0ac6ee9
Update setuptools from 42.0.2 to 43.0.0 (#249)
pyup-bot Jan 2, 2020
90af892
Update setuptools from 43.0.0 to 44.0.0 (#250)
pyup-bot Jan 2, 2020
067664e
Update coverage from 5.0.1 to 5.0.2 (#252)
pyup-bot Jan 7, 2020
ac29e34
Add CLI usage for pki.py and update Makefile (#254)
abhinavsingh Jan 7, 2020
ee4e4ce
Add py.typed marker, add version checker, remove deprecated methods (…
abhinavsingh Jan 7, 2020
b2a1604
Invoke github actions for all pull requests (#259)
abhinavsingh Jan 7, 2020
6740b28
Refactor into event submodule (#257)
abhinavsingh Jan 7, 2020
f75e21c
Update setuptools from 44.0.0 to 45.0.0 (#262)
pyup-bot Jan 12, 2020
87a54a0
Fixes #267 (#277)
abhinavsingh Jan 31, 2020
434e250
Add urlparse fix for Python 3.6.x . Deprecate support for Python 3.5…
abhinavsingh Jan 31, 2020
7107e6c
Update pytest from 5.3.2 to 5.3.5 (#275)
pyup-bot Jan 31, 2020
c93b80b
Update wheel from 0.33.6 to 0.34.2 (#276)
pyup-bot Jan 31, 2020
cc896dd
Update autopep8 from 1.4.4 to 1.5 (#279)
pyup-bot Jan 31, 2020
fce1b61
Update setuptools from 45.0.0 to 45.1.0 (#280)
pyup-bot Jan 31, 2020
44f2984
Update coverage from 5.0.2 to 5.0.3 (#281)
pyup-bot Jan 31, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test-brew.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Proxy.py Brew

on: [push]
on: [push, pull_request]

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-dashboard.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Proxy.py Dashboard

on: [push]
on: [push, pull_request]

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-docker.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Proxy.py Docker

on: [push]
on: [push, pull_request]

jobs:
build:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-library.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Proxy.py Library

on: [push]
on: [push, pull_request]

jobs:
build:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ proxy.py.iml
*.csr
*.crt
*.key
*.pem
venv*

cover
Expand Down
76 changes: 76 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at mailsforabhinav@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
35 changes: 26 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ CA_CERT_FILE_PATH := ca-cert.pem
CA_SIGNING_KEY_FILE_PATH := ca-signing-key.pem

.PHONY: all https-certificates ca-certificates autopep8 devtools
.PHONY: lib-clean lib-test lib-package lib-release-test lib-release lib-coverage lib-lint lib-profile
.PHONY: lib-version lib-clean lib-test lib-package lib-coverage lib-lint
.PHONY: lib-release-test lib-release lib-profile
.PHONY: container container-run container-release
.PHONY: dashboard dashboard-clean

all: lib-clean lib-test
all: lib-test

devtools:
pushd dashboard && npm run devtools && popd
Expand All @@ -30,18 +31,34 @@ autopep8:

https-certificates:
# Generate server key
openssl genrsa -out $(HTTPS_KEY_FILE_PATH) 2048
python -m proxy.common.pki gen_private_key \
--private-key-path $(HTTPS_KEY_FILE_PATH)
python -m proxy.common.pki remove_passphrase \
--private-key-path $(HTTPS_KEY_FILE_PATH)
# Generate server certificate
openssl req -new -x509 -days 3650 -key $(HTTPS_KEY_FILE_PATH) -out $(HTTPS_CERT_FILE_PATH)
python -m proxy.common.pki gen_public_key \
--private-key-path $(HTTPS_KEY_FILE_PATH) \
--public-key-path $(HTTPS_CERT_FILE_PATH)

ca-certificates:
# Generate CA key
openssl genrsa -out $(CA_KEY_FILE_PATH) 2048
python -m proxy.common.pki gen_private_key \
--private-key-path $(CA_KEY_FILE_PATH)
python -m proxy.common.pki remove_passphrase \
--private-key-path $(CA_KEY_FILE_PATH)
# Generate CA certificate
openssl req -new -x509 -days 3650 -key $(CA_KEY_FILE_PATH) -out $(CA_CERT_FILE_PATH)
python -m proxy.common.pki gen_public_key \
--private-key-path $(CA_KEY_FILE_PATH) \
--public-key-path $(CA_CERT_FILE_PATH)
# Generate key that will be used to generate domain certificates on the fly
# Generated certificates are then signed with CA certificate / key generated above
openssl genrsa -out $(CA_SIGNING_KEY_FILE_PATH) 2048
python -m proxy.common.pki gen_private_key \
--private-key-path $(CA_SIGNING_KEY_FILE_PATH)
python -m proxy.common.pki remove_passphrase \
--private-key-path $(CA_SIGNING_KEY_FILE_PATH)

lib-version:
python version-check.py

lib-clean:
find . -name '*.pyc' -exec rm -f {} +
Expand All @@ -59,10 +76,10 @@ lib-lint:
flake8 --ignore=W504 --max-line-length=127 --max-complexity=19 proxy/ tests/ setup.py
mypy --strict --ignore-missing-imports proxy/ tests/ setup.py

lib-test: lib-lint
lib-test: lib-clean lib-version lib-lint
pytest -v tests/

lib-package: lib-clean
lib-package: lib-clean lib-version
python setup.py sdist

lib-release-test: lib-package
Expand Down
89 changes: 71 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
[![Proxy.Py](https://raw.githubusercontent.com/abhinavsingh/proxy.py/develop/ProxyPy.png)](https://github.com/abhinavsingh/proxy.py)

[![License](https://img.shields.io/github/license/abhinavsingh/proxy.py.svg)](https://opensource.org/licenses/BSD-3-Clause)
[![Build Status](https://travis-ci.org/abhinavsingh/proxy.py.svg?branch=develop)](https://travis-ci.org/abhinavsingh/proxy.py/)
[![No Dependencies](https://img.shields.io/static/v1?label=dependencies&message=none&color=green)](https://github.com/abhinavsingh/proxy.py)
[![PyPi Monthly](https://img.shields.io/pypi/dm/proxy.py.svg?color=green)](https://pypi.org/project/proxy.py/)
[![Docker Pulls](https://img.shields.io/docker/pulls/abhinavsingh/proxy.py?color=green)](https://hub.docker.com/r/abhinavsingh/proxy.py)
[![No Dependencies](https://img.shields.io/static/v1?label=dependencies&message=none&color=green)](https://github.com/abhinavsingh/proxy.py)

[![Proxy.py Library Build Status](https://github.com/abhinavsingh/proxy.py/workflows/Proxy.py%20Library/badge.svg)](https://github.com/abhinavsingh/proxy.py/actions)
[![Proxy.py Docker Build Status](https://github.com/abhinavsingh/proxy.py/workflows/Proxy.py%20Docker/badge.svg)](https://github.com/abhinavsingh/proxy.py/actions)
[![Proxy.py Docker Build Status](https://github.com/abhinavsingh/proxy.py/workflows/Proxy.py%20Dashboard/badge.svg)](https://github.com/abhinavsingh/proxy.py/actions)
[![Proxy.py Docker Build Status](https://github.com/abhinavsingh/proxy.py/workflows/Proxy.py%20Brew/badge.svg)](https://github.com/abhinavsingh/proxy.py/actions)
[![Coverage](https://codecov.io/gh/abhinavsingh/proxy.py/branch/develop/graph/badge.svg)](https://codecov.io/gh/abhinavsingh/proxy.py)

[![Tested With MacOS, Ubuntu, Windows, Android, Android Emulator, iOS, iOS Simulator](https://img.shields.io/static/v1?label=tested%20with&message=mac%20OS%20%F0%9F%92%BB%20%7C%20Ubuntu%20%F0%9F%96%A5%20%7C%20Windows%20%F0%9F%92%BB&color=brightgreen)](https://abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/)
Expand Down Expand Up @@ -84,10 +88,11 @@ Table of Contents
* [Http](#http-client)
* [build_http_request](#build_http_request)
* [build_http_response](#build_http_response)
* [Websocket](#websocket)
* [WebsocketFrame](#websocketframe)
* [WebsocketClient](#websocketclient)
* [Public Key Infrastructure](#pki)
* [API Usage](#api-usage)
* [CLI Usage](#cli-usage)
* [Frequently Asked Questions](#frequently-asked-questions)
* [Threads vs Threadless](#threads-vs-threadless)
* [SyntaxError: invalid syntax](#syntaxerror-invalid-syntax)
* [Unable to load plugins](#unable-to-load-plugins)
* [Unable to connect with proxy.py from remote host](#unable-to-connect-with-proxypy-from-remote-host)
Expand Down Expand Up @@ -1157,7 +1162,7 @@ Utilities

## TCP Sockets

#### new_socket_connection
### new_socket_connection

Attempts to create an IPv4 connection, then IPv6 and
finally a dual stack connection to provided address.
Expand All @@ -1168,7 +1173,7 @@ finally a dual stack connection to provided address.
>>> conn.close()
```

#### socket_connection
### socket_connection

`socket_connection` is a convenient decorator + context manager
around `new_socket_connection` which ensures `conn.close` is implicit.
Expand All @@ -1190,17 +1195,17 @@ As a decorator:

## Http Client

#### build_http_request
### build_http_request

##### Generate HTTP GET request
#### Generate HTTP GET request

```python
>>> build_http_request(b'GET', b'/')
b'GET / HTTP/1.1\r\n\r\n'
>>>
```

##### Generate HTTP GET request with headers
#### Generate HTTP GET request with headers

```python
>>> build_http_request(b'GET', b'/',
Expand All @@ -1209,7 +1214,7 @@ b'GET / HTTP/1.1\r\nConnection: close\r\n\r\n'
>>>
```

##### Generate HTTP POST request with headers and body
#### Generate HTTP POST request with headers and body

```python
>>> import json
Expand All @@ -1219,19 +1224,54 @@ b'GET / HTTP/1.1\r\nConnection: close\r\n\r\n'
b'POST /form HTTP/1.1\r\nContent-type: application/json\r\n\r\n{"email": "hello@world.com"}'
```

#### build_http_response
### build_http_response

TODO

## Websocket
## PKI

#### WebsocketFrame
### API Usage

TODO
#### gen_private_key
#### gen_public_key
#### remove_passphrase
#### gen_csr
#### sign_csr

#### WebsocketClient
See [pki.py](https://github.com/abhinavsingh/proxy.py/blob/develop/proxy/common/pki.py) for
method parameters and [test_pki.py](https://github.com/abhinavsingh/proxy.py/blob/develop/tests/common/test_pki.py)
for usage examples.

TODO
### CLI Usage

Use `proxy.common.pki` module for:

1) Generation of public and private keys
2) Generating CSR requests
3) Signing CSR requests using custom CA.

```bash
python -m proxy.common.pki -h
usage: pki.py [-h] [--password PASSWORD] [--private-key-path PRIVATE_KEY_PATH]
[--public-key-path PUBLIC_KEY_PATH] [--subject SUBJECT]
action

proxy.py v2.1.0 : PKI Utility

positional arguments:
action Valid actions: remove_passphrase, gen_private_key,
gen_public_key, gen_csr, sign_csr

optional arguments:
-h, --help show this help message and exit
--password PASSWORD Password to use for encryption. Default: proxy.py
--private-key-path PRIVATE_KEY_PATH
Private key path
--public-key-path PUBLIC_KEY_PATH
Public key path
--subject SUBJECT Subject to use for public key generation. Default:
/CN=example.com
```

## Internal Documentation

Expand All @@ -1255,6 +1295,19 @@ FILE
Frequently Asked Questions
==========================

## Threads vs Threadless

Pre v2.x, `proxy.py` used to spawn new threads for handling
client requests.

Starting v2.x, `proxy.py` added support for threadless execution of
client requests using `asyncio`.

In future, threadless execution will be the default mode.

Till then if you are interested in trying it out,
start `proxy.py` with `--threadless` flag.

## SyntaxError: invalid syntax

Make sure you are using `Python 3`. Verify the version before running `proxy.py`:
Expand Down Expand Up @@ -1373,7 +1426,7 @@ usage: proxy [-h] [--backlog BACKLOG] [--basic-auth BASIC_AUTH]
[--static-server-dir STATIC_SERVER_DIR] [--threadless]
[--timeout TIMEOUT] [--version]

proxy.py v2.0.0
proxy.py v2.1.0

optional arguments:
-h, --help show this help message and exit
Expand Down
2 changes: 1 addition & 1 deletion helper/homebrew/stable/proxy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class Proxy < Formula
Network monitoring, controls & Application development, testing, debugging."
homepage "https://github.com/abhinavsingh/proxy.py"
url "https://github.com/abhinavsingh/proxy.py/archive/master.zip"
version "1.1.1"
version "2.0.0"

depends_on "python"

Expand Down
Loading