{ "info": { "author": "Florent Gallaire", "author_email": "fgallaire@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 6 - Mature", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: System :: Shells", "Topic :: Terminals :: Terminal Emulators/X Terminals" ], "description": "Achilterm\r\n=========\r\n\r\n**Achilterm** is a lightweight **UTF-8** web based terminal.\r\n\r\n.. image:: https://raw.githubusercontent.com/fgallaire/achilterm/master/img/achilterm.png\r\n\r\nAchilterm is written in Python (and some AJAX javascript for client\r\nside).\r\n\r\nAchilterm is **very simple to install** on Linux, MacOS X, FreeBSD,\r\nSolaris, cygwin and any Unix that runs Python.\r\n\r\nAchilterm is initially forked from Ajaxterm which was inspired by\r\nAnyterm.\r\n\r\nAchilterm is developed by Florent Gallaire fgallaire@gmail.com.\r\n\r\nWebsite: http://fgallaire.github.io/achilterm.\r\n\r\nDownload and Install\r\n--------------------\r\n\r\nTo install the last stable version from PyPI:\r\n\r\n::\r\n\r\n $ sudo pip install achilterm\r\n\r\nTo install the development version from GitHub:\r\n\r\n::\r\n\r\n $ git clone https://github.com/fgallaire/achilterm\r\n $ cd achilterm\r\n $ sudo python setup.py install\r\n\r\nTo run Achilterm after installation:\r\n\r\n::\r\n\r\n $ achilterm\r\n\r\nTo run Achilterm from the source without installation:\r\n\r\n::\r\n\r\n $ ./achilterm/achilterm.py\r\n\r\nThen point your browser to this URL: ``http://localhost:8022/``\r\n\r\nDocumentation and Caveats\r\n-------------------------\r\n\r\n- Achilterm support Python 2.5 and above and Python 3.2 and above\r\n\r\n- Achilterm require WebOb >= 1.0\r\n\r\n- If run as root achilterm will run ``/bin/login``, otherwise it will run\r\n ``ssh localhost``. To use an other command use the ``-c`` option.\r\n\r\n- By default Achilterm only listen at ``127.0.0.1:8022``. For remote\r\n access, it is strongly recommended to use **https SSL/TLS**, and that\r\n is simple to configure if you use the apache web server using\r\n ``mod_proxy``.\r\n\r\n Using ssl will also speed up achilterm (probably because of keepalive).\r\n\r\n- Using GET HTTP request seems to speed up achilterm, just click on GET\r\n in the interface, but be warned that your keystrokes might be loggued\r\n (by apache or any proxy). I usually enable it after the login.\r\n\r\nAchiltermlite\r\n-------------\r\n\r\nAchiltermlite is a stripped-down client-side version of Achilterm.\r\n\r\n.. image:: https://raw.githubusercontent.com/fgallaire/achilterm/master/img/achiltermlite.png\r\n\r\nCommandline usage\r\n-----------------\r\n\r\n::\r\n\r\n usage: achilterm [options]\r\n\r\n options:\r\n --version show program's version number and exit\r\n -h, --help show this help message and exit\r\n -p PORT, --port=PORT set the TCP port (default: 8022)\r\n -c CMD, --command=CMD set the command (default: /bin/login or ssh localhost)\r\n -l, --log log requests to stderr (default: quiet mode)\r\n -d, --daemon run as daemon in the background\r\n -P PIDFILE, --pidfile=PIDFILE\r\n set the pidfile (default: /var/run/achilterm.pid)\r\n -i INDEX_FILE, --index=INDEX_FILE\r\n default index file (default: achilterm.html)\r\n -u UID, --uid=UID set the daemon's user id\r\n -L, --lite use Achiltermlite\r\n -w WIDTH, --width=WIDTH set the width (default: 80)\r\n -H HEIGHT, --height=HEIGHT set the height (default: 25)\r\n\r\nConfiguration example\r\n---------------------\r\n\r\n::\r\n\r\n Listen 443\r\n NameVirtualHost *:443\r\n\r\n \r\n ServerName localhost\r\n SSLEngine On\r\n SSLCertificateKeyFile ssl/apache.pem\r\n SSLCertificateFile ssl/apache.pem\r\n\r\n ProxyRequests Off\r\n \r\n Order deny,allow\r\n Allow from all\r\n \r\n ProxyPass /achilterm/ http://localhost:8022/\r\n ProxyPassReverse /achilterm/ http://localhost:8022/\r\n \r\n\r\nOld versions\r\n------------\r\n\r\n- Achilterm 0.13 require Python 2.5 and above\r\n\r\nOlder Achilterm versions only support latin1, if you use Ubuntu or any\r\n``LANG==en_US.UTF-8`` distribution don't forget to ``$ unset LANG``:\r\n\r\n- Achilterm 0.12 require WebOb >= 1.2 (use it with Python 2.6 and 2.7)\r\n\r\n- Achilterm 0.11 require WebOb < 1.0 (use it with Python 2.5)\r\n\r\nCompared to anyterm\r\n-------------------\r\n\r\n- There are no partial updates, achilterm updates either all the screen\r\n or nothing. That make the code simpler and I also think it's faster.\r\n HTTP replies are always gzencoded. When used in 80x25 mode, almost\r\n all of them are below the 1500 bytes (size of an ethernet frame) and\r\n we just replace the screen with the reply (no javascript string\r\n handling).\r\n\r\n- Achilterm polls the server for updates with an exponentially growing\r\n timeout when the screen hasn't changed. The timeout is also resetted\r\n as soon as a key is pressed. Anyterm blocks on a pending request and\r\n use a parallel connection for keypresses. The anyterm approch is\r\n better when there aren't any keypress.\r\n\r\nLicense\r\n-------\r\n\r\nAchilterm files are released under the GNU AGPLv3 or above license.\r\n\r\nAchilterm codebase from Ajaxterm by Antony Lesuisse (email: al AT\r\nudev.org), License Public Domain.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://fgallaire.github.io/achilterm", "keywords": "sh shell bash", "license": "GNU AGPLv3+", "maintainer": "", "maintainer_email": "", "name": "Achilterm", "package_url": "https://pypi.org/project/Achilterm/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Achilterm/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://fgallaire.github.io/achilterm" }, "release_url": "https://pypi.org/project/Achilterm/0.21/", "requires_dist": null, "requires_python": null, "summary": "A lightweight UTF-8 web based terminal", "version": "0.21" }, "last_serial": 2275101, "releases": { "0.18": [ { "comment_text": "", "digests": { "md5": "e33ed024f7169b02518998836ee2baeb", "sha256": "7fda56a2dac7affad7a993597078191613ded7e304e15ad0aba39910befc5fb3" }, "downloads": -1, "filename": "Achilterm-0.18-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e33ed024f7169b02518998836ee2baeb", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15874, "upload_time": "2016-08-06T16:13:31", "url": "https://files.pythonhosted.org/packages/4a/3d/36ce0f582743fd33f67acb15cc394ff6414121a8249872bbf0a87aa2071e/Achilterm-0.18-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82ad24d1a697ebd98d1827021794e7ab", "sha256": "08b6b413c16e9645ce52e703cce896270a4d9649ab60eccc233ec82d4450df0e" }, "downloads": -1, "filename": "Achilterm-0.18.tar.gz", "has_sig": false, "md5_digest": "82ad24d1a697ebd98d1827021794e7ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58440, "upload_time": "2016-08-06T16:13:27", "url": "https://files.pythonhosted.org/packages/7e/db/61703cd9a1be74853ede015d14b5832f9bede17453223fa82225583c4cf1/Achilterm-0.18.tar.gz" } ], "0.19": [ { "comment_text": "", "digests": { "md5": "185bde80211b730e07ad906f582ea9da", "sha256": "0907951f8f4cfc5770646bc3069a2984af5fd98f127975e1603aed13d574644d" }, "downloads": -1, "filename": "Achilterm-0.19-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "185bde80211b730e07ad906f582ea9da", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15976, "upload_time": "2016-08-07T02:23:49", "url": "https://files.pythonhosted.org/packages/45/f3/913dc6d9147b66c3adc8781aae8842833e59400deda439d05c32de7cabe2/Achilterm-0.19-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8377dbd12af27cc0c512fae3b6128a7", "sha256": "2c0f386e14cfcb118b02ce3d1663eef9d192becf5dba32408bf54aa1e163d850" }, "downloads": -1, "filename": "Achilterm-0.19.tar.gz", "has_sig": false, "md5_digest": "f8377dbd12af27cc0c512fae3b6128a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58501, "upload_time": "2016-08-07T02:23:46", "url": "https://files.pythonhosted.org/packages/9d/f9/d8f1297daa63041492a2c65a2cbc1ad34b1f030123da5025bde67f250486/Achilterm-0.19.tar.gz" } ], "0.20": [ { "comment_text": "", "digests": { "md5": "6440231d1ce1c75e92c3568b0f34620d", "sha256": "f860745ed35993280e76e0e7a0f834b1d1b9049c7be26058a88a2623b9bcedd2" }, "downloads": -1, "filename": "Achilterm-0.20-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6440231d1ce1c75e92c3568b0f34620d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15978, "upload_time": "2016-08-07T19:33:46", "url": "https://files.pythonhosted.org/packages/24/d6/fc5c610925064b9d5e0db74faa50439df59f6729f67795ed9ebffb31d32c/Achilterm-0.20-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cc2096922b2e885bb228c74d5e5ceac", "sha256": "3b71f94fbc537f267656fbdcf5f7aaff320610b207d2e5ac237bf313a364ad8d" }, "downloads": -1, "filename": "Achilterm-0.20.tar.gz", "has_sig": false, "md5_digest": "7cc2096922b2e885bb228c74d5e5ceac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 105645, "upload_time": "2016-08-07T19:33:43", "url": "https://files.pythonhosted.org/packages/ed/36/cbe136c8f0bdf75f890e20599e16ffdf54ffc92ffd1a2c5699029d982d32/Achilterm-0.20.tar.gz" } ], "0.21": [ { "comment_text": "", "digests": { "md5": "174487f5cf68965cf6cc78fdc7fee65d", "sha256": "c6d386583c8aea8a6e0e082a98e59644143be45a16369f45a4551725ca94af06" }, "downloads": -1, "filename": "Achilterm-0.21-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "174487f5cf68965cf6cc78fdc7fee65d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21999, "upload_time": "2016-08-08T01:25:11", "url": "https://files.pythonhosted.org/packages/11/d3/0b879c80e1dfd72bcc08856b6074630ecbdaa568d2d595ca982199b577e6/Achilterm-0.21-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7c581a527d4b1b7fd117e442f3b6063", "sha256": "06a0a5134451364714aa65c5c19f3dcbbb98a9bd8bf599e2201abfe420c62c0a" }, "downloads": -1, "filename": "Achilterm-0.21.tar.gz", "has_sig": false, "md5_digest": "e7c581a527d4b1b7fd117e442f3b6063", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106274, "upload_time": "2016-08-08T01:25:08", "url": "https://files.pythonhosted.org/packages/b8/41/35e0b1bf58cf4cb55cdee49d4579cf927b4f7f862b4c574a6fcef35cc22d/Achilterm-0.21.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "174487f5cf68965cf6cc78fdc7fee65d", "sha256": "c6d386583c8aea8a6e0e082a98e59644143be45a16369f45a4551725ca94af06" }, "downloads": -1, "filename": "Achilterm-0.21-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "174487f5cf68965cf6cc78fdc7fee65d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 21999, "upload_time": "2016-08-08T01:25:11", "url": "https://files.pythonhosted.org/packages/11/d3/0b879c80e1dfd72bcc08856b6074630ecbdaa568d2d595ca982199b577e6/Achilterm-0.21-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7c581a527d4b1b7fd117e442f3b6063", "sha256": "06a0a5134451364714aa65c5c19f3dcbbb98a9bd8bf599e2201abfe420c62c0a" }, "downloads": -1, "filename": "Achilterm-0.21.tar.gz", "has_sig": false, "md5_digest": "e7c581a527d4b1b7fd117e442f3b6063", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 106274, "upload_time": "2016-08-08T01:25:08", "url": "https://files.pythonhosted.org/packages/b8/41/35e0b1bf58cf4cb55cdee49d4579cf927b4f7f862b4c574a6fcef35cc22d/Achilterm-0.21.tar.gz" } ] }