{ "info": { "author": "Matt Long", "author_email": "matt@mattlong.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# hermes\n\nHermes is an extensible XMPP-based chatroom server written in Python.\nEasily setup and manage chatrooms for friends or colleagues.\n\n## How it Works\n\nSupply your own XMPP-based accounts (Google accounts work great!) to serve as chatroom hosts, add a bit of configuration, and that's it.\nAll chatroom members are invited to chat with the chatroom host which will in turn broadcast their messages to all other members.\n\n## Usage\n\nThe \"Hello World\" usage of Hermes looks like this. Put the following in `chatserver.py`, update the user and chatroom info, and run it:\n\n from hermes.api import run_server\n \n brain = { 'JID': 'brain@wb.com', 'NICK': 'brain', 'ADMIN': True }\n pinky = { 'JID': 'pinky.suavo@wb.com', 'NICK': 'pinky' }\n \n chatrooms = {\n 'world-domination-planning': {\n 'JID': 'world.domination.planning@wb.com',\n 'PASSWORD': 'thesamethingwedoeverynight',\n 'SERVER': ('talk.google.com', 5223,),\n 'MEMBERS': [pinky, brain],\n },\n }\n \n run_server(chatrooms)\n\n## Installation\n\nAvailable from PyPI: . pip is the recommended installation method:\n\n pip install hermes\n\n## Commands\n\nHermes interprets some messages as commands:\n\n* `/mute` - Mute the chatroom. Messages are queued up for whenever you unmute the chatroom.\n\n* `/unmute` - Unmute the chatroom. Receive all messages that were queued while the chatroom was muted.\n\n* `/invite ` - Invite members to the chatroom. Available to admins only.\n\n* `/kick ` - Kick members from the chatroom. Available to admins only.\n\n* `/marco` - Not sure if you're still connected to the chatroom? Chatroom replies to you (and only you) with \"polo\".\n\n## Extensibility\n\nYou can extend the base chatroom class `hermes.Chatroom` to modify or add extra functionality.\n\nAdding a `command_patterns` static property to your class should be particularly useful for extensions.\nIt's a list of regular expression/method name pairs. Each incoming message is tested against the regexes until a match is found.\nOn a match, the named instance method is invoked to handle the message instead of the default message-handling pipeline.\n\nSpecify the path to your creation as a string or the Class itself as the `CLASS` of your chatroom:\n\n from hermes.api import run_server, Chatroom\n\n class BillyMaysChatroom(Chatroom):\n \tcommand_patterns = ((r'.*', 'shout'),)\n\n \tdef shout(self, sender, body, match):\n body = body.upper() #SHOUT IT\n self.broadcast(body)\n\n chatrooms = {\n 'world-domination-planning': {\n 'CLASS': 'BillyMaysChatroom',\n 'JID': 'world.domination.planning@wb.com',\n 'PASSWORD': 'thesamethingwedoeverynight',\n 'SERVER': ('talk.google.com', 5223,),\n 'MEMBERS': [pinky, brain],\n },\n }\n\t\n\trun_server(chatrooms)\n\n## Upcoming Features\n\n* **Persistence**: Allow chatroom configuration/state/history to be persisted\n\n## Is it any good?\n\nYes.\n\nElaborate, you say? Hermes has been successfully used \"in production\" to run several chatrooms for the Crocodoc team since the first commit. It's good to have guinea pigs.\n\n## License\n\nHermes is an ISC licensed library. See LICENSE for more details. If you insist on compensating me, I'd let you buy me a beer. Or just donate money to a good cause...that'd probably be best.\n\n## Can I Contribute?\n\nYes, please do. Pull requests are great. I'll totally add a CONTRIBUTORS.txt when Hermes gets its first contributor.\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mattlong/hermes", "keywords": null, "license": "ISC", "maintainer": null, "maintainer_email": null, "name": "hermes", "package_url": "https://pypi.org/project/hermes/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/hermes/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mattlong/hermes" }, "release_url": "https://pypi.org/project/hermes/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "Hermes is an extensible XMPP-based chatroom server written in Python.", "version": "0.3.0" }, "last_serial": 792881, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "77d6858f7bc4502d167fd0223a07139f", "sha256": "a2c4f9cdc77dbe07fb5939795b527ac86b9dba6ec5e2231b3d75fc9da9f4f86f" }, "downloads": -1, "filename": "hermes-0.2.2.tar.gz", "has_sig": false, "md5_digest": "77d6858f7bc4502d167fd0223a07139f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4601, "upload_time": "2012-04-27T09:17:43", "url": "https://files.pythonhosted.org/packages/88/01/116a3fbd88cde57de5d7a8d88d41ece3abc6eda9e0f5d3c9db2c06a8ed88/hermes-0.2.2.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d9dd363727e9f34c36a5a522582740fc", "sha256": "02368365283ef3656226c9a8bb65aabeb3cf95cdc9fae795f5057c5a7b64cd75" }, "downloads": -1, "filename": "hermes-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d9dd363727e9f34c36a5a522582740fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7320, "upload_time": "2012-09-17T05:33:10", "url": "https://files.pythonhosted.org/packages/b5/04/0a6da4d688ea0b0db134133436c93c80dd03dead7450a3bd5e2f461915c9/hermes-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "b77db9fcb1866e527193f31787b7b374", "sha256": "70dcd65f5954967fd834edc9f89ba899d2761325fd563f46f3b3b2a50b0ab4ba" }, "downloads": -1, "filename": "hermes-0.2.5.tar.gz", "has_sig": false, "md5_digest": "b77db9fcb1866e527193f31787b7b374", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6971, "upload_time": "2012-09-17T05:51:26", "url": "https://files.pythonhosted.org/packages/ff/4f/aeb5a73e05a569c3871a00a29a56d870c346c1f0e86f47cfaeed090f0537/hermes-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "8f281eb77c30bc16cdab0808ca678d3d", "sha256": "f4b5270b9dcbfc2ca11b56615edcab2c9e547987c26c5cfe4ec99b156b77a042" }, "downloads": -1, "filename": "hermes-0.2.6.tar.gz", "has_sig": false, "md5_digest": "8f281eb77c30bc16cdab0808ca678d3d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7031, "upload_time": "2012-09-17T18:11:38", "url": "https://files.pythonhosted.org/packages/bb/6e/2a66f28c1badc0029c45f643b4998f306cb8b6229b7901e6503aeb009fb2/hermes-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "fce34cdc7594d33aa97e4ff9389ab228", "sha256": "d3f8b6ccc5ac558e1a3b0d68f3290da1ef15c382dd2e94a4a4c49df2aadefb39" }, "downloads": -1, "filename": "hermes-0.2.7.tar.gz", "has_sig": false, "md5_digest": "fce34cdc7594d33aa97e4ff9389ab228", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7043, "upload_time": "2012-09-26T22:54:33", "url": "https://files.pythonhosted.org/packages/e0/6b/12cd279213b00d462af01d1bd0cf334f933524195ed02239a6f23d4700ef/hermes-0.2.7.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "823bf880f13081f32b632516acd9367a", "sha256": "62327bbbf1d41b2d3d186bfec023b5c4e98497aa7ca0e93a29e7296592e8810f" }, "downloads": -1, "filename": "hermes-0.3.0.tar.gz", "has_sig": false, "md5_digest": "823bf880f13081f32b632516acd9367a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7090, "upload_time": "2013-03-19T19:06:13", "url": "https://files.pythonhosted.org/packages/03/99/ca7a8565973af70ddcbb75b78ba8d9322c5b85ea705ab0158c310a4d4b18/hermes-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "823bf880f13081f32b632516acd9367a", "sha256": "62327bbbf1d41b2d3d186bfec023b5c4e98497aa7ca0e93a29e7296592e8810f" }, "downloads": -1, "filename": "hermes-0.3.0.tar.gz", "has_sig": false, "md5_digest": "823bf880f13081f32b632516acd9367a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7090, "upload_time": "2013-03-19T19:06:13", "url": "https://files.pythonhosted.org/packages/03/99/ca7a8565973af70ddcbb75b78ba8d9322c5b85ea705ab0158c310a4d4b18/hermes-0.3.0.tar.gz" } ] }