{ "info": { "author": "Carson Gee", "author_email": "x@carsongee.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Information Technology", "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4" ], "description": "Archelon Daemon\n===============\n\nThis is the Web server side of archelon. Once it is all configured\nand wired up to archelonc it can be used to store your shell history\nfrom all your hosts.\n\nIt is a simple Flask app that is generally designed to be wired up to\nan elasticsearch host to provide a nicely indexed shell history, and\nshould be deployable for free on heroku using an elasticsearch addon.\n\n\nInstallation and Configuration\n------------------------------\n\n.. code-block:: bash\n\n pip install archelond\n\nSecurity is obviously important for shell history, and to setup\nauthentication we use basic authentication using apache htpasswd files\nas the user database. To add one for yourself and configure archelond\nto use it, run something like:\n\n.. code-block:: bash\n\n htpasswd -c ~/.htpasswd username\n export ARCHELOND_HTPASSWD_PATH=~/.htpasswd\n\nAfter that minimal setup we can try things out with just a simple command of:\n\n.. code-block:: bash\n\n archelond\n\nWhich will fire up the debug/development server using an in memory\nbash history data store that is very forgetful. Once it is up, you\nshould be able to go `http://localhost:8580/\n`_, login with the username and password you\ncreated in your htpasswd file, and see a lovely Web interface for\nsearching and deleting your shell history similar to:\n\n.. image:: _static/images/archelond_screen.png\n :align: center\n\n. It also provides a simple\nbutton to reveal the token you need in archelonc to connect the two\ntogether. To access the RESTful API side directly, you can check out\nthe sample commands by visiting\n`http://localhost:8580/api/v1/history\n`_ or get your token for use\nwith archelonc `http://localhost:8580/api/v1/token\n`_.\n\nWiring Up to Elasticsearch\n--------------------------\n\nIn order to have your history survive start ups we can use\nElasticsearch. You can either install it locally, or grab it from an\nadd-on on Heroku. Once you have the connection URL, we just need to\nadd a couple environment variables to point at the service and set the\nstorage provider class with something like:\n\n.. code-block:: bash\n\n export ARCHELOND_ELASTICSEARCH_URL='http://localhost:9200'\n export ARCHELOND_ELASTICSEARCH_INDEX='history'\n export ARCHELOND_DATABASE='ElasticData'\n\nThe index can be changed as desired, but it is the index in\nelasticsearch that will be used to store the history.\n\n.. note::\n\n archelond with the ``ElasticData`` can support multiple users as it\n uses the user in the document type\n\nRunning in Production\n---------------------\n\nRunning the ``archelond`` command is good for testing out, but to run\nit in production you will want to run it through a proper wsgi\napplication server. As an example, we've added uwsgi in the\nrequirements and it can be run in production with something like:\n\n.. code-block:: bash\n\n uwsgi --http :8580 -w archelond.web:app\n\nand then a Web server like nginx proxying over https in order to\nfurther secure your shell history.\n\nRunning in Heroku\n~~~~~~~~~~~~~~~~~\n\nFor heroku, it is very easy to setup the application part. Just\ncreate a requirements.txt file in the root of your repo with at least\none line:\n\n.. code-block:: text\n\n archelond\n\nSetup a Procfile with:\n\n.. code-block:: text\n\n web: uwsgi uwsgi.ini\n\nand a uwsgi.ini that looks something like:\n\n.. code-block:: ini\n\n [uwsgi]\n http-socket = :$(PORT)\n master = true\n processes = 10\n die-on-term = true\n module = archelond.web:app\n memory-report = true\n\nYou also need to setup your secrets using ``heroku config:set``\ncommands. The vars that need to be set minimally for an elasticsearch\nversion are:\n\n.. code-block:: bash\n\n ARCHELOND_DATABASE=\"ElasticData\"\n ARCHELOND_ELASTICSEARCH_INDEX=\"my_index\"\n ARCHELOND_ELASTICSEARCH_URL=\"http://example.com/elastic_search\"\n ARCHELOND_FLASK_SECRET=\"a_very_long_randomized_string\"\n ARCHELOND_HTPASSWD=\"username:hashfromhtpasswd\"\n ARCHELOND_HTPASSWD_PATH=\"htpasswd\"\n\n.. note::\n\n I had to also add ``-e\n git+https://github.com/elasticsearch/elasticsearch-py.git@master#egg=elasticsearch``\n to my requirements file because my elasticsearch server needed to\n specify https, username, and password. Currently the release\n version ``1.2.0`` didn't have that feature, but it is available in\n their master branch", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/carsongee/archelon", "keywords": null, "license": "AGPLv3", "maintainer": null, "maintainer_email": null, "name": "archelond", "package_url": "https://pypi.org/project/archelond/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/archelond/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/carsongee/archelon" }, "release_url": "https://pypi.org/project/archelond/0.6.0/", "requires_dist": null, "requires_python": null, "summary": "Web server for Web shell history", "version": "0.6.0" }, "last_serial": 1689729, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "f9cf393a004194fc5e914fad51b93dfa", "sha256": "5de03e19649635c22418c333a16b98ecade40a6c891d199d32b0447e1accaef1" }, "downloads": -1, "filename": "archelond-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f9cf393a004194fc5e914fad51b93dfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7985, "upload_time": "2014-12-28T18:46:40", "url": "https://files.pythonhosted.org/packages/4e/cf/9775f4be91caeea55942a43b20782b9c3283b0ca3e6ccdb3a83391fb6c8a/archelond-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c05499159100b2859afc325cb2aeb69d", "sha256": "2a6b857617ec02eb9506e39fd99fb44983d293f58d0e7c903fcf81f9e0d7abf8" }, "downloads": -1, "filename": "archelond-0.2.0.tar.gz", "has_sig": false, "md5_digest": "c05499159100b2859afc325cb2aeb69d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7936, "upload_time": "2014-12-28T22:52:41", "url": "https://files.pythonhosted.org/packages/c7/53/8a9b875821514ad0346e79d88247a9b5027f93d1b94f460b98b19ecbac5e/archelond-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "3b96a8f4d6e1ae62d27f58544dfe8683", "sha256": "e597e54d74ae3debc83a0b273f5b832be7946f3d528c0511effb6221ba7202f9" }, "downloads": -1, "filename": "archelond-0.2.1.tar.gz", "has_sig": false, "md5_digest": "3b96a8f4d6e1ae62d27f58544dfe8683", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7955, "upload_time": "2014-12-28T23:08:41", "url": "https://files.pythonhosted.org/packages/35/e3/956db787b19a8db51459df4aef3456f7f535737401a6d6c5d1a2c0537836/archelond-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a2f9740bbf30ab1f5917d6820de5abb9", "sha256": "fdb48100c3de741e1382b4abfda8f110df7bdd1e42f189a46eb78ae70d2802b1" }, "downloads": -1, "filename": "archelond-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a2f9740bbf30ab1f5917d6820de5abb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 601883, "upload_time": "2015-01-02T23:36:35", "url": "https://files.pythonhosted.org/packages/44/49/7c6768a64bdbb6e481e0194f3ce023494abe04b940ac649096d5fbf9c2aa/archelond-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "312166d365cc07ad45cf9be604b62379", "sha256": "8e68c57a0b4c0a9b3f0398c4ff1fcb0067860164c48ce5f76f5815e9b15c82ee" }, "downloads": -1, "filename": "archelond-0.3.1.tar.gz", "has_sig": false, "md5_digest": "312166d365cc07ad45cf9be604b62379", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 742421, "upload_time": "2015-01-02T23:49:39", "url": "https://files.pythonhosted.org/packages/c8/b0/0676013d8095b6ab0d1ea99c17f03e2f60e380b5539d94a5f44549575bd4/archelond-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "cd93137cb1a7fc3fdaf3865f359d5408", "sha256": "c5b7c7c6bbd8e092340ca2870a9d0eb85a067636cf25fe34b4049761c93d6249" }, "downloads": -1, "filename": "archelond-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cd93137cb1a7fc3fdaf3865f359d5408", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1026974, "upload_time": "2015-01-04T23:48:29", "url": "https://files.pythonhosted.org/packages/bb/19/96dbada92e400223a48b25c39a12ba7d10c30fe57379e0e0733b1b1471a6/archelond-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "9fdc4d0863faae4ee2e3429bcad09087", "sha256": "cbe4b452882fc0376d4420ae6f435247d7cdc95e0ba9eca639c0e98dd223fe6b" }, "downloads": -1, "filename": "archelond-0.4.1.tar.gz", "has_sig": false, "md5_digest": "9fdc4d0863faae4ee2e3429bcad09087", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 595693, "upload_time": "2015-01-05T00:43:33", "url": "https://files.pythonhosted.org/packages/b8/1c/2e1045f2963a27c7a5e1ff1276d2c646da23699bbd350c8019fcf0a658a6/archelond-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "1eb5be22cd797152afd5df2df19eb8a6", "sha256": "cb930cefe22386f11fb2d50907889357bed74dce39de247f22bd00f0633d10ca" }, "downloads": -1, "filename": "archelond-0.5.0.tar.gz", "has_sig": false, "md5_digest": "1eb5be22cd797152afd5df2df19eb8a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 876973, "upload_time": "2015-02-21T18:28:01", "url": "https://files.pythonhosted.org/packages/a0/45/33b9a91a435b4a1c4c53b3d3627c83c8bd3447e27646fbc949462cd7d19e/archelond-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2f1fc74e961dadbe21a374bda58bce24", "sha256": "2546cdfa982cdc081e9bfb6d4652f9bf62e793c7b607d6ff2e5e3bdab795e269" }, "downloads": -1, "filename": "archelond-0.6.0.tar.gz", "has_sig": false, "md5_digest": "2f1fc74e961dadbe21a374bda58bce24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 601568, "upload_time": "2015-08-23T16:11:57", "url": "https://files.pythonhosted.org/packages/09/cc/d10a4fa8e8f0835ef039c8bfaef1486c4d6227a7baa370dc669da1786d7f/archelond-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2f1fc74e961dadbe21a374bda58bce24", "sha256": "2546cdfa982cdc081e9bfb6d4652f9bf62e793c7b607d6ff2e5e3bdab795e269" }, "downloads": -1, "filename": "archelond-0.6.0.tar.gz", "has_sig": false, "md5_digest": "2f1fc74e961dadbe21a374bda58bce24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 601568, "upload_time": "2015-08-23T16:11:57", "url": "https://files.pythonhosted.org/packages/09/cc/d10a4fa8e8f0835ef039c8bfaef1486c4d6227a7baa370dc669da1786d7f/archelond-0.6.0.tar.gz" } ] }