{ "info": { "author": "Arnaud Joset", "author_email": "info@agayon.be", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3 :: Only", "Topic :: Communications", "Topic :: Communications :: File Sharing", "Topic :: Internet :: XMPP" ], "description": "Errol\n=====\n\nErrol is a file sender that rely on\n`inotify `__. It can be used to\nwatch a directory and automatically transfers the new files (or modified\nones) with XMPP.\n\nPrerequisites\n-------------\n\nErrol needs the following requirements:\n\n- A system supporting\n `inotify `__ (Linux).\n- an XMPP (jabber) account supporting the following XEPs: `Stream\n Management `__,\n `Publish-Subscribe `__,\n `Multi-User Chat `__\n- A pubsub service where the nodes can be set as open. The node name is\n defined in the configuration file. I personally use\n `sat_pubsub `__. A pubsub\n component developed for the project `Salut \u00e0\n Toi `__.\n- A Multi-User Chat because not all XMPP accounts support PubSub. For\n now, some information are still shared through MUC messages. This\n behavior could change in the future.\n\n| You can use your own XMPP server or choose a XMPP service among the\n following list.\n| https://conversations.im/compliance/\n\nCreate the pubsub node\n^^^^^^^^^^^^^^^^^^^^^^\n\nThis step is optional if you already have a write access on the pubsub\nnode. The following example use\n`jp `__, the Salut \u00e0\u00a0 Toi\ncommand-line interface but\n`slixmpp `__ or\n`sleekxmpp `__ can be used.\n\n::\n\n $ jp pubsub node create -f publish_model open be.agayon.errol:0 -s pubsub.agayon.be -c\n\nThe node name be.agayon.errol:0 is recommended in order to identify the\nfunctionnality.\n\nAs an example, there are the node options on the service\npubsub.agayon.be:\n\n::\n\n $ jp pubsub node info be.agayon.errol:0 -s pubsub.agayon.be\n persist_items: True\n deliver_payloads: True\n serial_ids: False\n publish_model: open\n access_model: open\n send_last_published_item: on_sub\n\nTests\n~~~~~\n\nYou can test your setup with the examples scripts of\n`slixmpp `__.\n\n- `pubsub_client.py `__\n- `pubsub_events.py `__\n- `s5b_receiver.py `__\n- `s5b_sender.py `__\n\nExample:\n\n::\n\n ./s5b_file_sender.py -j jid@example.org -p pass -r john@example.org -f /path/to/file.txt \n\nSee the scripts for more information.\n\nGetting started with Errol\n--------------------------\n\nFirst you need to clone the repository. Errol needs the following\ndependencies:\n\n- `slixmpp `__ (python 3 only)\n- `asyncio `__\n- `configparser `__\n- `aionotify `__\n\nInstalling\n----------\n\nYou can easily install errol with pip:\n\n.. code:: sh\n\n $ pip install errol\n\n**git**\n\n::\n\n $ python3 setup.py install\n\nErrol can easily be installed in a\n`virtualenv `__.\n\n**Archlinux**\n\n::\n\n A PKGBUILD will be available soon.\n\nConfiguration\n-------------\n\nYou need to provide information about the XMPP account.\n\n::\n\n $ cat config.example.ini\n\n [XMPP]\n pubsub=pubsub.example.org\n node=be.agayon.errol:0\n room=chat@chat.example.org\n jid=jid@example.org/errol\n password=pass\n ressource_receiver=-receiver\n ressource_sender=-\n nick_sender=example_sender\n nick_receiver=example_receiver\n receiver=jid@example.org/errol-receiver\n presence_file=/tmp/errol_presence.txt\n\n- jid : the jabber account\n- password: the xmpp password\n- pubsub: the pubsub server (publish activity)\n- room: the MUC (chatroom) where errol display information.\n- presence_file: a writable file used to keep track of presences. When\n receiver is online, the file contains \u20181\u2019 and \u20180\u2019 otherwise.\n\nThe files will be sent by jid@example.org/errol-0 and received by\njid@example.org/errol-receiver . The nicks are the usernames used on the\nMUC.\n\nRunning\n-------\n\nOnce installed, Errol can be launched in a terminal.\n\n::\n\n $ errol --help\n usage: errol [-h] [-e EVENTS] [-f FILE] [-d] -p PATH -c COMMAND\n\n Automatic XMPP file sender and directory watcher\n\n optional arguments:\n -h, --help show this help message and exit\n -e EVENTS, --events EVENTS\n Number of events to watch (delete, create modify) in\n the directory. Once reached, the program stops.\n -f FILE, --file FILE Config file containing XMPP parameters\n -d, --debug set logging to DEBUG\n -p PATH, --path PATH The path watched.\n -c COMMAND, --command COMMAND\n The executed command: xmpp or watcher\n\n**On device A**\n\nIf you want to watch the directory /tmp/sender, the following command\ncan be used:\n\n::\n\n $ errol -f config.example.ini -p /tmp/sender -c watcher\n\nAll modified or new files created in the watched location will be sent\nby XMPP.\n\n**On device B**\n\nIf you want to receive the files, you have to launch Errol with the\nfollowing command line.\n\n::\n\n $ errol -f config.example.ini -p /tmp/receiver -c xmpp\n\nAll the received files will be stored in the directory defined with the\noption \u2018-p\u2019.\n\nLaunch with systemd\n===================\n\nErrol can be launched with systemd. Two unit files are provided to help\nyou:\n\n- errol_sender.service\n- errol_watcher.service\n\nFirst, you need to create the config directory and copy the unit files.\n\n::\n\n $ mkdir -p ~/.config/errol/\n $ mkdir -p ~/.config/systemd/user/\n $ cp systemd/environment.sh ~/.config/errol/\n $ cp systemd/errol_watcher.service ~/.config/systemd/user/\n $ cp systemd/errol_sender.service ~/.config/systemd/user/\n\nThen, you can edit the environment and the unit files to match your\npreferences and reload the units.\n\n::\n\n $ systemctl --user daemon-reload\n\nThe units can then be launched and activated at boot:\n\n::\n\n $ systemctl --user start errol_sender\n $ systemctl --user start errol_watcher\n $ systemctl --user enable errol_sender\n $ systemctl --user enable errol_watcher\n\nIf you encounter some problems, you can read the logs with the following\ncommand:\n\n::\n\n $ journalctl --user -xe\n $ systemctl --user status errol_watcher.service\n $ systemctl --user status errol_sender.service\n\nLicense\n-------\n\nThis project is licensed under the GPLv3 - see the\n`LICENSE.txt `__\nfile for details\n\nAcknowledgments\n---------------\n\n- `Slixmpp `__ for their nice\n library.\n- French XMPP community (sat@chat.jabberfr.org,\n jabberfr@chat.jabberfr.org)\n- Goffi from the `Salut \u00e0 Toi `__ project.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/jnanar/errol", "keywords": "xmpp file sharing aionotify", "license": "", "maintainer": "", "maintainer_email": "", "name": "errol", "package_url": "https://pypi.org/project/errol/", "platform": "", "project_url": "https://pypi.org/project/errol/", "project_urls": { "Homepage": "https://gitlab.com/jnanar/errol" }, "release_url": "https://pypi.org/project/errol/1.0.7/", "requires_dist": [ "aionotify", "slixmpp" ], "requires_python": ">=3.4", "summary": "Errol is a file sender that rely on inotify. It can be used to watch a directory and automatically transfer the new files (or modified ones) with XMPP.", "version": "1.0.7" }, "last_serial": 3659024, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "21add45e3f78ac0d7351d4900d6cd32e", "sha256": "5af7bcdf7b7bf57ccca5976a1dd04c285f2a717cffbef61bc3ed5457d5e5da6f" }, "downloads": -1, "filename": "errol-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "21add45e3f78ac0d7351d4900d6cd32e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 14320, "upload_time": "2017-12-31T10:37:21", "url": "https://files.pythonhosted.org/packages/ab/27/36ec07c603372cfa8ca23b2f0ba2a992bdbe00ca9d09687e225be939095d/errol-1.0.0-py3-none-any.whl" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "2c92cebdec833a149c0ba6caede56186", "sha256": "1873a9cae9a33c7442a2452b0a6fd1cc9dc020ac5e653931ca74d5f560121de2" }, "downloads": -1, "filename": "errol-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "2c92cebdec833a149c0ba6caede56186", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 14564, "upload_time": "2017-12-31T11:48:28", "url": "https://files.pythonhosted.org/packages/ee/8e/33e79da0bfd8da28b40cf3375c35d41cc3b57661cc55b1e4ab8cfe2cc3f1/errol-1.0.4-py3-none-any.whl" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "c9bf622ccb6dfe5ef89d52abc9452597", "sha256": "e8da67ec3fd548fee14ec022aa64ed8d8c7d84febc93be975e1688e14c4bdfb8" }, "downloads": -1, "filename": "errol-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "c9bf622ccb6dfe5ef89d52abc9452597", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15162, "upload_time": "2018-01-09T14:21:22", "url": "https://files.pythonhosted.org/packages/a7/8d/dfe7bee186c87c7b4623f6a91b36d73e04e096a30f210f44f0fa080e6f35/errol-1.0.6-py3-none-any.whl" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "2b7fc9dedae9f6309ed0388438c19304", "sha256": "a1f053ffadd67a44fda4005d2f8eefa0f681535b3c5178634461097b50a9dc71" }, "downloads": -1, "filename": "errol-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2b7fc9dedae9f6309ed0388438c19304", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15788, "upload_time": "2018-03-11T14:15:57", "url": "https://files.pythonhosted.org/packages/aa/b8/3ce31befad0d01b019c5a9381335af9ecebadbec5f51e6ab471f27ff9565/errol-1.0.7-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2b7fc9dedae9f6309ed0388438c19304", "sha256": "a1f053ffadd67a44fda4005d2f8eefa0f681535b3c5178634461097b50a9dc71" }, "downloads": -1, "filename": "errol-1.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "2b7fc9dedae9f6309ed0388438c19304", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15788, "upload_time": "2018-03-11T14:15:57", "url": "https://files.pythonhosted.org/packages/aa/b8/3ce31befad0d01b019c5a9381335af9ecebadbec5f51e6ab471f27ff9565/errol-1.0.7-py3-none-any.whl" } ] }