{ "info": { "author": "Viktor Villainov", "author_email": "supervillain@riseup.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "i2plib\n======\n\n.. image:: https://travis-ci.com/l-n-s/i2plib.svg?branch=master\n :target: https://travis-ci.com/l-n-s/i2plib\n.. image:: https://readthedocs.org/projects/i2plib/badge/?version=latest\n :target: https://i2plib.readthedocs.io/en/latest/\n :alt: Latest Read The Docs\n.. image:: https://codecov.io/github/l-n-s/i2plib/coverage.svg?branch=master\n :target: https://codecov.io/github/l-n-s/i2plib\n\ni2plib is a modern asynchronous library for building I2P applications. \n\nInstalling\n----------\n\n::\n\n pip install i2plib\n\nRequirements:\n\n- Python version >= 3.5\n- I2P router with SAM API enabled\n\nConnecting to a remote I2P destination\n--------------------------------------\n\n.. code-block:: python\n\n import asyncio\n import i2plib\n\n async def connect_test(destination):\n session_name = \"test-connect\"\n\n # create a SAM stream session\n await i2plib.create_session(session_name)\n\n # connect to a destination\n reader, writer = await i2plib.stream_connect(session_name, destination)\n\n # write data to a socket\n writer.write(b\"PING\")\n\n # asynchronously receive data\n data = await reader.read(4096)\n print(data.decode())\n\n # close the connection\n writer.close()\n\n # run event loop\n loop = asyncio.get_event_loop()\n loop.run_until_complete(connect_test(\"dummy.i2p\"))\n loop.stop()\n\nAccept connections in I2P\n-------------------------\n\n.. code-block:: python\n\n import asyncio\n import i2plib\n\n async def accept_test():\n session_name = \"test-accept\"\n\n # create a SAM stream session\n await i2plib.create_session(session_name)\n\n # accept a connection\n reader, writer = await i2plib.stream_accept(session_name)\n\n # first string on a client connection always contains clients I2P destination\n dest = await reader.readline()\n remote_destination = i2plib.Destination(dest.decode().strip())\n\n # read for the actual incoming data from the client\n data = await reader.read(4096)\n\n print(data.decode())\n\n # send data back\n writer.write(b\"PONG\")\n\n # close the connection\n writer.close()\n\n # run event loop\n loop = asyncio.get_event_loop()\n loop.run_until_complete(accept_test())\n loop.stop()\n\nServer tunnel\n-------------\n\nExpose a local service to I2P like that:\n\n.. code-block:: python\n\n import asyncio\n import i2plib\n\n loop = asyncio.get_event_loop()\n # making your local web server available in the I2P network\n tunnel = i2plib.ServerTunnel((\"127.0.0.1\", 80))\n asyncio.ensure_future(tunnel.run())\n\n try:\n loop.run_forever()\n except KeyboardInterrupt:\n pass\n finally:\n loop.close()\n\nClient tunnel\n-------------\n\nBind a remote I2P destination to a port on your local host:\n\n.. code-block:: python\n\n import asyncio\n import i2plib\n\n loop = asyncio.get_event_loop()\n # bind irc.echelon.i2p to 127.0.0.1:6669\n tunnel = i2plib.ClientTunnel(\"irc.echelon.i2p\", (\"127.0.0.1\", 6669))\n asyncio.ensure_future(tunnel.run())\n\n try:\n loop.run_forever()\n except KeyboardInterrupt:\n pass\n finally:\n loop.close()\n\nMore examples\n-------------\n\nYou can see more demo applications in `docs/examples` directory of the source repository.\n\n\nResources\n---------\n\n* `i2plib online documentation`_\n* `Invisible Internet Project`_\n* `SAM API documentation`_\n* `Python asyncio documentation`_\n\n.. _i2plib online documentation: https://i2plib.readthedocs.io/en/latest/\n.. _Invisible Internet Project: https://geti2p.net/en/\n.. _SAM API documentation: https://geti2p.net/en/docs/api/samv3\n.. _Python asyncio documentation: https://docs.python.org/3/library/asyncio.html\n\nAknowledgments\n--------------\n\n* `i2p.socket, drop in python socket module that uses i2p`_\n* `txi2p, I2P bindings for Twisted`_\n* `leaflet, Dead simple I2P SAM library, written in Python 3`_\n\n.. _i2p.socket, drop in python socket module that uses i2p: https://github.com/majestrate/i2p.socket\n.. _txi2p, I2P bindings for Twisted: https://github.com/str4d/txi2p\n.. _leaflet, Dead simple I2P SAM library, written in Python 3: https://github.com/MuxZeroNet/leaflet\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/l-n-s/i2plib", "keywords": "i2p", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "i2plib", "package_url": "https://pypi.org/project/i2plib/", "platform": "", "project_url": "https://pypi.org/project/i2plib/", "project_urls": { "Homepage": "https://github.com/l-n-s/i2plib" }, "release_url": "https://pypi.org/project/i2plib/0.0.14/", "requires_dist": null, "requires_python": "", "summary": "A modern asynchronous library for building I2P applications.", "version": "0.0.14" }, "last_serial": 4780677, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "b3723ac0313385d8459315a74f6f8742", "sha256": "191f0cdfbbfc2516c30addb95509d0cee3d944341026741e3e7bcc7751f71c7d" }, "downloads": -1, "filename": "i2plib-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "b3723ac0313385d8459315a74f6f8742", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11078, "upload_time": "2018-12-26T19:31:02", "url": "https://files.pythonhosted.org/packages/27/13/470086ca947a74594e405fb294e8247301d6cc489d197abdeda7159863d6/i2plib-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b8b5d3778e2ceb177559c14eeb73a701", "sha256": "17e0769254376ef6f1d70e4de2566be2fe774dfd494d5f88c1f5963c0e967fc3" }, "downloads": -1, "filename": "i2plib-0.0.10.tar.gz", "has_sig": false, "md5_digest": "b8b5d3778e2ceb177559c14eeb73a701", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10305, "upload_time": "2018-12-26T19:31:04", "url": "https://files.pythonhosted.org/packages/14/b2/6f805a8365b49558fb341f8f4c9e3293f3f4b921681bc2de93c4c32c7f5b/i2plib-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "3db20533005f299ef04588de9f0a3a51", "sha256": "9c029006feb9a88135b91667ee97b82b3872b6238191c771a031df5e5b3529e3" }, "downloads": -1, "filename": "i2plib-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "3db20533005f299ef04588de9f0a3a51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11045, "upload_time": "2018-12-27T09:15:09", "url": "https://files.pythonhosted.org/packages/6b/bb/7a0ddf247d9cfb652091f57c70244cc43e1e75d32688dbda79bd2e05da76/i2plib-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7762a10277b68ab93891495468e49a35", "sha256": "1e125aa213cfbc98e8321a93db62648d0c1d4bfba598e83338af97cb09012f1d" }, "downloads": -1, "filename": "i2plib-0.0.11.tar.gz", "has_sig": false, "md5_digest": "7762a10277b68ab93891495468e49a35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10316, "upload_time": "2018-12-27T09:15:11", "url": "https://files.pythonhosted.org/packages/4d/93/12859e4662ef0ee34b0c03b442a03cfb0179ca4bf0c84074d8afaf5d6a0e/i2plib-0.0.11.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "16e885a3bf51ec92c64c787f25c27043", "sha256": "a0ed093291d2df9cc6510b8df5483bafaf5c3cb897707425f650e4c7a5763be2" }, "downloads": -1, "filename": "i2plib-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "16e885a3bf51ec92c64c787f25c27043", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10548, "upload_time": "2019-01-01T15:16:13", "url": "https://files.pythonhosted.org/packages/97/d6/703755f0b7504b318f5a75053b9b60fca5c9d3a6af2a0e2e043752d1d901/i2plib-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e9daa9c3399e4fde6221e7d3bd347ce", "sha256": "b3b39ba7ae9533378b08a154d547b6655eedfcc5e5e926958d7fb3cadad729f2" }, "downloads": -1, "filename": "i2plib-0.0.13.tar.gz", "has_sig": false, "md5_digest": "0e9daa9c3399e4fde6221e7d3bd347ce", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14403, "upload_time": "2019-01-01T15:16:15", "url": "https://files.pythonhosted.org/packages/c0/82/cad23e6c1454409cc624153943069c0e7ce2b0ddd2b6fdfad28a3b7bc248/i2plib-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "61e7753d885c95071696742b393437bf", "sha256": "98147edda01196b8b0cec1414f1a53b08f87564bfeea652dd47339711b51c13b" }, "downloads": -1, "filename": "i2plib-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "61e7753d885c95071696742b393437bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10825, "upload_time": "2019-02-05T05:08:03", "url": "https://files.pythonhosted.org/packages/de/2b/42ff78fd80062fada1344fe5a5a58d3bd308c571a9a9ccb9592a423a1239/i2plib-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91f2496b33886803158cea98dfb1f5c2", "sha256": "68ea06cec53759e462ad4ee8c74f1fed5f39c1c3a3fbbbd83bf1ed2ef85d657a" }, "downloads": -1, "filename": "i2plib-0.0.14.tar.gz", "has_sig": false, "md5_digest": "91f2496b33886803158cea98dfb1f5c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14631, "upload_time": "2019-02-05T05:08:05", "url": "https://files.pythonhosted.org/packages/93/19/6d70d9c0352ea1e88fd988ca3d11325d235503eec9b90a2a9cf85c2e137b/i2plib-0.0.14.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "9afd673be0bf0f4b7a1d50c8e3ffa525", "sha256": "4d81acd557d07d62016c9f05229a4ec22aa8509df0b0bd8a441a8b06ab5c4fd3" }, "downloads": -1, "filename": "i2plib-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9afd673be0bf0f4b7a1d50c8e3ffa525", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10273, "upload_time": "2018-09-09T17:39:28", "url": "https://files.pythonhosted.org/packages/41/15/9b2f1242bc77410bc6742625a5e9b0e2c7a71d71d50e69bfb24510564775/i2plib-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b862b8690b8a04814adb9144d40fb818", "sha256": "0f510f81172289df09d96dbfa22cb69bcad489eb688df8b7e8e33c413bc867d0" }, "downloads": -1, "filename": "i2plib-0.0.3.tar.gz", "has_sig": false, "md5_digest": "b862b8690b8a04814adb9144d40fb818", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8964, "upload_time": "2018-09-09T17:39:29", "url": "https://files.pythonhosted.org/packages/94/08/da5f56dd974ac54752f0eb55c70e9b957769aa1e2d2c8b4a918d242a82e6/i2plib-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "1727f3cffbb906ae188fbd87bcc0586f", "sha256": "a6c0983e179ba3764e7aac6d1e0267eb6358aa6d64b0f6e6da88c975ec51da12" }, "downloads": -1, "filename": "i2plib-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1727f3cffbb906ae188fbd87bcc0586f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10279, "upload_time": "2018-09-09T18:42:34", "url": "https://files.pythonhosted.org/packages/c0/f3/83f09993d8ee44d9a1ebe48009b5832446bc895f6df42cbc899d88e1385f/i2plib-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "adb6794ce130aee8edc7e6386dae70dc", "sha256": "1b1d56351e910ba4cbef730e42eeb4ee74db3fdc75b4d6c86900e99a9eaa9fbf" }, "downloads": -1, "filename": "i2plib-0.0.4.tar.gz", "has_sig": false, "md5_digest": "adb6794ce130aee8edc7e6386dae70dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8961, "upload_time": "2018-09-09T18:42:36", "url": "https://files.pythonhosted.org/packages/89/e9/ec9fa0b59a89062d71fdfa9f92fd27bea41594bad7a36716495abcb79766/i2plib-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "e850b0cc3c836ca3efdf07002309efd7", "sha256": "c8ff81e6307a62b22f8d45269d9899295be897d22c62c0d2b28a45da3126cbdb" }, "downloads": -1, "filename": "i2plib-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e850b0cc3c836ca3efdf07002309efd7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10420, "upload_time": "2018-09-10T15:24:54", "url": "https://files.pythonhosted.org/packages/aa/6e/c61ec4cd8af0125e72d71cdf238800bfeb023506004899e2ac82181816f7/i2plib-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "209a602dce026fd127bc943e7b25187d", "sha256": "08d9e4e7bc5b67eb7f11506cb3e001dc95d36a2711262c23c897c7e729cb5dfd" }, "downloads": -1, "filename": "i2plib-0.0.5.tar.gz", "has_sig": false, "md5_digest": "209a602dce026fd127bc943e7b25187d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9079, "upload_time": "2018-09-10T15:24:57", "url": "https://files.pythonhosted.org/packages/0c/8f/c87b24219ff8183d2e39901212f1156c7cef3e98abd44c3bb9121d78f289/i2plib-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "1fbfc2b46d52d375d7d0a39b87d2de96", "sha256": "7c219fb811150de4444eb1c9f6a4aa9bda9f1dbe874ef30360d839992f972890" }, "downloads": -1, "filename": "i2plib-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "1fbfc2b46d52d375d7d0a39b87d2de96", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10550, "upload_time": "2018-09-13T01:28:37", "url": "https://files.pythonhosted.org/packages/09/08/ff71c004fc4cba5bf21e2159661a22c58ea54fe8eeb1c373e1449f6754f6/i2plib-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b677162991a1b7dbcff12a042a80514e", "sha256": "83ae9c137a5b79a340dcb32f6d4765670173c6572c051177e6604688e8d0e48a" }, "downloads": -1, "filename": "i2plib-0.0.6.tar.gz", "has_sig": false, "md5_digest": "b677162991a1b7dbcff12a042a80514e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9171, "upload_time": "2018-09-13T01:28:39", "url": "https://files.pythonhosted.org/packages/4e/d8/39caefc9dcc14644f8bccaaa101df7639bd4f9d19b42f109fbbe9103336c/i2plib-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "a0781314ef56815e26494c54853753c3", "sha256": "0d02f1f1a6e318481e7a42bfdb4ff1e64fc57f11266cbfb141a8e937e9638b5f" }, "downloads": -1, "filename": "i2plib-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a0781314ef56815e26494c54853753c3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10571, "upload_time": "2018-09-13T01:44:16", "url": "https://files.pythonhosted.org/packages/a1/2a/8fde27dda9721bc4bfc7e884626aff7e24961a722b069db82db0611bdde8/i2plib-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ac50457100db3bef55cccf8ccc2f020", "sha256": "d9f5eae350b54872465ab43089be552dedb029ea1c46f5946de9692c3c7dab3b" }, "downloads": -1, "filename": "i2plib-0.0.7.tar.gz", "has_sig": false, "md5_digest": "8ac50457100db3bef55cccf8ccc2f020", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9669, "upload_time": "2018-09-13T01:44:17", "url": "https://files.pythonhosted.org/packages/d9/c6/3f6713b6fb7ae58d0ffa5373852bba407033738962cbad8a78a4b560deb1/i2plib-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "25dbaffce2b99a01f31d656c30f04c6e", "sha256": "3ce4870d75c4606f530a9df6e90a65443760697bfa82483c3b7fec015a28b1a4" }, "downloads": -1, "filename": "i2plib-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "25dbaffce2b99a01f31d656c30f04c6e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10665, "upload_time": "2018-09-15T09:55:21", "url": "https://files.pythonhosted.org/packages/c7/78/4ab6d73bdec59f4183a85d0d8666c47e6c361e5ed20e81d5c60bf61bc26f/i2plib-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf59ec069b71f04776fe6a5672be5d62", "sha256": "7ab8b38144070337685ef79a09a47e7e93ff6575a0197c63223b40db4590e81d" }, "downloads": -1, "filename": "i2plib-0.0.8.tar.gz", "has_sig": false, "md5_digest": "bf59ec069b71f04776fe6a5672be5d62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9737, "upload_time": "2018-09-15T09:55:23", "url": "https://files.pythonhosted.org/packages/81/2e/959507f3d4fa01f51a977fc21f1c8a2a3d17ff57b89f8ad509ed155d970d/i2plib-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "86cbee069fcbb6218646bf7ce1f25a48", "sha256": "07912d9034a04a2dacc75939f9be7d968e9114777dd91ec604186ba7fda55e37" }, "downloads": -1, "filename": "i2plib-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "86cbee069fcbb6218646bf7ce1f25a48", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10931, "upload_time": "2018-09-16T08:18:38", "url": "https://files.pythonhosted.org/packages/b3/39/5f57bb64e9e54f0c6d100b4040e4debee5f6290376f0358e6c4a2bd9af0f/i2plib-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3613bc4831ef76f80af94199a8de6d73", "sha256": "cd2e71b0f1a481339e7bfa30a13d4517b7bde6badf38282cc2705346325aadba" }, "downloads": -1, "filename": "i2plib-0.0.9.tar.gz", "has_sig": false, "md5_digest": "3613bc4831ef76f80af94199a8de6d73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10182, "upload_time": "2018-09-16T08:18:40", "url": "https://files.pythonhosted.org/packages/ab/55/6d27b6f2682797dd4eec73ed8a667f0b3bdb39e458f4996191dbe5a5d3ec/i2plib-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "61e7753d885c95071696742b393437bf", "sha256": "98147edda01196b8b0cec1414f1a53b08f87564bfeea652dd47339711b51c13b" }, "downloads": -1, "filename": "i2plib-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "61e7753d885c95071696742b393437bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10825, "upload_time": "2019-02-05T05:08:03", "url": "https://files.pythonhosted.org/packages/de/2b/42ff78fd80062fada1344fe5a5a58d3bd308c571a9a9ccb9592a423a1239/i2plib-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91f2496b33886803158cea98dfb1f5c2", "sha256": "68ea06cec53759e462ad4ee8c74f1fed5f39c1c3a3fbbbd83bf1ed2ef85d657a" }, "downloads": -1, "filename": "i2plib-0.0.14.tar.gz", "has_sig": false, "md5_digest": "91f2496b33886803158cea98dfb1f5c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14631, "upload_time": "2019-02-05T05:08:05", "url": "https://files.pythonhosted.org/packages/93/19/6d70d9c0352ea1e88fd988ca3d11325d235503eec9b90a2a9cf85c2e137b/i2plib-0.0.14.tar.gz" } ] }