{ "info": { "author": "Cameron Simpson", "author_email": "cs@cskk.id.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Manage persistent ssh tunnels and port forwards.\n\nPortfwd runs a collection of ssh tunnel commands persistently,\neach in its own `cs.app.svcd `_ instance\nwith all the visibility and process control that SvcD brings.\n\nIt reads tunnel preconditions from special comments within the ssh config file.\nIt uses the configuration options from the config file\nas the SvcD signature function\nthus restarting particular ssh tunnels when their specific configuration changes.\nIt has an \"automatic\" mode (the -A option)\nwhich monitors the desired list of tunnels\nfrom statuses expressed via `cs.app.flag `_\nwhich allows live addition or removal of tunnels as needed.\n\n## Function `Condition(portfwd, op, invert, *args)`\n\nFactory to construct a condition from a specification.\n\n## Class `FlagCondition`\n\nMRO: `_PortfwdCondition` \nA flag based condition.\n\n## Function `main(argv=None, environ=None)`\n\nCommand line main programme.\n\n## Class `PingCondition`\n\nMRO: `_PortfwdCondition` \nA ping based condition.\n\n## Class `Portfwd`\n\nMRO: `cs.app.flag.FlaggedMixin` \nAn ssh tunnel built on a SvcD.\n\n### Method `Portfwd.__init__(self, target, ssh_config=None, conditions=(), test_shcmd=None, trace=False, verbose=False, flags=None)`\n\nInitialise the Portfwd.\n\nParameters:\n* `target`: the tunnel name, and also the name of the ssh configuration used\n* `ssh_config`: ssh configuration file if not the default\n* `conditions`: an iterable of `Condition`s\n which must hold before the tunnel is set up;\n the tunnel also aborts if these cease to hold\n* `test_shcmd`: a shell command which must succeed\n before the tunnel is set up;\n the tunnel also aborts if this command subsequently fails\n* `trace`: issue tracing messages; default `False`\n* `verbose`: be verbose; default `False`\n* `flags`: optional preexisting `Flags` instance\n\n## Class `Portfwds`\n\nA collection of Portfwd instances and associated control methods.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/cameron_simpson/css/commits/all", "keywords": "python2,python3", "license": "GNU General Public License v3 (GPLv3)", "maintainer": "", "maintainer_email": "", "name": "cs.app.portfwd", "package_url": "https://pypi.org/project/cs.app.portfwd/", "platform": "", "project_url": "https://pypi.org/project/cs.app.portfwd/", "project_urls": { "Homepage": "https://bitbucket.org/cameron_simpson/css/commits/all" }, "release_url": "https://pypi.org/project/cs.app.portfwd/20190602/", "requires_dist": null, "requires_python": "", "summary": "Manage persistent ssh tunnels and port forwards.", "version": "20190602" }, "last_serial": 5347576, "releases": { "20170906": [ { "comment_text": "", "digests": { "md5": "d7267dd9b4283d62195f0f2e3d9a1501", "sha256": "944f6540f25c94a789d927670985c6e4d400682fe1ede0f2a352cd0e5d11afaf" }, "downloads": -1, "filename": "cs.app.portfwd-20170906.tar.gz", "has_sig": false, "md5_digest": "d7267dd9b4283d62195f0f2e3d9a1501", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6514, "upload_time": "2017-09-06T00:05:55", "url": "https://files.pythonhosted.org/packages/37/dc/c8906561cd9f40fb30c3835cb702eefbdb4e93046a017474c6e954667ec2/cs.app.portfwd-20170906.tar.gz" } ], "20190602": [ { "comment_text": "", "digests": { "md5": "a64dc72ef5746dc2831263bbc587bff7", "sha256": "a292854cbbceac2f0b670a99f7e3e91ceec2f1eb8c24680d429b84d642ef73d2" }, "downloads": -1, "filename": "cs.app.portfwd-20190602.tar.gz", "has_sig": false, "md5_digest": "a64dc72ef5746dc2831263bbc587bff7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8054, "upload_time": "2019-06-02T00:33:15", "url": "https://files.pythonhosted.org/packages/39/50/83c38e5a1a601367e5783b89c47648e30ebe830f8c69f1873ebe54e71603/cs.app.portfwd-20190602.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a64dc72ef5746dc2831263bbc587bff7", "sha256": "a292854cbbceac2f0b670a99f7e3e91ceec2f1eb8c24680d429b84d642ef73d2" }, "downloads": -1, "filename": "cs.app.portfwd-20190602.tar.gz", "has_sig": false, "md5_digest": "a64dc72ef5746dc2831263bbc587bff7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8054, "upload_time": "2019-06-02T00:33:15", "url": "https://files.pythonhosted.org/packages/39/50/83c38e5a1a601367e5783b89c47648e30ebe830f8c69f1873ebe54e71603/cs.app.portfwd-20190602.tar.gz" } ] }