{ "info": { "author": "Azul", "author_email": "pyarchops@azulinho.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.7" ], "description": "=====================\npyArchOps/tinc\n=====================\n\n\n.. image:: https://badge.fury.io/py/pyarchops-tinc.svg\n :target: https://pypi.python.org/pypi/pyarchops-tinc\n\n.. image:: https://img.shields.io/gitlab/pipeline/pyarchops/tinc/next-release.svg\n :target: https://gitlab.com/pyarchops/tinc/pipelines\n\n.. image:: https://readthedocs.org/projects/pyarchops-tinc/badge/?version=latest\n :target: https://pyarchops-tinc.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. image:: https://pyup.io/repos/github/pyarchops/tinc/shield.svg\n :target: https://pyup.io/repos/github/pyarchops/tinc/\n :alt: Updates\n\n\ntinc\n\n\n* Free software: MIT license\n* Documentation: https://pyarchops-tinc.readthedocs.io.\n\n\nFeatures\n--------\n\n* tinc\n\nInstalation\n--------------\n\n.. code-block:: console\n\n $ pip install pyarchops-tinc\n\n\nUsage\n--------\n\n.. code-block:: python\n\n import os\n import textwrap\n import pyarchops_tinc\n\n tinc_network_name = 'core-vpn'\n public_key = textwrap.dedent('''\n -----BEGIN RSA PUBLIC KEY-----\n MIIBCgKCAQEAwBLTc+75h13ZyLWlvup0OmbhZWxohLMMFCUBClSMxZxZdMvyzBnW\n +JpOQuvnasAeTLLtEDWSID0AB/EG68Sesr58Js88ORUw3VrjObiG15/iLtAm6hiN\n BboTqd8jgWr1yC3LfNSKJk82qQzHJPlCO9Gc5HcqvWrIrqrJL2kwjOU66U/iRxJu\n dyOrz0sBkVgfwDBqNS96L0zFQCqk70w9KyOJqe4JNJUtBas6lbwgChDU4/B3BDW5\n PYJy2Pp8MSs2n1lhrUkXxRnj+Vl5wLQLdwog1XAGu2J8pIckPg/aB7mB/fSlFihU\n bnFlRlgHrlh8gyNYztbGWKMrQ4Bz2831PQIDAQAB\n -----END RSA PUBLIC KEY-----\n ''')\n private_key = textwrap.dedent('''\n -----BEGIN RSA PRIVATE KEY-----\n MIIEpAIBAAKCAQEAwBLTc+75h13ZyLWlvup0OmbhZWxohLMMFCUBClSMxZxZdMvy\n zBnW+JpOQuvnasAeTLLtEDWSID0AB/EG68Sesr58Js88ORUw3VrjObiG15/iLtAm\n 6hiNBboTqd8jgWr1yC3LfNSKJk82qQzHJPlCO9Gc5HcqvWrIrqrJL2kwjOU66U/i\n RxJudyOrz0sBkVgfwDBqNS96L0zFQCqk70w9KyOJqe4JNJUtBas6lbwgChDU4/B3\n BDW5PYJy2Pp8MSs2n1lhrUkXxRnj+Vl5wLQLdwog1XAGu2J8pIckPg/aB7mB/fSl\n FihUbnFlRlgHrlh8gyNYztbGWKMrQ4Bz2831PQIDAQABAoIBAQCU7UP1TWM/GX7m\n yCmGuYV7TxAPMxprYeTIrdR7rQklo9Ac5pIQvSxYwFRUQVPDCsmzkLyNZ+wwgPvI\n LJPANUkTsOzUrrS0UgD8cR9kPvaWtAqNX6n8syKNQTVD7pc6HrQKDbAMz0N65sqs\n ExNKUNaRSTsMTnXePrDx9cxerYIOi8duRVH/VEBIluVh5+m7ggiYzjWXOy1lExd3\n m5tqv0PicI6UTm6sUIar3pdypt0DitHBJN4apSIxv9yW+M+Uw4JEBlXL0Kq7o9M0\n NZRwdtL9q1xBC8/lu9K/nD55OvBo0cuHR6ZIqioBIsr5A0LJ6mc0xfwllEQjUD7E\n Z8pfW8blAoGBAP9iylxVvC3HWgXuTvDGPCbIdhw/AM4gR1Tz1eXGKCqyc9mTQR44\n MKCF8nrzVvQU+j5VVG1wQhZIMp7VyDLQMw0uZdj+mfSs2qwFPCLpbsa2hFco2xbs\n +Ejr3MQpbDYLodo9hAiFcg1AsRsI8MnlnigXFgEupMS+WSHQCMTZ5XcnAoGBAMCJ\n D9ofWgh1rMA1M5CSdukrcU26ScCq2b9WyhBTAd8v8SuOxLjVxsHjbhxZro9rEj0q\n Qb4AiDB88ksLGpiBg36UKHUwpiq5vlhkb27r+EwpCB5CFe1OBVIwMwwv+kyLHepl\n wdHEzndx9cWIbmlHwIaX7RM2qOGuA//3art7Ag77AoGAf4/54hsU7ozXw4SgO5XY\n 78pLbJpvrYXj+2P8IFRVNdaDFVd/PDf22gdt8cngUfS0djQrAqsC55xSZJIF+JOU\n HG5jgvrRLay1YR0QR6PvqCP8gIiwvofJEKt3Tygdm/U9eAQoEhWNvV7l18okc8RU\n tlOpsxd4R6mIXeJKrwDjpBsCgYAp0FqB+5cZCT1oTOWS+0wZ3ZZw1Alab4B0vouJ\n ug1JBGdzF0GABuVwjE0ImS2A9jby06+NbR4msawJQjMXdeEx50lWEie0VbySA9Xz\n mAnHuI2LzLxoWi5rqA4eEnlgkEIB+vF59i0E4doHeVbJRIz6bhpNtuw8fwddWsVy\n TAepawKBgQDHOiiGIKsWR4Qrb0zTCQGLddRYE9/UG76ntTLA2ocOglLNZJtKFOGz\n 0DbxS6Ow4enTcRMhvPf3Kn0AEdR9B1cnKgDZLZUqe0P1z11Q4LZ7BXjHJgypzEEF\n esViwAMKFer7C5GZwGMMaBVlzK/THREA1IPcOKwxopWgVvIbKus3VA==\n -----END RSA PRIVATE KEY-----\n ''')\n\n tinc_up_file = textwrap.dedent(f'''\n #!/bin/sh\n # see: https://www.tinc-vpn.org/pipermail/tinc/2017-January/004729.html\n macfile=/etc/tinc/{tinc_network_name}/address\n if [ -f $macfile ]; then\n ip link set tinc.{tinc_network_name} address `cat $macfile`\n else\n cat /sys/class/net/tinc.{tinc_network_name}/address >$macfile\n fi\n\n # https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1006937\n dhclient -4 -nw -v tinc.{tinc_network_name} -cf /etc/tinc/{tinc_network_name}/dhclient.conf -r\n dhclient -4 -nw -v tinc.{tinc_network_name} -cf /etc/tinc/{tinc_network_name}/dhclient.conf\n ''')\n\n tinc_down_file = textwrap.dedent(f'''\n #!/bin/sh\n dhclient -4 -nw -v tinc.{tinc_network_name} -cf /etc/tinc/{tinc_network_name}/dhclient.conf -r\n ''')\n\n fix_route_file = textwrap.dedent(f'''\n #!/usr/bin/env bash\n\n sleep 15\n netstat -rnv | grep {tinc_network_name} | grep 0.0.0.0 >/dev/null 2>&1\n\n if [ $? = 0 ]; then\n route del -net {tinc_network_name} netmask 24 gateway 0.0.0.0\n route add -net {tinc_network_name} netmask 24 gateway `ifconfig tinc.{tinc_network_name}| grep inet | awk '{{ print $2 }}' `\n fi\n ''')\n\n dhclient_conf_file = textwrap.dedent(f'''\n option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;\n\n # https://bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/1006937\n send host-name \"my-host-name\";\n #send dhcp-requested-address 10.16.254.23;\n\n request subnet-mask, broadcast-address, time-offset, routers,\n domain-name, domain-search, host-name,\n netbios-name-servers, netbios-scope, interface-mtu,\n rfc3442-classless-static-routes, ntp-servers;\n\n timeout 300;\n ''')\n\n\n connect_to_hosts = {\n 'core_network_01': textwrap.dedent('''\n Name=core_network_01\n Address=core01.example.com\n Port=655\n Compression=0\n Subnet=10.16.254.1/32\n\n -----BEGIN RSA PUBLIC KEY-----\n MIIBCgKCAQEAt9PKpazBuZMEH4mwX+yc0yq5sHT3D6fLJ+VHeJdSr6nsTWbthLGS\n ti+jt2bBniaUgkzbc1vRrWtM0sfRwhFbkBOXmXsSFQY19YfT7IqxG6nJ7JLiDMPL\n V1bK8xa9t2oXOdATNrTehq6oy8BeLls+BOKXJ9T6ZR6T4Hu4KN2tcf78ZMRCyrx1\n E1O/D3YAEErnZj1KN44Agf2GJXbCfayicywvojz3Otyiu/4VMtjubgUitbHS8ZiM\n yomH9ayDdAdqyFTEQopH4zQ7GYPH2syzIJsD9yRoc2CnMALb6q5rDGeLOfoCeIZq\n TAfi2ceSo0lGQwdiFehiogZ2ng5P9/Iq5QIDAQAB\n -----END RSA PUBLIC KEY-----\n '''),\n\n 'core_network_02': textwrap.dedent('''\n Name=core_network_02\n Address=core02.example.com\n Port=655\n Compression=0\n Subnet=10.16.254.2/32\n\n -----BEGIN RSA PUBLIC KEY-----\n MIIBCgKCAQEApORHeJrFbe6H9Wqi25PEHpLMr1+scReE1BFNs9U5UME4PY+AGF92\n Qczpy70bH30quowy406zmglDQenIVWdpMpN2odm1V9OAz4vyk/AZzWK/wVDrIqqy\n OUFQnocdWwONGkfLShM5DHiyi5FcDS0oORWrh6LobxSQdBOZTKfgy2F6xJYUWAq7\n 7jmqbJb40/Cd4BvyJekzkU71Y1TWfQnX7hvRD9S3pCpknwqtFnD8MYE+zv9p/uNC\n OsrCncN4Ur3/pcAqRRRfLuZqNvXTf1+HQk6jTPM0s1UCV5LtcEcbB4xzV8boDipm\n //8326DMTzUJntyqdhRxEYRjGuvI/Ri6uwIDAQAB\n -----END RSA PUBLIC KEY-----\n '''),\n\n 'core_network_03': textwrap.dedent('''\n Name=core_network_03\n Address=core03.example.com\n Port=655\n Compression=0\n Subnet=10.16.254.3/32\n\n -----BEGIN RSA PUBLIC KEY-----\n MIIBCgKCAQEA81/Mkzf+qwxQ+Py8O5lyOWUmN84aAd5Z9d1XrCQ3iuHm7g5J0K4f\n U3JHMEOn0RU2RRUbUXiK0L8LeHCU7TiuBwz8+nOy/HCeZCiGUTuBkGKiIWSVVGY/\n SOHvAIUHhCCPMmgIuTBDywDthDGVPra++k1sRXsK5ODrPclqJzF5f5AKUaEfcfOw\n XdBn08fOu3S8SXSUoOepSS8mPQv2D0LB7hPXWlAV8tu3R9ibx2oR22c9zBWjgG5y\n tMhI3vLvnnzf2+0bNdY1ekc6G5wcCFuZb8qxt8+88Ls5Ek5jUc9Z1aqpe7x6MaYP\n KafbBTGK6BXmaAhyiQG4aALH5U2+Zl7BOwIDAQAB\n -----END RSA PUBLIC KEY-----\n '''),\n }\n\n tinc_conf_file = textwrap.dedent(f'''\n Name = laptop\n DeviceType = tap\n\n Device = /dev/net/tun\n Interface = tinc.{tinc_network_name}\n AddressFamily = ipv4\n LocalDiscovery = yes\n Mode=switch\n ConnectTo = core_network_01\n ConnectTo = core_network_02\n ConnectTo = core_network_03\n Cipher=aes-256-cbc\n ProcessPriority = high\n ''')\n\n config = {\n 'tinc_network_name': tinc_network_name,\n 'public_key': public_key,\n 'private_key': private_key,\n 'tinc_up_file': tinc_up_file,\n 'tinc_down_file': tinc_down_file,\n 'fix_route_file': fix_route_file,\n 'tinc_conf': tinc_conf_file,\n 'dhclient_conf': dhclient_conf_file,\n 'connect_to_hosts': connect_to_hosts,\n }\n\n api = Api(\n '127.0.0.1:22',\n connection='smart',\n remote_user='root',\n private_key_file=os.getenv('HOME') + '/.ssh/id_rsa',\n become=True,\n become_user='root',\n sudo=True,\n ssh_extra_args='-o StrictHostKeyChecking=no'\n )\n\n result, logs = pyarchops_tinc.apply(api, config=config)\n\n print(result)\n print(logs)\n\n\nDevelopment\n-----------\n\nInstall requirements:\n\n.. code-block:: console\n\n $ sudo pacman -S tmux python-virtualenv python-pip libjpeg-turbo gcc make vim git tk tcl\n\nGit clone this repository\n\n.. code-block:: console\n\n $ git clone https://github.com/pyarchops/tinc.git pyarchops.tinc\n $ cd pyarchops.tinc\n\n\n2. See the `Makefile`, to get started simply execute:\n\n.. code-block:: console\n\n $ make up\n\n\nCredits\n-------\n\n* TODO\n\n\n\n=======\nHistory\n=======\n\n0.0.1 (2018-12-11)\n------------------\n\n* First release on PyPI.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pyarchops/tinc", "keywords": "pyarchops_tinc", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "pyarchops-tinc", "package_url": "https://pypi.org/project/pyarchops-tinc/", "platform": "", "project_url": "https://pypi.org/project/pyarchops-tinc/", "project_urls": { "Homepage": "https://github.com/pyarchops/tinc" }, "release_url": "https://pypi.org/project/pyarchops-tinc/0.0.3/", "requires_dist": null, "requires_python": "", "summary": "Install All tinc", "version": "0.0.3" }, "last_serial": 5349866, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "ec6fc8f4334ecf59992949c947c59d2e", "sha256": "d57b4394f62839f26302b9afb4e069faf509eb22fa5a8729668ad5edd978fb44" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ec6fc8f4334ecf59992949c947c59d2e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7933, "upload_time": "2018-12-28T01:22:55", "url": "https://files.pythonhosted.org/packages/20/28/16a676d699166c3f3186af87d7d48aec0d378f4a3925c1a77ff6a3569fc5/pyarchops_tinc-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "915b11b7922149fd54aa581e05b8a735", "sha256": "cbc09218045c5393342d5728022f4bf3caaf91310b8d8be704e6e25fde42f8f4" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.1.tar.gz", "has_sig": false, "md5_digest": "915b11b7922149fd54aa581e05b8a735", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25386, "upload_time": "2018-12-28T01:22:57", "url": "https://files.pythonhosted.org/packages/98/20/ca7f3ca4d00722e2a5c2c33befeca423e17f8e5d55ff7841145b40cd443b/pyarchops_tinc-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "305a31bb9758cd0f323e9b60d4da26ff", "sha256": "81ace2a7f430192ac852f62f756aacdb87dab26591ed8149913179f151314ecb" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "305a31bb9758cd0f323e9b60d4da26ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7927, "upload_time": "2018-12-28T12:25:19", "url": "https://files.pythonhosted.org/packages/f7/06/f8321775cc951777bec56ab3b651046eccb53a5a84c6937dea0b46a4ec4f/pyarchops_tinc-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1bd0286fd619c8c6ee9ea715b1ac356", "sha256": "4a98d0452d715138331362aa8874d0511b11854f0993353dc92e6ce3f84ff8af" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.2.tar.gz", "has_sig": false, "md5_digest": "f1bd0286fd619c8c6ee9ea715b1ac356", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25421, "upload_time": "2018-12-28T12:25:21", "url": "https://files.pythonhosted.org/packages/3f/95/f6244a8f9c5ac110e5f1b225497dc5c38f3cb0580975a6ca23e9014f763e/pyarchops_tinc-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "377173be9a19245fb398e69d884621cd", "sha256": "4905224fb563e2de972856c38e4bec9d57dd0bc6bdd7a4fc48455b46879965d3" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "377173be9a19245fb398e69d884621cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7923, "upload_time": "2019-06-02T20:48:37", "url": "https://files.pythonhosted.org/packages/45/09/d532fad53eb7dd2be37bec570ffea1addf6248e47345a1651d1ba43503c3/pyarchops_tinc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "472e8ebd953d76bdd9806c21eebcd56e", "sha256": "8f27077b38f53db6847588eb561297a9501d84cb3652e607c694b19b944847fb" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "472e8ebd953d76bdd9806c21eebcd56e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20267, "upload_time": "2019-06-02T20:34:22", "url": "https://files.pythonhosted.org/packages/c7/37/2acce8311b3b7bd57d3b101a8896d3233db221573811d1dd91b983b08de3/pyarchops_tinc-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "377173be9a19245fb398e69d884621cd", "sha256": "4905224fb563e2de972856c38e4bec9d57dd0bc6bdd7a4fc48455b46879965d3" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "377173be9a19245fb398e69d884621cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7923, "upload_time": "2019-06-02T20:48:37", "url": "https://files.pythonhosted.org/packages/45/09/d532fad53eb7dd2be37bec570ffea1addf6248e47345a1651d1ba43503c3/pyarchops_tinc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "472e8ebd953d76bdd9806c21eebcd56e", "sha256": "8f27077b38f53db6847588eb561297a9501d84cb3652e607c694b19b944847fb" }, "downloads": -1, "filename": "pyarchops_tinc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "472e8ebd953d76bdd9806c21eebcd56e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20267, "upload_time": "2019-06-02T20:34:22", "url": "https://files.pythonhosted.org/packages/c7/37/2acce8311b3b7bd57d3b101a8896d3233db221573811d1dd91b983b08de3/pyarchops_tinc-0.0.3.tar.gz" } ] }