{ "info": { "author": "Christopher Groskopf", "author_email": "staringmonkey@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Utilities" ], "description": "relay\n========\n\nMeta-magical SSH tunnels for remote developers behind firewalls.\n\nEver tried to pair-program with someone who works behind a firewall? You want to SSH into their machine, but you can't! Relay makes it possible to share your development environemnt with anyone by using another server in the middle to proxy the connection. And it doesn't just work with SSH--you can tunnel the webserver too!\n\nServer setup\n------------\n\nRelay requires that you have a server running somewhere public which you can use to bounce connections from between your users. We use an EC2 micro in a public security group, but you can use anything you want. You'll need to make sure whatever ports you map in your ``ports.json`` are open to the world.\n\nInstall\n--------\n\nRelay can be installed in a virtualenv, but we recommend installing it with sudo so it is always available:\n\n.. code:: bash\n\n $ sudo pip install relay\n\nGeneral setup\n-------------\n\n*(nprapps users see the next section)*\n\nRelay uses a configuration file located at ``~/.relay.conf``. Create this file with contents such as:\n\n.. code:: ini\n\n [relay]\n\n # User to connect to the relay server as\n user = ubuntu\n\n # Hostname or IP of the relay server\n server = relay_server.your_domain.com\n\n # Absolute path to the public and private SSH keys\n public_key = /path/to/your/public_key.pub\n private_key = /path/to/your/private_key\n\n # Username of the pair programmer account on each developer computer\n pair_user = relay\n\n # Absolute path to the port mapping file\n ports_json = /path/to/your/ports.json\n\n # Absolute path to a file containing bash aliases to be installed when creating the pair programmer user account\n bash_profile = /path/to/your/bash_profile\n\n``ports.json`` is a mapping of user's local ports to remote ports on the server, so that users will never collide when creating SSH tunnels. Create this file with contents such as:\n\n.. code:: javascript\n\n {\n \"chris\": {\n \"22\": \"2222\",\n \"8000\": \"8000\"\n },\n \"katie\": {\n \"22\": \"2223\",\n \"8000\": \"8001\"\n },\n }\n\n``bash_profile`` is totally optional, but could contain aliases or environment variables you want every user to have automatically available.\n\nYou now need to create a ``relay`` user. This process is automated:\n\n.. code:: bash\n\n $ relay setup\n\nIf you're running OS X, you need to enable remote login for the newly created ``relay`` user. Open System Preferences and navigate to the \"Sharing\" preference pane.\n\nCheck the box next to \"Remote Login.\" You can either add the ``relay`` user to the allowed users, or just leave it open to \"All users.\" \n\n.. image:: remotelogin.png\n\nNPRApps setup\n-----------------\n\nPre-baked configuration files are in our Dropbox folder. You must have Dropbox installed, syncing to ``~/Dropbox`` and the ``nprapps`` shared folder synced to your local computer. Then run:\n\n.. code:: bash\n\n $ ln -s ~/Dropbox/nprapps/relay/relay.conf ~/.relay.conf\n $ relay setup\n\nSharing SSH\n------------------\n\nTo share your SSH connection (for tmux'ing), open a new terminal (or tab or tmux pane):\n\n.. code:: bash\n\n $ relay user:$USER share:22\n\nWhere ``$USER`` is your username in ``ports.json``.\n\nTo connect to a shared SSH connection:\n\n.. code:: bash\n\n $ relay user:$USER ssh\n\nWhere ``$USER`` is the username in ``ports.json`` of the user sharing the connection.\n\nSharing development webserver\n-----------------------------\n\nTo share your local development webserver, open a new terminal (or tab or tmux pane):\n\n.. code:: bash\n\n $ relay user:$USER share:8000\n\nWhere ``$USER`` is your username in ``ports.json``.\n\nTo connect open a shared webserver in your browser:\n\n.. code:: bash\n\n $ relay user:$USER web\n\nWhere ``$USER`` is the username in ``ports.json`` of the user sharing the webserver.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://blog.apps.npr.org/", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "relay", "package_url": "https://pypi.org/project/relay/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/relay/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://blog.apps.npr.org/" }, "release_url": "https://pypi.org/project/relay/0.0.8/", "requires_dist": null, "requires_python": null, "summary": "Meta-magical SSH tunnels for remote developers behind firewalls.", "version": "0.0.8" }, "last_serial": 798758, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "bf05e904de45dde925a06ffcd8f2ea8e", "sha256": "9c8a208405a90577b823115a65e32cfabffaca2ab83d25cce9ded3dde07d2b17" }, "downloads": -1, "filename": "relay-0.0.1.tar.gz", "has_sig": false, "md5_digest": "bf05e904de45dde925a06ffcd8f2ea8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2985, "upload_time": "2013-03-07T19:18:48", "url": "https://files.pythonhosted.org/packages/22/b2/aea317f39aabbc73c710f80beeb49d11d715e0276ed627d973862de23c83/relay-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "0e78a344ac6220f11eecad6d91e2425a", "sha256": "40c71c10c384538d4c1b7fdb7273ae868583c7ccb226d5b50e6c054703a0abd2" }, "downloads": -1, "filename": "relay-0.0.2.tar.gz", "has_sig": false, "md5_digest": "0e78a344ac6220f11eecad6d91e2425a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3191, "upload_time": "2013-03-07T19:31:49", "url": "https://files.pythonhosted.org/packages/c0/68/77e201d5530a96c16d63d7fd7d5b7c93d5c7c8f147064e78a6e8fe1cf12f/relay-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "4562c026bdd3fea84baa822430268950", "sha256": "91de8bbe6315171774f59e352fbd331a3d1ef3c25880152ce8e697003ac4671f" }, "downloads": -1, "filename": "relay-0.0.3.tar.gz", "has_sig": false, "md5_digest": "4562c026bdd3fea84baa822430268950", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3191, "upload_time": "2013-03-07T19:35:44", "url": "https://files.pythonhosted.org/packages/a7/30/95290586b27a0afde4d8a16fbf67b5b3e8ecc478e99da0b80c91a8dacc3a/relay-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "ef2e64874108016aa41e11fc4a042eb9", "sha256": "3742e487b917f01d64a8771b9ae24067f40482c75ff7cf29d807cd1f7d818713" }, "downloads": -1, "filename": "relay-0.0.4.tar.gz", "has_sig": false, "md5_digest": "ef2e64874108016aa41e11fc4a042eb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3190, "upload_time": "2013-03-07T19:44:28", "url": "https://files.pythonhosted.org/packages/a7/80/fbc6f229f397e1dc2d59f09c0d30c178be740ad0397f8bed66649772b35a/relay-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "210284163f2e56c83cd8f28da1b3190b", "sha256": "8d4e11e9b71c6d9914a97f6e6e51130a3a1cef73244d2aa718ace7859653de37" }, "downloads": -1, "filename": "relay-0.0.5.tar.gz", "has_sig": false, "md5_digest": "210284163f2e56c83cd8f28da1b3190b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3197, "upload_time": "2013-03-07T20:03:31", "url": "https://files.pythonhosted.org/packages/d2/6d/24bceeeefb5c58980d35dd03aa4b7f7d5dc155af4116814eda297d7f79f3/relay-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "a899e1dc2c5d73af6534460da85467a9", "sha256": "7780cfa89b5fb1e48549a6c914ad62984dbe44f72692fbb0fad4ae53a1e18ce9" }, "downloads": -1, "filename": "relay-0.0.6.tar.gz", "has_sig": false, "md5_digest": "a899e1dc2c5d73af6534460da85467a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3283, "upload_time": "2013-03-07T20:31:25", "url": "https://files.pythonhosted.org/packages/cb/83/26c930cece7395eecc1634d57ddd30dd3f9d8f830d502b37fe6b5b5ab129/relay-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "f00b64482f48250137fedb0038d5dd44", "sha256": "546d60d3098673ba6a6a1aee375a342f531976f4f3f1fde253fc37da5bd4f784" }, "downloads": -1, "filename": "relay-0.0.7.tar.gz", "has_sig": false, "md5_digest": "f00b64482f48250137fedb0038d5dd44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5188, "upload_time": "2013-03-12T16:39:02", "url": "https://files.pythonhosted.org/packages/1a/b8/44a76c87025e75884111ef3966ce274eebf69adf3b23a73812c2581ced2f/relay-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "e3e56ff56ed5a760f2ea2fbb065c50af", "sha256": "2dab04398600ebf1defd6a5fac077d569c83962940682f4c9f1341cd1535edb5" }, "downloads": -1, "filename": "relay-0.0.8.tar.gz", "has_sig": false, "md5_digest": "e3e56ff56ed5a760f2ea2fbb065c50af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5306, "upload_time": "2013-03-12T20:51:54", "url": "https://files.pythonhosted.org/packages/63/00/db30d7ab964e1b052dc72406214d58eeea7c2d77070ac2ea0aeb8334feb3/relay-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e3e56ff56ed5a760f2ea2fbb065c50af", "sha256": "2dab04398600ebf1defd6a5fac077d569c83962940682f4c9f1341cd1535edb5" }, "downloads": -1, "filename": "relay-0.0.8.tar.gz", "has_sig": false, "md5_digest": "e3e56ff56ed5a760f2ea2fbb065c50af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5306, "upload_time": "2013-03-12T20:51:54", "url": "https://files.pythonhosted.org/packages/63/00/db30d7ab964e1b052dc72406214d58eeea7c2d77070ac2ea0aeb8334feb3/relay-0.0.8.tar.gz" } ] }