Metadata-Version: 2.4
Name: klan1-pproxy
Version: 3.0.0
Summary: klan1/pproxy fork: HTTP/SOCKS4/SOCKS5/Shadowsocks tunnel proxy, Python 3.9+ compatible.
Home-page: https://github.com/klan1/pproxy
Author: Alejandro Trujillo J.
Author-email: alejo@klan1.com
License: MIT
Keywords: proxy socks http shadowsocks shadowsocksr ssr redirect pf tunnel cipher ssl udp
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Provides-Extra: accelerated
Requires-Dist: pycryptodome>=3.7.2; extra == "accelerated"
Requires-Dist: uvloop>=0.13.0; extra == "accelerated"
Provides-Extra: sshtunnel
Requires-Dist: asyncssh>=2.5.0; extra == "sshtunnel"
Provides-Extra: quic
Requires-Dist: aioquic>=0.9.7; extra == "quic"
Provides-Extra: daemon
Requires-Dist: python-daemon>=2.2.3; extra == "daemon"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-python
Dynamic: summary

klan1-pproxy
============

A maintained fork of `pproxy <https://github.com/qwj/python-proxy>`_
(HTTP/SOCKS4/SOCKS5/Shadowsocks/ShadowsocksR/Redirect/PF/QUIC async
tunnel proxy) with two changes:

1. **Python 3.12+ compatibility.** Replaces ``asyncio.get_event_loop()``
   (which raises ``RuntimeError`` on Python 3.12+ when no loop is
   running) with ``asyncio.get_running_loop()`` plus a small fallback
   helper. Works on Python 3.9, 3.10, 3.11, 3.12 and 3.13.
2. **Dropped Python 3.6/3.7 support.** Both are end-of-life.

The original library was last released as ``pproxy 2.7.9`` two years
ago. This fork keeps the same protocol surface and CLI; it only fixes
the runtime crash on modern Python. See ``CHANGELOG.md`` for the
detailed change list and the upstream commit history for everything
else.

QuickStart
----------

.. code:: bash

   $ pip3 install klan1-pproxy
   $ pproxy
   Serving on :8080 by http,socks4,socks5
   ^C

Or pin to a specific version:

.. code:: bash

   $ pip3 install 'klan1-pproxy==3.0.0'

Supported protocols
-------------------

* HTTP, HTTP2, HTTP3
* SOCKS4, SOCKS4a, SOCKS5
* Shadowsocks, ShadowsocksR
* SSH tunnel (with the ``sshtunnel`` extra)
* PF (port-forwarding)
* QUIC (with the ``quic`` extra)
* TCP and UDP

CLI options
-----------

::

   usage: __main__.py [-h] [-l LISTEN] [-r RSERVER] [-ul ULISTEN] [-ur URSERVER]
                      [-b BLOCK] [-a ALIVED] [-s {fa,rr,rc,lc}] [-d] [-v]
                      [--ssl SSLFILE] [--pac PAC] [--get GETS] [--auth AUTHTIME]
                      [--sys] [--reuse] [--daemon] [--test TEST] [--version]

Differences from upstream ``pproxy``
------------------------------------

* ``pproxy.__version__`` reports ``"3.0.0"`` (was ``"2.7.9"``).
* ``setup.py`` declares ``python_requires=">=3.9"``. The wheel
  uploaded to PyPI under the name ``klan1-pproxy`` will refuse to
  install on Python 3.6 or 3.7.
* ``pproxy/__doc__.py`` uses ``importlib.metadata`` instead of the
  deprecated ``pkg_resources`` API to look up its own version.

Differences from upstream are tracked in
`CHANGELOG.md <https://github.com/klan1/pproxy/blob/py3.12-compat/CHANGELOG.md>`_.

Repository
----------

* Upstream: https://github.com/qwj/python-proxy (and its mirror
  https://github.com/moreati/pproxy)
* Fork: https://github.com/klan1/pproxy
* Branch: ``py3.12-compat``
* Tag: ``v3.0.0``

License
-------

MIT. Same as the upstream project.
