{ "info": { "author": "Vincent Schouten", "author_email": "inquiry@intoreflection.co", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.7" ], "description": "====================\nminitor/cli\n====================\n\nThe need to create this program was to retrieve emails from my own email server without making a direct connection which would compromise my privacy.\nPivoting through hosts with SOCKS servers and a proxifier (i.e. proxychains-ng), in short proxychaining, to redirect calls was an useless exercise: SOCKS does not offer encryption.\nMy solution was to encapsulate SSH connections in SOCKS and funnels through SSH forwarded and encrypted tunnel(s).\nAlthough SOCKS is used, it's never exposed to the outside world as it's 'protected' by a SSH layer.\nBut, this was not an easy solution; it became tiresome to manually issue several commands, edit configuration files and keep track of listening ports for consecutive connections.\nSo, I made this solution primarily for myself, but I reckoned, other people can benefit from this solution, as well.\nIt can only be used by people owning one or more hosts and want to build a TOR like network.\nLet your friends use your TOR network and offer the option to securely and anonymously communicate with the outside world.\n\n\nHow it works\n============\n\nTerminology: An established connection is called a *Tunnel*, and a proxy, exit or destination host are called a *Machine*.\n\nThe first connection from the client to a *Machine* will be established via SSH, and subsequently binds a port on local side (e.g. 11200), which is used to provide connection forwarding.\nAt this moment, the *Tunnel* is laid down.\n\n.. image:: ../img/illustration_how_it_works_1.png\n\nData encapsulated in SOCKS and offered to this local port will emerge on the *Machine* where the SOCKS server is listening, retrieving the destination IP address from the incoming SOCKS connection.\n\n.. image:: ../img/illustration_how_it_works_2.png\n\nTo create the second *Tunnel*, the second instantiation of SSH on the client needs to be encapsulated in SOCKS to be forwarded through the first *Tunnel*.\nThis is done with the help of the proxyfier proxychains-ng: any call the SSH makes will be intercepted, encapsulated in SOCKS and offered to this local port.\nWhen this encapsulated second *Tunnel* emerges on the *Machine* and connects to the SOCKS server, the SSH connection will really start the journey as if the connection is established on the Machine instead of the client for the first time.\n\n.. image:: ../img/illustration_how_it_works_3.png\n\nThis *Tunnel* connects to the SSH server on the second *Machine* and subsequently binds a port on local side, which is used to provide connection forwarding.\nAnd this process can be repeated multiple times.\n\n.. image:: ../img/illustration_how_it_works_4.png\n\nFor more details, including illustrations with class names, please consult the `minitor/corelib repository `_ on GitHub.\n\n\nRequirements (functional)\n=========================\n\n* The client and all hosts run Linux. I've only tested with Red Hat, CentOS and Fedora.\n* The client and all hosts have Python >3.6 as their default interpreter.\n* You need *at least* one host.\n* Every host needs a running SSH service.\n* Have the associated SSH identification file (i.e. the private key) for these hosts.\n* Due to security reasons, SSH password login is not supported.\n* This program don't require root privileges on client (*to be confirmed*).\n* Recommendation: 2 interfaces per host, so full anonymity can be guaranteed.\n\nRequirements (software)\n=======================\n\nInstall this Linux package on the *client*.\n\n* ProxyChains NG\n\n * `Visit official Website `__\n * install with DNF from Fedora 29 `repo `__\n\n\nInstall this Linux package on all *hosts*. Note: Installation of this package will go automatically in the next release.\n\n* Python-Daemon\n\n * $ python -m pip install python-daemon\n\nNo need to install other packages on the *hosts* as minitor copies the relevant files (e.g. minitoragent.py and pysoxy from MisterDaneel, both are modules in corelib package) to the hosts. All hosts have the BSD program 'file' installed (which is almost always the case).\n\n\n\nInstallation\n============\n\nIf you use the standard packet manager:\n\n.. code-block:: bash\n\n $ pip install minitorcli\n\nor if you use pipx:\n\n.. code-block:: bash\n\n $ pipx install minitorcli\n\n\nUsage\n=====\n\nIssue this command for help:\n\n.. code-block:: bash\n\n $ minitor --help\n\n usage: minitor [-h] [--config-file CONFIG_FILE]\n [--log-level {debug,info,warning,error,critical}]\n\n minitor - anonymizing internet traffic using private hosts (cli)\n\n optional arguments:\n -h, --help show this help message and exit\n --config-file, -c CONFIG_FILE\n The location of the config file\n --log-level, -L {debug,info,warning,error,critical}\n Provide the log level. Defaults to info.\n\nIssue this command to actually execute the program.\n\n.. code-block:: bash\n\n $ minitor --config-file ~/minitor.json\n\n\nUse option \"--log-level debug\" to print every activity in the program.\n\n.. code-block:: bash\n\n $ minitor -c ~/minitor.json -l debug\n\n\n\nThe JSON file contains directives to enter one of the modes listed below:\n\n * TOR mode\n * FOR(warding) mode\n * SHELL mode\n * in next release: FILE mode\n\nIn TOR mode, the last Machine acts as an exit node (in TOR terminology).\n\n.. image:: ../img/illustration_tor.png\n\nIn FOR(warding) mode, connections are forwarded to the last Machine, on which, for example, an email server (e.g. Postfix) is running and a local email client want to connect to its listening ports.\n\n.. image:: ../img/illustration_forwarding.png\n\nIn SHELL mode, a rudimentary terminal interface is provided which enables the user to interact with the last Machine.\n\n.. image:: ../img/illustration_shell.png\n\n\n\nTo enable TOR mode:\nEdit the JSON document in the configuration file to incorporate the keywords **mode**, **proxies**, **exit**, and optionally **application**.\nThe example below shows 4 hosts.\n\n.. code-block:: JSON\n\n {\n \"mode\": \"TOR\",\n \"proxies\": [{\"ip_in\": \"10.10.1.72\",\n \"ip_out\": \"10.10.2.82\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_be_vm\",\n \"hostname\": \"server.equinox.com\"},\n {\"ip_in\": \"10.10.2.92\",\n \"ip_out\": \"10.10.3.42 \",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_it_vm\",\n \"hostname\": \"server.enterprise.com\"},\n {\"ip_in\": \"10.10.3.52\",\n \"ip_out\": \"10.10.4.21\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_es_vm\",\n \"hostname\": \"server.defiant.com\"}],\n \"destination\": {\"ip_in\": \"10.10.4.31\",\n \"ip_out\": \"10.10.4.31\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_gr_vm\",\n \"hostname\": \"server.voyager.com\"},\n \"application\": {\"binary_name\": \"firefox\",\n \"binary_location\": \"/usr/bin/firefox\"}\n }\n\n\nTo enable FOR(warding) mode:\nEdit the JSON document to incorporate the keywords **mode**, **proxies**, **destination**, **forwarders**, and optionally **application**.\nLeave out any other keywords.\nWhen application is specified, then the program will start this application once the tunnel is ready.\nHitting ctrl + c in terminal screen will close application and dismantle tunnel.\n\n.. code-block:: JSON\n\n {\n \"mode\": \"FOR\",\n \"proxies\": [{\"ip_in\": \"10.10.1.72\",\n \"ip_out\": \"10.10.2.82\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_be_vm\",\n \"hostname\": \"server.only.com\"}],\n \"forwarders\": [{\"local_port\": 1995,\n \"remote_interface\": \"[2a01:7c8:aac3:1e1:2a01:ffaa:a:241]\",\n \"remote_port\": 995}],\n \"destination\": {\"ip_in\": \"10.10.2.92\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_it_vm\",\n \"hostname\": \"server.art.it\"}\n }\n\n\nTo enable SHELL mode:\nEdit the JSON document to incorporate the keywords **mode**, **proxies**, and **destination**.\nLeave out any other keywords.\nHitting ctrl + c in terminal screen will close pseudo-shell and dismantle tunnel.\n\n.. code-block:: JSON\n\n {\n \"mode\": \"SHELL\",\n \"proxies\": [{\"ip_in\": \"10.10.1.72\",\n \"ip_out\": \"10.10.2.82\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_be_vm\",\n \"hostname\": \"server.equinox.com\"}],\n \"destination\": {\"ip_in\": \"10.10.2.92\",\n \"identity_file\": \"/home/vincent/.ssh/id_rsa_it_vm\",\n \"hostname\": \"server.enterprise.it\"}\n }\n\n\n\nDevelopment Workflow\n====================\n\nThe workflow supports the following steps\n\n * lint\n * test\n * build\n * document\n * upload\n * graph\n\nThese actions are supported out of the box by the corresponding scripts under _CI/scripts directory with sane defaults based on best practices.\nSourcing setup_aliases.ps1 for windows powershell or setup_aliases.sh in bash on Mac or Linux will provide with handy aliases for the shell of all those commands prepended with an underscore.\n\nThe bootstrap script creates a .venv directory inside the project directory hosting the virtual environment. It uses pipenv for that.\nIt is called by all other scripts before they do anything. So one could simple start by calling _lint and that would set up everything before it tried to actually lint the project\n\nOnce the code is ready to be delivered the _tag script should be called accepting one of three arguments, patch, minor, major following the semantic versioning scheme.\nSo for the initial delivery one would call\n\n $ _tag --minor\n\nwhich would bump the version of the project to 0.1.0 tag it in git and do a push and also ask for the change and automagically update HISTORY.rst with the version and the change provided.\n\n\nSo the full workflow after git is initialized is:\n\n * repeat as necessary (of course it could be test - code - lint :) )\n * code\n * lint\n * test\n * commit and push\n * develop more through the code-lint-test cycle\n * tag (with the appropriate argument)\n * build\n * upload (if you want to host your package in pypi)\n * document (of course this could be run at any point)\n\n\nImportant Information\n=====================\n\nThis template is based on pipenv. In order to be compatible with requirements.txt so the actual created package can be used by any part of the existing python ecosystem some hacks were needed.\nSo when building a package out of this **do not** simple call\n\n $ python setup.py sdist bdist_egg\n\n**as this will produce an unusable artifact with files missing.**\nInstead use the provided build and upload scripts that create all the necessary files in the artifact.\n\n\nDocumentation\n=============\n\n* Documentation: https://minitorcli.readthedocs.org/en/latest\n\n\nContributing\n============\n\nPlease read `CONTRIBUTING.md `_ for details on our code of conduct, and the process for submitting pull requests to us.\n\n\nAuthors\n=======\n\n* **Vincent Schouten** - *Initial work* - `LINK `_\n\nSee also the list of `contributors `_ who participated in this project.\n\n\nLicense\n=======\n\nThis project is licensed under the MIT License - see the `LICENSE.md `_ file for details\n\n\nAcknowledgments\n===============\n\n* Costas Tyfoxylos\n* rofl0r (developer of proxychains-ng)\n* MisterDaneel (developer of pysoxy)\n\n\n\n\n\nHistory\n-------\n\n0.0.1 (06-04-2019)\n---------------------\n\n* First code creation\n\n\n0.0.1 (04-05-2019)\n------------------\n\n* updated dependencies\n\n\n1.0.0 (23-05-2019)\n------------------\n\n* context manager Heartbeat redesigned in helpers.py + instantiating factory class Tunnel instead of different Tunnel classes in main()\n\n\n2.0.1 (25-05-2019)\n------------------\n\n* JSON validation schema is set to Required and call to ExitMachine() fixed\n\n\n2.0.2 (25-05-2019)\n------------------\n\n* logger text in main modified\n\n\n2.0.3 (30-05-2019)\n------------------\n\n* exception handling has been extended for bugfixing\n\n\n2.1.0 (01-06-2019)\n------------------\n\n* instantiating of various Machine classes is done by one factory class\n\n\n2.1.1 (01-06-2019)\n------------------\n\n* fixed required dependency for minitorcorelib\n\n\n2.1.2 (05-06-2019)\n------------------\n\n* package dependency updated\n\n\n3.0.0 (16-06-2019)\n------------------\n\n* main() refactored: separate try/catch clauses created + parameter machine factory classes updated\n\n\n3.0.1 (17-06-2019)\n------------------\n\n* debug text for mode TOR modified\n\n\n3.0.2 (20-06-2019)\n------------------\n\n* logging modified + fixed required dependency for minitorcorelib\n\n\n3.0.3 (23-06-2019)\n------------------\n\n* package dependency updated\n\n\n3.0.4 (11-07-2019)\n------------------\n\n* package dependency updated\n\n\n3.0.5 (01-08-2019)\n------------------\n\n* linting errors fixed\n\n\n4.0.0 (21-09-2019)\n------------------\n\n* shell class added\n\n\n4.0.1 (23-09-2019)\n------------------\n\n* dependency package minitorcorelib patched\n\n\n5.0.0 (29-09-2019)\n------------------\n\n* main refactored and structure config file changed\n\n\n5.0.1 (02-10-2019)\n------------------\n\n* get_config replaced by Configuration()\n\n\n6.0.0 (20-10-2019)\n------------------\n\n* package refactored as corelib is refactored\n\n\n6.0.1 (20-10-2019)\n------------------\n\n* newer version corelib package", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/yutanicorp/minitorcli", "keywords": "minitorcli", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "minitorcli", "package_url": "https://pypi.org/project/minitorcli/", "platform": "", "project_url": "https://pypi.org/project/minitorcli/", "project_urls": { "Homepage": "https://github.com/yutanicorp/minitorcli" }, "release_url": "https://pypi.org/project/minitorcli/6.0.1/", "requires_dist": null, "requires_python": "", "summary": "minitor - anonymizing internet traffic using private hosts (cli)", "version": "6.0.1" }, "last_serial": 6002692, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "edf34a9a989e91b6c4069a49a8d5b08b", "sha256": "d2d64ead24e2e2e4880af537f1b83a34f60809ef1e7d14c8115ce0de5550e3d1" }, "downloads": -1, "filename": "minitorcli-0.0.0-py3.7.egg", "has_sig": false, "md5_digest": "edf34a9a989e91b6c4069a49a8d5b08b", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 39710, "upload_time": "2019-05-04T13:22:47", "url": "https://files.pythonhosted.org/packages/55/c8/bf1ebc37694ca5844250e50ec0fc2a1668ef4bef46f663f8836ab50de6cc/minitorcli-0.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "2a701d7e849d4487f93af043f6d0bf3a", "sha256": "df3d3814384032aacb71e1d243fcd19b7d17a8d54c2f1398336dd53bda655a65" }, "downloads": -1, "filename": "minitorcli-0.0.0.tar.gz", "has_sig": false, "md5_digest": "2a701d7e849d4487f93af043f6d0bf3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49062, "upload_time": "2019-05-04T13:22:45", "url": "https://files.pythonhosted.org/packages/25/a0/ce48ca06eb66d81defa837457c98488b16246d3094ab1e5f43f4163aebe4/minitorcli-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "88e7efc697d63e2d87964eaa95925217", "sha256": "69ab6c7ef84d1c8d0f0c405acafd5fb31bb086480c0faccd5550379c5b34cc4e" }, "downloads": -1, "filename": "minitorcli-0.0.1-py3.7.egg", "has_sig": false, "md5_digest": "88e7efc697d63e2d87964eaa95925217", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 39771, "upload_time": "2019-05-04T14:14:34", "url": "https://files.pythonhosted.org/packages/9c/19/01efa4aa688e0f56025ae93ae55486959b8752bce9acca63ab137b547354/minitorcli-0.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "04418b06d3f8228a212da1d3deadfbe0", "sha256": "65cfb68ed6cabad24dbecc2e83585737ede6ce116a2169ca0e6ca06d8eaa5ac5" }, "downloads": -1, "filename": "minitorcli-0.0.1.tar.gz", "has_sig": false, "md5_digest": "04418b06d3f8228a212da1d3deadfbe0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49145, "upload_time": "2019-05-04T14:14:36", "url": "https://files.pythonhosted.org/packages/37/52/a20c65a30de06cc3dd6d2b098c052bdae0162aef92c113bce2a3f2b57762/minitorcli-0.0.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "4533d51db5b5739f10634a59a91cd068", "sha256": "53a6f3fbda003e8b0d0f9a24fdd51aa7fc8e7528eb619d6c833a2d9bb8f6cca0" }, "downloads": -1, "filename": "minitorcli-1.0.0-py3.7.egg", "has_sig": false, "md5_digest": "4533d51db5b5739f10634a59a91cd068", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 41544, "upload_time": "2019-05-23T20:48:32", "url": "https://files.pythonhosted.org/packages/df/35/0c165ed5546ceeef3115d8f826ef234b90cab97353674784e75fafc97987/minitorcli-1.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "ba013cb393e5c0e187c632042ca36091", "sha256": "9c31ec06d57317cec64aba7edf48d9e215ee1af9b19d308011968cb21f32f46f" }, "downloads": -1, "filename": "minitorcli-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ba013cb393e5c0e187c632042ca36091", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57984, "upload_time": "2019-05-23T20:48:30", "url": "https://files.pythonhosted.org/packages/55/36/4bae581d815d63578be7514a9ff2daa21715d7f6b225880f82f36ac6f4a2/minitorcli-1.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "a1ccbae60a2baf44abaeff9a660f2948", "sha256": "561e9d604c81d7a6201f66551761ee73c0cc87bbafd9d1ff6abbf3949d6caaae" }, "downloads": -1, "filename": "minitorcli-2.0.1-py3.7.egg", "has_sig": false, "md5_digest": "a1ccbae60a2baf44abaeff9a660f2948", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 41896, "upload_time": "2019-05-25T13:54:58", "url": "https://files.pythonhosted.org/packages/c2/66/e14413cdeb256f7bdf9a783b3c3eda2f2f50b6dd52ef4367a51b41a494e9/minitorcli-2.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "1a400edf0850065306477d330c2918bc", "sha256": "2a75e67d409c93b2088f93080e2e8829393a57eb8cbcdeb9beac69cc4f6de28d" }, "downloads": -1, "filename": "minitorcli-2.0.1.tar.gz", "has_sig": false, "md5_digest": "1a400edf0850065306477d330c2918bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58431, "upload_time": "2019-05-25T13:54:56", "url": "https://files.pythonhosted.org/packages/5e/03/61e5ef66ea6208f481360e92711c28ca21a296851ae1203256d9db76e202/minitorcli-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "5ba13746f40bf5a98e072d86e4b4ef10", "sha256": "ee0645d85aea3b34b6133f3f9eeb5ebae7bca90d953da99d964b40ef73849e37" }, "downloads": -1, "filename": "minitorcli-2.0.2-py3.7.egg", "has_sig": false, "md5_digest": "5ba13746f40bf5a98e072d86e4b4ef10", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 41931, "upload_time": "2019-05-25T18:28:07", "url": "https://files.pythonhosted.org/packages/13/fa/3809e2879926a0f613d97ee8df403abeb62c35ad223f9b71b601bd7fc88a/minitorcli-2.0.2-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "2b1cce858668f4018fe39c18ea0ebf94", "sha256": "dc14f0dce40950d343830ada331e55586d1bdacc19f738d5343099b5b46ad558" }, "downloads": -1, "filename": "minitorcli-2.0.2.tar.gz", "has_sig": false, "md5_digest": "2b1cce858668f4018fe39c18ea0ebf94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58488, "upload_time": "2019-05-25T18:28:05", "url": "https://files.pythonhosted.org/packages/55/be/6993c1b8bbf4b68e03d6b249dd43b27dd4b9a271b4889138373315295fbb/minitorcli-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "f456da8d57acfa27c7882a6bc30730f3", "sha256": "b05b60daa9177030282fe5b2a90b2afc8a827e2011280d67efaeddbb5abd8b92" }, "downloads": -1, "filename": "minitorcli-2.0.3-py3.7.egg", "has_sig": false, "md5_digest": "f456da8d57acfa27c7882a6bc30730f3", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43033, "upload_time": "2019-05-30T17:58:05", "url": "https://files.pythonhosted.org/packages/6c/50/9ff364d17e2f4fc048319b88eea5a38d6d415dd6fe0f97e8787bcd4b5cf8/minitorcli-2.0.3-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "25c11cdfd0e67ee8cdda34bf70f62cd8", "sha256": "aec9f6b8b7e5bb96c794e5c36dd7cba25b4f030ad41d24b3bffd2c59deeca3bb" }, "downloads": -1, "filename": "minitorcli-2.0.3.tar.gz", "has_sig": false, "md5_digest": "25c11cdfd0e67ee8cdda34bf70f62cd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59878, "upload_time": "2019-05-30T17:58:07", "url": "https://files.pythonhosted.org/packages/7d/9b/ac31334637a0445949a683bce2516448d51164978d103819d1d7bac73eb9/minitorcli-2.0.3.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "686e2f9935b41111940da1f43e92705b", "sha256": "6c29cd550f700014faa77f07310d67096e8ea065436d39c5db2847d2e30a4241" }, "downloads": -1, "filename": "minitorcli-2.1.0-py3.7.egg", "has_sig": false, "md5_digest": "686e2f9935b41111940da1f43e92705b", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43004, "upload_time": "2019-06-01T15:37:46", "url": "https://files.pythonhosted.org/packages/81/49/325675234d0a3d8d90bb44e250b7139f53aeea6333c1815188d442ad67a0/minitorcli-2.1.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "5f923f166d73f31342a1bdd670fcc17a", "sha256": "41e7167003b7491311caff4629a9f484d5e29cd83328b17768075708935beeb3" }, "downloads": -1, "filename": "minitorcli-2.1.0.tar.gz", "has_sig": false, "md5_digest": "5f923f166d73f31342a1bdd670fcc17a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59948, "upload_time": "2019-06-01T15:37:49", "url": "https://files.pythonhosted.org/packages/eb/8d/59ffdcbb3532ec35537f0e50cef23c46c3525d152e8acf1dec3691b21e3c/minitorcli-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "5e0648ae9ea01091af589c105a578a0d", "sha256": "c181da322dbda75a9fbe71b07afa5ccf2c0ca72920ddc4e65fa48015cd1dfed0" }, "downloads": -1, "filename": "minitorcli-2.1.1-py3.7.egg", "has_sig": false, "md5_digest": "5e0648ae9ea01091af589c105a578a0d", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43039, "upload_time": "2019-06-01T16:03:35", "url": "https://files.pythonhosted.org/packages/34/62/089ac0d31029139fc2bf3524c513b5098eba0a769ecc00d9a04462c434f5/minitorcli-2.1.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "0f3a09a143839adbae3317c4a14b4868", "sha256": "8ba0facadabb2c5c081365a99e2be3bc4663e50391d9ce85cdcb987a1eed0e68" }, "downloads": -1, "filename": "minitorcli-2.1.1.tar.gz", "has_sig": false, "md5_digest": "0f3a09a143839adbae3317c4a14b4868", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59991, "upload_time": "2019-06-01T16:03:37", "url": "https://files.pythonhosted.org/packages/8f/d6/3992a3a2d9a9ac90ae9aa5199c80ddd6ec78d9aae7482b7a298721c83fad/minitorcli-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "4ea02040fb165778585a945b47516e77", "sha256": "6d0f8a98556881dbf10ebad7242afb3f9494081cd4aaf2f341a29d3a3fe46a82" }, "downloads": -1, "filename": "minitorcli-2.1.2-py3.7.egg", "has_sig": false, "md5_digest": "4ea02040fb165778585a945b47516e77", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43075, "upload_time": "2019-06-05T05:25:33", "url": "https://files.pythonhosted.org/packages/1e/39/e7999d5394e5f96f1c26fd3d7ea38766095bf9e0ef7724aaefd8bd129e0c/minitorcli-2.1.2-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "7c133c1876eeffa1b8d8e4f6c3647351", "sha256": "b197a375871c6b6cafb27377a561cb61fa959481491c6db8cc901328405a27b1" }, "downloads": -1, "filename": "minitorcli-2.1.2.tar.gz", "has_sig": false, "md5_digest": "7c133c1876eeffa1b8d8e4f6c3647351", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60051, "upload_time": "2019-06-05T05:25:35", "url": "https://files.pythonhosted.org/packages/62/ac/881ea59ed1d525faf422e70db7afc54b40aefb3899acfa8e854e0bf0f523/minitorcli-2.1.2.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "c26d7fdb661383434ad77dbaecfb37bf", "sha256": "c2b55d9ce217202f82badfeb7bb1478c4bdce6acf8af16e632b712864ad2ce06" }, "downloads": -1, "filename": "minitorcli-3.0.0-py3.7.egg", "has_sig": false, "md5_digest": "c26d7fdb661383434ad77dbaecfb37bf", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 44522, "upload_time": "2019-06-16T19:39:46", "url": "https://files.pythonhosted.org/packages/d4/d9/425a40abf947148eb6c2a71a000d070f0224d47487404dfd7ce4ac7bf589/minitorcli-3.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "514429edcd35f6f76af5efafd13806a8", "sha256": "6bc028c4611f69be36538a2009a73e41f169fc29df63de5c8804bf9695c66d2b" }, "downloads": -1, "filename": "minitorcli-3.0.0.tar.gz", "has_sig": false, "md5_digest": "514429edcd35f6f76af5efafd13806a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62562, "upload_time": "2019-06-16T19:39:49", "url": "https://files.pythonhosted.org/packages/f0/d8/b14ef3c2b1fc16992ef4fd8daddf5e4e6827a865ebbc1dbcfcde40700996/minitorcli-3.0.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "d6822223d528234015c0c558fbfc9fba", "sha256": "b50107e7863ef24995f4d0cde9e91c8d7a6fa85f3be84d1dce846d828f54fab5" }, "downloads": -1, "filename": "minitorcli-3.0.1-py3.7.egg", "has_sig": false, "md5_digest": "d6822223d528234015c0c558fbfc9fba", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43863, "upload_time": "2019-06-17T19:49:27", "url": "https://files.pythonhosted.org/packages/d0/98/894e91a35d2f1c648da431f20721f89186c84f0d8a09d66da0cecd35804e/minitorcli-3.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "286c500841b9d6251b2ee479bffea4f3", "sha256": "faa14f9bb35c91c3b701ae945a3414b9de10189d939fe397526f0207a484e40b" }, "downloads": -1, "filename": "minitorcli-3.0.1.tar.gz", "has_sig": false, "md5_digest": "286c500841b9d6251b2ee479bffea4f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61302, "upload_time": "2019-06-17T19:49:24", "url": "https://files.pythonhosted.org/packages/05/b5/0a325313522e215234e87e5d42888efb26337aad7a3b8e6e1c27db78d96d/minitorcli-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "84a2e35408315e6e51e2db8f8cda5f96", "sha256": "5ea58939e7199b03247b46a21efddd2757f149ff3f212d4122c741d4a46a4227" }, "downloads": -1, "filename": "minitorcli-3.0.2-py3.7.egg", "has_sig": false, "md5_digest": "84a2e35408315e6e51e2db8f8cda5f96", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43988, "upload_time": "2019-06-20T04:55:13", "url": "https://files.pythonhosted.org/packages/c0/67/0f226a3492f7648c569ea87937cc64efd55ad98dfa82e4455ea81034076f/minitorcli-3.0.2-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "06a6594ce1eee98ccdbc3460eb8d15a3", "sha256": "208cb325dc407dd80c3a73b5d59a1bb82e729165a8bb9084684d8782ea25151c" }, "downloads": -1, "filename": "minitorcli-3.0.2.tar.gz", "has_sig": false, "md5_digest": "06a6594ce1eee98ccdbc3460eb8d15a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61416, "upload_time": "2019-06-20T04:55:17", "url": "https://files.pythonhosted.org/packages/75/b1/c6e026a19b2c7d5c9e5ac91baba434d0725f3c3ce83e55c967a0f3142afb/minitorcli-3.0.2.tar.gz" } ], "3.0.3": [ { "comment_text": "", "digests": { "md5": "855bdc36796045df6bead1b49c7ae465", "sha256": "70164bd5f7a3dd323e0105d9a430ff3c0f7fafae5018d9882fdc3e038a7de865" }, "downloads": -1, "filename": "minitorcli-3.0.3-py3.7.egg", "has_sig": false, "md5_digest": "855bdc36796045df6bead1b49c7ae465", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 44086, "upload_time": "2019-06-23T20:28:01", "url": "https://files.pythonhosted.org/packages/7c/f2/dc588120f4695329be619c9935fb2b7285a90b710348ca9ee20225d1ed0b/minitorcli-3.0.3-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "9deb5bf54e8899ea908d37a3cdbfa9af", "sha256": "98eb2eb672f4e598087d41d724198dac46ce27493b8a220ea3fe1bb0959fe28d" }, "downloads": -1, "filename": "minitorcli-3.0.3.tar.gz", "has_sig": false, "md5_digest": "9deb5bf54e8899ea908d37a3cdbfa9af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61497, "upload_time": "2019-06-23T20:28:03", "url": "https://files.pythonhosted.org/packages/a7/57/1acb38ebac4be2c8a227948eb7b3aac47eae1fc6f13bef7e98d8c4305716/minitorcli-3.0.3.tar.gz" } ], "3.0.4": [ { "comment_text": "", "digests": { "md5": "b5776002ee1e4e8b3f9e33886cb3505f", "sha256": "c6988769eecd687a0d904edefca1fe262e5c0240701112282a6b038519818096" }, "downloads": -1, "filename": "minitorcli-3.0.4-py3.7.egg", "has_sig": false, "md5_digest": "b5776002ee1e4e8b3f9e33886cb3505f", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 43980, "upload_time": "2019-07-11T18:18:34", "url": "https://files.pythonhosted.org/packages/c0/33/94a3aa6669d3f27e22c1cbf9af91b9b4d9f2b0781d9d51b7e1426b9d43ba/minitorcli-3.0.4-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "0d1b47c60d8c7902fa969d267f6d8ab3", "sha256": "88e7f04a6c1a98fb0f9bac059ddab180b5027d2fce5cbb535b5a722031e61a91" }, "downloads": -1, "filename": "minitorcli-3.0.4.tar.gz", "has_sig": false, "md5_digest": "0d1b47c60d8c7902fa969d267f6d8ab3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61331, "upload_time": "2019-07-11T18:18:31", "url": "https://files.pythonhosted.org/packages/3e/f0/3bd6016a14e5822d4ffadd095a379849107b3fa73135ee6b9fdda10fd711/minitorcli-3.0.4.tar.gz" } ], "3.0.5": [ { "comment_text": "", "digests": { "md5": "04e74d36104bdfa1a42b6f53f629d64d", "sha256": "5f9df21cd573a0d05f2d00d3f6d3b57a1d112eb91a935e164b891b1adb66edae" }, "downloads": -1, "filename": "minitorcli-3.0.5-py3.7.egg", "has_sig": false, "md5_digest": "04e74d36104bdfa1a42b6f53f629d64d", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 44144, "upload_time": "2019-08-01T15:54:21", "url": "https://files.pythonhosted.org/packages/cf/f2/a3098adedc32c35a11e842f27987318cdadff3b187f31643b4c796aead12/minitorcli-3.0.5-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "a7cf76fed6167d6c315cd3a4ebe14b1b", "sha256": "233102611ef283154da53559eb51c148ffa13b12f60b630980fea90ad2be7c4f" }, "downloads": -1, "filename": "minitorcli-3.0.5.tar.gz", "has_sig": false, "md5_digest": "a7cf76fed6167d6c315cd3a4ebe14b1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61649, "upload_time": "2019-08-01T15:54:23", "url": "https://files.pythonhosted.org/packages/9b/5a/a77f700a7dce488c004a08909ae837713582f1bfbb2bfe2baa166d30dca7/minitorcli-3.0.5.tar.gz" } ], "4.0.0": [ { "comment_text": "", "digests": { "md5": "f21ce627cc9bffb55ab66fc6ac610505", "sha256": "353f924befa55c44326bb4d6129ea3e791bb8eaac81bbf3ae1b013c6d3318128" }, "downloads": -1, "filename": "minitorcli-4.0.0-py3.7.egg", "has_sig": false, "md5_digest": "f21ce627cc9bffb55ab66fc6ac610505", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 45489, "upload_time": "2019-09-21T08:10:21", "url": "https://files.pythonhosted.org/packages/07/46/af4c961fc71c8235acd7d62def0842a35e6b0452ed90bfbd1fc076225a21/minitorcli-4.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "a32b66f31aa37ae5053a749e73f92899", "sha256": "c66baa1cf0f817939aeea47f28c0cd5044ab0f9c28dbf736025af52df3a49402" }, "downloads": -1, "filename": "minitorcli-4.0.0.tar.gz", "has_sig": false, "md5_digest": "a32b66f31aa37ae5053a749e73f92899", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63284, "upload_time": "2019-09-21T08:10:24", "url": "https://files.pythonhosted.org/packages/cf/62/f331fe3bdb042546483d420990045f60a53d40f1d3b9b2315e2e59662e1a/minitorcli-4.0.0.tar.gz" } ], "4.0.1": [ { "comment_text": "", "digests": { "md5": "8135cfdfce02b9d84d36b53904d74fdf", "sha256": "85fdf6e0629ae317da8d4324638adc63e99e41ae01235faae00dae321a0cf0d4" }, "downloads": -1, "filename": "minitorcli-4.0.1-py3.7.egg", "has_sig": false, "md5_digest": "8135cfdfce02b9d84d36b53904d74fdf", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 45526, "upload_time": "2019-09-23T14:38:58", "url": "https://files.pythonhosted.org/packages/3b/65/291eaf98265c5b99f5a605f8c052ef57ba06e7e8feac9306bd5ce17988c4/minitorcli-4.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "3ec70806ecd551de1d5f4ff33a841649", "sha256": "134ba5b3ac1bcc2820af46098d48522981e27964c8d3534ac13c1581e09440eb" }, "downloads": -1, "filename": "minitorcli-4.0.1.tar.gz", "has_sig": false, "md5_digest": "3ec70806ecd551de1d5f4ff33a841649", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63361, "upload_time": "2019-09-23T14:38:56", "url": "https://files.pythonhosted.org/packages/0c/dd/ac970bd51236f64dec6b5eaf4d17fc5c32dd77269bacde3c905a090d858c/minitorcli-4.0.1.tar.gz" } ], "5.0.0": [ { "comment_text": "", "digests": { "md5": "bccdf7a7b0228045715838458e327deb", "sha256": "250124c2b600e5730030b3007256f94b9404b0e8ed8215210753bbd49187dc5e" }, "downloads": -1, "filename": "minitorcli-5.0.0-py3.7.egg", "has_sig": false, "md5_digest": "bccdf7a7b0228045715838458e327deb", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 45671, "upload_time": "2019-09-29T14:55:54", "url": "https://files.pythonhosted.org/packages/0b/12/209651f89df3f8c87f5859280f0f000f00c0dc85d5bd321375166d07547d/minitorcli-5.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "09dbc2b9e335392bc69cb3e6634fa971", "sha256": "ef213e5524772982689ce6bdcc8fc10a185c660b843b0ee10ddfa8203c24e517" }, "downloads": -1, "filename": "minitorcli-5.0.0.tar.gz", "has_sig": false, "md5_digest": "09dbc2b9e335392bc69cb3e6634fa971", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63559, "upload_time": "2019-09-29T14:55:48", "url": "https://files.pythonhosted.org/packages/3a/60/3f27fec9d4ebc57a1d4fd7e6e5e8b0a7fdea07c296309aec2fee52faf01c/minitorcli-5.0.0.tar.gz" } ], "5.0.1": [ { "comment_text": "", "digests": { "md5": "7adc81f78aac8b805ca02ef9d8bf9397", "sha256": "61c023e5b6a4183c49e9d3a2a242639e8e86b4da298fb0136fbd409aea195c66" }, "downloads": -1, "filename": "minitorcli-5.0.1-py3.7.egg", "has_sig": false, "md5_digest": "7adc81f78aac8b805ca02ef9d8bf9397", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 46064, "upload_time": "2019-10-02T19:29:31", "url": "https://files.pythonhosted.org/packages/f2/37/9a099e37d0693bbe818fd84c96103b8be4cd63ffeff96038bd824e6ac26c/minitorcli-5.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "780f44aff7663614ee0dfea50cb0a907", "sha256": "24452b63ff14ae80f6b08083deff313572abde9a11deae0b72eacd32924779a5" }, "downloads": -1, "filename": "minitorcli-5.0.1.tar.gz", "has_sig": false, "md5_digest": "780f44aff7663614ee0dfea50cb0a907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63877, "upload_time": "2019-10-02T19:29:28", "url": "https://files.pythonhosted.org/packages/8a/bf/caea93d9d4e8981e4be5aad783df2ddba42d2c87a9e437695fca6273d4a4/minitorcli-5.0.1.tar.gz" } ], "6.0.0": [ { "comment_text": "", "digests": { "md5": "9ac00724b48a13c939c95495792065c7", "sha256": "b89478bf69cfa97540d0940ce9cf070e98fad2c79ce847a358382a7207ef6d77" }, "downloads": -1, "filename": "minitorcli-6.0.0-py3.7.egg", "has_sig": false, "md5_digest": "9ac00724b48a13c939c95495792065c7", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 47408, "upload_time": "2019-10-20T11:14:04", "url": "https://files.pythonhosted.org/packages/82/f9/7fe537df646f1324ba4717050c1c151fb3c0517965e4d514ab0a7a7f5651/minitorcli-6.0.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "e8b33891df72161051a7d9f5c55a94b3", "sha256": "a1b73371c5fee80ba78726c4cddc18ad99f11474c0b130c5a769eb047827120d" }, "downloads": -1, "filename": "minitorcli-6.0.0.tar.gz", "has_sig": false, "md5_digest": "e8b33891df72161051a7d9f5c55a94b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65241, "upload_time": "2019-10-20T11:14:01", "url": "https://files.pythonhosted.org/packages/89/c5/d6a7b43980170af7645c4c96d8eedbe1f3acf1fc499b6708eba0032bf2c1/minitorcli-6.0.0.tar.gz" } ], "6.0.1": [ { "comment_text": "", "digests": { "md5": "854d78efff8050b483e612ce565b1e3b", "sha256": "c9f5bbadcd8ac3849406c4c264cb9fe0d746fabf8d57a10c3850cc5652dbd6b4" }, "downloads": -1, "filename": "minitorcli-6.0.1-py3.7.egg", "has_sig": false, "md5_digest": "854d78efff8050b483e612ce565b1e3b", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 47449, "upload_time": "2019-10-20T11:37:59", "url": "https://files.pythonhosted.org/packages/6f/dc/9f230a751a2dae7ee9edfa45a339f16e234e3227b068907bb1f1f86f4603/minitorcli-6.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "06a9e566a96feadc2cde9b729918d9d4", "sha256": "567b1c47d7e67e2e3f2f89e78872b25d98eb521415de513754f5024af041771e" }, "downloads": -1, "filename": "minitorcli-6.0.1.tar.gz", "has_sig": false, "md5_digest": "06a9e566a96feadc2cde9b729918d9d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65293, "upload_time": "2019-10-20T11:37:57", "url": "https://files.pythonhosted.org/packages/ed/20/4b726843eb4b920619b10f921e9e5129021d597d5524f8c7972062f88bb8/minitorcli-6.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "854d78efff8050b483e612ce565b1e3b", "sha256": "c9f5bbadcd8ac3849406c4c264cb9fe0d746fabf8d57a10c3850cc5652dbd6b4" }, "downloads": -1, "filename": "minitorcli-6.0.1-py3.7.egg", "has_sig": false, "md5_digest": "854d78efff8050b483e612ce565b1e3b", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 47449, "upload_time": "2019-10-20T11:37:59", "url": "https://files.pythonhosted.org/packages/6f/dc/9f230a751a2dae7ee9edfa45a339f16e234e3227b068907bb1f1f86f4603/minitorcli-6.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "06a9e566a96feadc2cde9b729918d9d4", "sha256": "567b1c47d7e67e2e3f2f89e78872b25d98eb521415de513754f5024af041771e" }, "downloads": -1, "filename": "minitorcli-6.0.1.tar.gz", "has_sig": false, "md5_digest": "06a9e566a96feadc2cde9b729918d9d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65293, "upload_time": "2019-10-20T11:37:57", "url": "https://files.pythonhosted.org/packages/ed/20/4b726843eb4b920619b10f921e9e5129021d597d5524f8c7972062f88bb8/minitorcli-6.0.1.tar.gz" } ] }