{ "info": { "author": "Amber Brown", "author_email": "hawkowl@atleastfornow.net", "bugtrack_url": null, "classifiers": [], "description": "rproxy\n======\n\nA super simple HTTP/1.1 proxy, with TLS and Let's Encrypt support.\n\nrproxy takes care of your Let's Encrypt certificates, automatically renewing them.\nThis is done by the excellent `txacme `_ library.\n\nInstall from PyPI:\n\n.. code::\n\n $ pip install rproxy\n\nMake a directory to store your certificates:\n\n.. code::\n\n $ mkdir my-certs\n\nMake a ``rproxy.ini``:\n\n.. code::\n\n [rproxy]\n certificates=my-certs\n http_ports=80\n https_ports=443\n\n [hosts]\n mysite.com_port=8080\n\nThen run it:\n\n.. code::\n\n sudo twistd -u nobody -g nobody -n rproxy\n\n\nThis will start the server, drop permissions (setting the effective uid/guid to nobody), and will proxy incoming requests to ``mysite.com`` to ``localhost:8080``.\nYou can configure it further:\n\n.. code::\n\n [rproxy]\n certificates=my-certs\n http_ports=80,8080\n https_ports=443\n clacks=true\n\n [hosts]\n mysite.com_port=8080\n mysite.com_host=otherserver\n mysite.com_onlysecure=True\n mysite.com_proxysecure=True\n\n myothersite.net_port=8081\n\n\nThis config will:\n\n- connect to ``https://otherserver:8080`` as the proxied server for ``mysite.com``, and only allow HTTPS connections to the proxy for this site\n- connect to ``http://localhost:8081`` as the proxied server for ``myothersite.net``, and allow HTTP or HTTPS connections.\n\n\nGeneral Config\n--------------\n\n- ``http_ports`` -- comma-separated list of numerical ports to listen on for HTTP connections.\n- ``https_ports`` -- comma-separated list of numerical ports to listen on for HTTPS connections.\n- ``certificates`` -- directory where certificates are kept.\n- ``clacks`` -- Enable ``X-Clacks-Overhead`` for requests.\n\n\nHosts Config\n------------\n\n- ``_onlysecure`` -- enforce HTTPS connections. If not set, or set to False, it will allow HTTP and HTTPS connections.\n- ``_proxysecure`` -- connect to the proxied server by HTTPS. If not set, or set to False, it will connect over HTTP.\n- ``_port`` -- The port of the proxied server that this proxy should connect to.\n- ``_host`` -- the hostname/IP of the server to proxy to.\n- ``_sendhsts`` -- send HSTS headers on HTTPS connections.\n- ``_wwwtoo`` -- match ``www`` too.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "rproxy", "package_url": "https://pypi.org/project/rproxy/", "platform": "", "project_url": "https://pypi.org/project/rproxy/", "project_urls": null, "release_url": "https://pypi.org/project/rproxy/18.6.0/", "requires_dist": [ "twisted[tls] (>=18.4.0)", "pyopenssl", "txsni", "txacme", "incremental" ], "requires_python": "", "summary": "A super simple reverse proxy.", "version": "18.6.0" }, "last_serial": 3944744, "releases": { "16.0.0": [ { "comment_text": "", "digests": { "md5": "0b4f2d7357a1abc9f9bdda4981b13aff", "sha256": "e69c3c063e7dd00985c125566bda97c7b492ffee9d3a92ce7707ab4d93d9e4cf" }, "downloads": -1, "filename": "rproxy-16.0.0.tar.gz", "has_sig": false, "md5_digest": "0b4f2d7357a1abc9f9bdda4981b13aff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3938, "upload_time": "2016-02-23T04:09:23", "url": "https://files.pythonhosted.org/packages/e5/87/38a198a132cfe1839412b56fc910cea2d3538038e7fa94eeb4ce600cba1f/rproxy-16.0.0.tar.gz" } ], "16.1.0": [ { "comment_text": "", "digests": { "md5": "50e12856b8372d037c09f62560664e44", "sha256": "dc0e72c4a41632223d49109c256951c929e89da39385f74b357c45add4b9c163" }, "downloads": -1, "filename": "rproxy-16.1.0.tar.gz", "has_sig": false, "md5_digest": "50e12856b8372d037c09f62560664e44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3967, "upload_time": "2016-02-23T04:28:32", "url": "https://files.pythonhosted.org/packages/ef/dc/57a143b36505adc551ae68971661c2645e49242eab8410ec501d9a58c3f5/rproxy-16.1.0.tar.gz" } ], "16.1.1": [ { "comment_text": "", "digests": { "md5": "a8a36c522efc507f5136d27e2e3c9571", "sha256": "d45635c35210268a44285b4e27afb58da42ecb2dd21af0fd80b10c24a76188da" }, "downloads": -1, "filename": "rproxy-16.1.1.tar.gz", "has_sig": false, "md5_digest": "a8a36c522efc507f5136d27e2e3c9571", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3966, "upload_time": "2016-02-23T04:33:00", "url": "https://files.pythonhosted.org/packages/0a/7f/46f56afaf141fdf2311c5a6b21d0c3aa5cc1394bcbd219b78499d27b3aa0/rproxy-16.1.1.tar.gz" } ], "16.1.2": [ { "comment_text": "", "digests": { "md5": "d75122c6778070fa401646aa0b70d9d9", "sha256": "707d8ac475b3959d7829f0d030e5987ea0cdf35a4f1241ea34b3e728048f3018" }, "downloads": -1, "filename": "rproxy-16.1.2.tar.gz", "has_sig": false, "md5_digest": "d75122c6778070fa401646aa0b70d9d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3999, "upload_time": "2016-02-23T04:54:44", "url": "https://files.pythonhosted.org/packages/eb/2b/5577af8841c2be2fa8604c9cb55ac3db3dc3ecc7556f193da96b1f9491de/rproxy-16.1.2.tar.gz" } ], "16.2.0": [ { "comment_text": "", "digests": { "md5": "0a720aa32518c2f2521ae092013c1de2", "sha256": "808b36eb558d955c8507f53b73a3daecd53b72e5c8370d3d45d2cf5d8e8fc9d8" }, "downloads": -1, "filename": "rproxy-16.2.0.tar.gz", "has_sig": false, "md5_digest": "0a720aa32518c2f2521ae092013c1de2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4156, "upload_time": "2016-02-23T06:02:26", "url": "https://files.pythonhosted.org/packages/7b/cd/6fb43c33bfb4315addec86b2ea1ba2f342b8f8203d3af12dc5af437f4810/rproxy-16.2.0.tar.gz" } ], "16.3.0": [ { "comment_text": "", "digests": { "md5": "1464afb79d86b4575a7e47f17baa509d", "sha256": "79f27ead2b623d97beced02d49f4b9ca7444bbf6766949e5154d42f0de545081" }, "downloads": -1, "filename": "rproxy-16.3.0.tar.gz", "has_sig": false, "md5_digest": "1464afb79d86b4575a7e47f17baa509d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4311, "upload_time": "2016-02-23T06:21:13", "url": "https://files.pythonhosted.org/packages/ca/bd/136731664bb9b58b202c03e026aa59a052dcd97d9fa668b972360094e4b3/rproxy-16.3.0.tar.gz" } ], "16.3.1": [ { "comment_text": "", "digests": { "md5": "bc640b233464435c86004a602966b72a", "sha256": "064cce0599f7556c85d079f3c4448bcba06485b21d1b4ed4e2328f25b1e7e575" }, "downloads": -1, "filename": "rproxy-16.3.1.tar.gz", "has_sig": false, "md5_digest": "bc640b233464435c86004a602966b72a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4313, "upload_time": "2016-02-23T06:26:56", "url": "https://files.pythonhosted.org/packages/60/7b/dc59c8242f709f9f378aaaaca8837072ac4647c1dee1d5d693d810b2dab8/rproxy-16.3.1.tar.gz" } ], "16.4.0": [ { "comment_text": "", "digests": { "md5": "5966376a7f1fb564887ca15f95d8405f", "sha256": "d5a9fa818b25135258c8fafe8a07a0ed273177182e46edb8b47f8f1bf35f431f" }, "downloads": -1, "filename": "rproxy-16.4.0-py2-none-any.whl", "has_sig": false, "md5_digest": "5966376a7f1fb564887ca15f95d8405f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6229, "upload_time": "2016-05-08T14:13:14", "url": "https://files.pythonhosted.org/packages/43/e9/79e730254fadc048f897aa9b20278a952b48a22f1585e106d24c70700720/rproxy-16.4.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68176e15e9dc347023a1cab0e960c30c", "sha256": "9bee1eaa799ea3e53f6d3193b95a32ad53dfdcf58b507024c8e7ed304a41066e" }, "downloads": -1, "filename": "rproxy-16.4.0.tar.gz", "has_sig": false, "md5_digest": "68176e15e9dc347023a1cab0e960c30c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4226, "upload_time": "2016-05-08T14:13:20", "url": "https://files.pythonhosted.org/packages/9e/31/93177a333b011dfba54d2be8b73772134cf10bae9548ae053c44c437152f/rproxy-16.4.0.tar.gz" } ], "16.5.0": [ { "comment_text": "", "digests": { "md5": "ca7efa363d98d9682b8bb71e551e248a", "sha256": "71a43b3b1dd2d6bd7bb41fef0353de31df3b753ba2c8de042307013bec02332d" }, "downloads": -1, "filename": "rproxy-16.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ca7efa363d98d9682b8bb71e551e248a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6234, "upload_time": "2016-06-29T04:19:19", "url": "https://files.pythonhosted.org/packages/d9/4b/953e87e849d8d9c799f88305564b1fee6326b74f743dc9d0d1cb1fb35031/rproxy-16.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "422629343e6de052d82a55adc358dcb7", "sha256": "3bfb962b74278145f070e0f8535b56e6523af8d450493eebc46113be7753c8b8" }, "downloads": -1, "filename": "rproxy-16.5.0.tar.gz", "has_sig": false, "md5_digest": "422629343e6de052d82a55adc358dcb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4235, "upload_time": "2016-06-29T04:19:24", "url": "https://files.pythonhosted.org/packages/68/77/1556902fafc626ab8f888f7ceb31e37ca591b43d9ecbcc49676b6cb4ff03/rproxy-16.5.0.tar.gz" } ], "16.6.0": [ { "comment_text": "", "digests": { "md5": "c1966abc3a1f7ff99072d70be6f31738", "sha256": "03b3492f4bc9c1f75b5fd7c69df23f587ea2bc11fa4dd6f4fe5400324defaba7" }, "downloads": -1, "filename": "rproxy-16.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "c1966abc3a1f7ff99072d70be6f31738", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6249, "upload_time": "2016-06-30T01:20:36", "url": "https://files.pythonhosted.org/packages/69/b0/43985b676f79a48bd6a78a25c6d0929d5bb7ca0ee82bf54bd132c89d2106/rproxy-16.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a69cb5cdb1418c1bf3d3f0fb982552a", "sha256": "9e9cb3914a4c0cef0418d46dbe3cf85c808a24df81245b31fd4d98dc52a34a34" }, "downloads": -1, "filename": "rproxy-16.6.0.tar.gz", "has_sig": false, "md5_digest": "2a69cb5cdb1418c1bf3d3f0fb982552a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4251, "upload_time": "2016-06-30T01:20:40", "url": "https://files.pythonhosted.org/packages/25/f2/28f6438ce420552984c7dea4cc0871d44160b3f0d81b5478480561b375da/rproxy-16.6.0.tar.gz" } ], "16.8.0": [ { "comment_text": "", "digests": { "md5": "a7a15bc879d98f2442b8d222d663bf4d", "sha256": "fcbff3f16ba4f272cd635b73cd23646b50b94fad67317d558307c9908e4923b4" }, "downloads": -1, "filename": "rproxy-16.8.0-py2.7.egg", "has_sig": false, "md5_digest": "a7a15bc879d98f2442b8d222d663bf4d", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 10020, "upload_time": "2016-06-30T07:52:22", "url": "https://files.pythonhosted.org/packages/3b/71/cf691734facbedda264f5e4431154fe6a1ce85c339362b90c8f09b5ca1a8/rproxy-16.8.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f59469f694537039301c737ed64706dc", "sha256": "87d4f5132fd9f2cfbaad9a372f78cc6bf8188674514a146e0ad694906b06a757" }, "downloads": -1, "filename": "rproxy-16.8.0-py2-none-any.whl", "has_sig": false, "md5_digest": "f59469f694537039301c737ed64706dc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6739, "upload_time": "2016-06-30T07:52:17", "url": "https://files.pythonhosted.org/packages/f6/e1/9d83cbe946298e7fefb1072b3bc383e7b20c5df2659e0fd1dcb8aeea95f2/rproxy-16.8.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69f4b285dc87d196a32abff99425a659", "sha256": "9658a0ce73c43d0c79e4cc82c1d06ba681004e5a31f9f8646db164a5051acf0d" }, "downloads": -1, "filename": "rproxy-16.8.0.tar.gz", "has_sig": false, "md5_digest": "69f4b285dc87d196a32abff99425a659", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4758, "upload_time": "2016-06-30T07:52:28", "url": "https://files.pythonhosted.org/packages/3c/83/039211cb774f9c7579874ad95019baf5b747ef9782e15812677da51676d4/rproxy-16.8.0.tar.gz" } ], "16.9.0": [ { "comment_text": "", "digests": { "md5": "dfb53d017bbdeb029a084c9cd8ffa82e", "sha256": "8539d877eccde414c73273cc64b6b08dca8e2568699b6ce7764e88fe01a2e3d3" }, "downloads": -1, "filename": "rproxy-16.9.0-py2-none-any.whl", "has_sig": false, "md5_digest": "dfb53d017bbdeb029a084c9cd8ffa82e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6720, "upload_time": "2016-06-30T08:27:49", "url": "https://files.pythonhosted.org/packages/76/c9/0d9f57b5395dd475212bf01c0ce3fc24d49c149ea98c783e94d7b048e580/rproxy-16.9.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "027e1ffd4d49e537df7b733f3635f9d9", "sha256": "843b1b26157b163bb3d5c9c509e32d8c7c79b825b42a994892ad6ebbcd577eaf" }, "downloads": -1, "filename": "rproxy-16.9.0.tar.gz", "has_sig": false, "md5_digest": "027e1ffd4d49e537df7b733f3635f9d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4745, "upload_time": "2016-06-30T08:27:54", "url": "https://files.pythonhosted.org/packages/26/e8/014d1528b781deea037e6092d795e8df052ceeae7e7693cd22ef4c54174b/rproxy-16.9.0.tar.gz" } ], "17.3.0": [ { "comment_text": "", "digests": { "md5": "8a6e85ef828c7db866475b6e08b9e6b9", "sha256": "343bd260f956503b8cd76dd7d1038e8834e2cbeb3bf5ce81bf8b94dd7f8b2612" }, "downloads": -1, "filename": "rproxy-17.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "8a6e85ef828c7db866475b6e08b9e6b9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6938, "upload_time": "2017-03-19T03:31:02", "url": "https://files.pythonhosted.org/packages/c6/9d/f2849a158ed0bf20580ef19d379a0204410f62d88ee6d852eca7195ce49b/rproxy-17.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3f223e567af61c3e98590aa93a03ff5c", "sha256": "a194ca9f69909f0c33d7439557d392a00538240076bbf192f3f6925e1690ff2a" }, "downloads": -1, "filename": "rproxy-17.3.0.tar.gz", "has_sig": false, "md5_digest": "3f223e567af61c3e98590aa93a03ff5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4936, "upload_time": "2017-03-19T03:31:05", "url": "https://files.pythonhosted.org/packages/7e/22/3d934af186c23ea3f458cc31d05de08782c4272ea4ac0702a9f6e00f58f9/rproxy-17.3.0.tar.gz" } ], "17.3.1": [ { "comment_text": "", "digests": { "md5": "2c3b2ddceda9eaa4ea736e88044c54e0", "sha256": "30b572f88a80731d6c8689969bc5b2b1f77cd38051d8128f14f51b194eb744dd" }, "downloads": -1, "filename": "rproxy-17.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "2c3b2ddceda9eaa4ea736e88044c54e0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6944, "upload_time": "2017-03-22T10:47:36", "url": "https://files.pythonhosted.org/packages/ac/b9/9b4b602878d9d9db895d462032d9131dbf41bc48209fefd8966fc3447870/rproxy-17.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c43e4173a3467c8267fd98b82ba26df", "sha256": "512e16537599d0a3301af4d85adf25c30ebb021762fa9fde271a22bd47375317" }, "downloads": -1, "filename": "rproxy-17.3.1.tar.gz", "has_sig": false, "md5_digest": "8c43e4173a3467c8267fd98b82ba26df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4947, "upload_time": "2017-03-22T10:47:38", "url": "https://files.pythonhosted.org/packages/71/8c/a27877662ceccd48ec670274bc4128fb67c148452cd733c59d65c11e799a/rproxy-17.3.1.tar.gz" } ], "18.6.0": [ { "comment_text": "", "digests": { "md5": "2ea81aab1bb796d45a3c82b8f74765f9", "sha256": "793e024214d77d0206a1ec2220941b417e717e7d8acdfd207379ee9b0acd6dee" }, "downloads": -1, "filename": "rproxy-18.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2ea81aab1bb796d45a3c82b8f74765f9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7793, "upload_time": "2018-06-09T06:18:43", "url": "https://files.pythonhosted.org/packages/7c/e8/70cdda3ca92a4c7d1f77a6f77c1efc65144afcce21eecc464f7cd9b63b80/rproxy-18.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29009731c24143e6ab2c9388f14e0e26", "sha256": "78bd6abde54bf4bbc3bb5ad4b76603598ddc2b84791647ef9f5f995b0810187c" }, "downloads": -1, "filename": "rproxy-18.6.0.tar.gz", "has_sig": false, "md5_digest": "29009731c24143e6ab2c9388f14e0e26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5770, "upload_time": "2018-06-09T06:18:44", "url": "https://files.pythonhosted.org/packages/92/14/7a2f559c99e3c6b8fd79128a6406c823a285dbe102c2a39deeca88a872a8/rproxy-18.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2ea81aab1bb796d45a3c82b8f74765f9", "sha256": "793e024214d77d0206a1ec2220941b417e717e7d8acdfd207379ee9b0acd6dee" }, "downloads": -1, "filename": "rproxy-18.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2ea81aab1bb796d45a3c82b8f74765f9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7793, "upload_time": "2018-06-09T06:18:43", "url": "https://files.pythonhosted.org/packages/7c/e8/70cdda3ca92a4c7d1f77a6f77c1efc65144afcce21eecc464f7cd9b63b80/rproxy-18.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29009731c24143e6ab2c9388f14e0e26", "sha256": "78bd6abde54bf4bbc3bb5ad4b76603598ddc2b84791647ef9f5f995b0810187c" }, "downloads": -1, "filename": "rproxy-18.6.0.tar.gz", "has_sig": false, "md5_digest": "29009731c24143e6ab2c9388f14e0e26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5770, "upload_time": "2018-06-09T06:18:44", "url": "https://files.pythonhosted.org/packages/92/14/7a2f559c99e3c6b8fd79128a6406c823a285dbe102c2a39deeca88a872a8/rproxy-18.6.0.tar.gz" } ] }