{ "info": { "author": "Iotic Labs Ltd", "author_email": "info@iotic-labs.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Internet", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Iotic Labs HTTPS Proxy for QAPI\n===============================\n\nThe QAPI Proxy provides a HTTP/RESTful interface to the Iotic-labs Queue\nAPI. The HTTP interface can be secure (TLS 1.2) or insecure (plain HTTP)\nas you wish.\n\nWhat it's for\n~~~~~~~~~~~~~\n\nThe Proxy exists for 2 reasons 1. It's part of the Iotic-Labs web\ninfrastructure and allows the Iotic Space web-app acts as an Iotic Thing\n2. To provide an agent for devices that are too constrained to run one\nthemselves. This might be because they aren't able to run python or\ndon't have sufficient processing power to run TLS 1.2.\n\nLimitations.\n~~~~~~~~~~~~\n\n1. The proxy does not expose the full qapi functionality, but it's\n reasonably easy to add new functions c.f. metahelper\n\nRequires\n--------\n\n- Python3 (tested with 3.4.3)\n\nIf using src release: - py-IoticAgent\nhttps://github.com/Iotic-Labs/py-IoticAgent - Optional/ mysqlclient\nhttps://pypi.python.org/pypi/mysqlclient - Optional/ rdflib to enable\nGET PUT /entity /point ... /metahelper URLs\n\nConfig Options\n--------------\n\nqapiproxy can load all it's config from an ini file. Optionally storing\nAgent credentials a MySQL database.\n\n- Common settings \\`\\`\\`ini [https] ; host and port of the RESTServer\n instance host = 10.0.1.2 port = 8118 ; SSL files ssl\\_ca =\n /path/to/ca.bundle or proxy.crt if self-signed ssl\\_crt =\n /path/to/proxy.crt ssl\\_key = /path/to/proxy.key ; If ssl\\_key is\n protected by a password ssl\\_pass = password\n\n[qapimanager] ; how often (seconds) to check the config for new agents,\n0 to disable new\\_worker = 5 ; How many unsolicited messages each Agent\nshould store, 0 to disable ; feeddata and controlreq and unsolicited (EG\nreassigned, new subscriber etc) keep\\_feeddata = 50 keep\\_controlreq =\n50 keep\\_unsolicited = 50 ; If your broker requires a self signed\ncertificate or username prefix or vhost ; they can be specified here and\nwill extend all agent details (DB or ini) ; vhost = example ; prefix =\nexample ; sslca = example \\`\\`\\`\n\n- ini or mysql \\`\\`\\`ini [config] ; mode can be 'ini' or 'mysql' mode =\n mysql ; if mode = mysql dbhost = host dbport = port dbname = database\n name dbuser = username dbpass = password\n\n; if mode = ini a list of 1..n agents can be stored\n\nagents = name ; or multiple on newline agents = nameOne nameTwo\nnameThree\n\n; for each [nameOne] ; agent credentials host = host vhost = vhost epId\n= epId password = password ; authTokens are HTTPS api keys that allow a\nremote thing to use this Agent authtokens = token ; of multiple lines\nauthtokens = token token token ; if vhost, prefix or sslca not specified\nin qapimanager ; can be specified here for this agent only (ini only) ;\nvhost = xx ; prefix = xy ; sslca = xz \\`\\`\\`\n\nInstall\n-------\n\nBuild (If using src release)\n----------------------------\n\n1) Create .pyz: cd src && ./make\\_pyz.sh\n2) Run in current directory (as current user): PYTHONPATH=qapiproxy.pyz\n python3 -mqapiproxy qapiproxy.cfg\n\nService\n-------\n\nqapiproxy.init is an LSB 4.1 compatible service script. See\nconfiguration options at the top of said script for setup. (The\nqapiproxyy should be run as non-root user.)\n\nUsing the service to run qapiproxy in the background:\n\n.. code:: shell\n\n # Create a directory for the log file\n mkdir data\n # Put the config in the expected location\n ln -sfv cfg/example.ini qapiproxy.cfg\n # Start the service\n ./qapiproxy.init start\n # Follow the log\n tail -f data/qapiproxy.log\n # Stop the service\n ./qapiproxy.init stop\n\nFor system service: - edit qapiproxy.init QAPIPROXY\\_RUN\\_DIR and\nQAPIPROXY\\_USER - cp qapiproxy.init /etc/init.d/qapiproxy - chmod a+x\n/etc/init.d/qapiproxy - chkconfig --add qapiproxy - chkconfig qapiproxy\noff # Don't start automatically since depends on everything running\nalready - sudo service qapiproxy start\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Iotic-Labs/IoticHttp", "keywords": "iotic", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "IoticHttp", "package_url": "https://pypi.org/project/IoticHttp/", "platform": "", "project_url": "https://pypi.org/project/IoticHttp/", "project_urls": { "Homepage": "https://github.com/Iotic-Labs/IoticHttp" }, "release_url": "https://pypi.org/project/IoticHttp/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "HTTP/REST interface provider for Iotic Space", "version": "0.1.5" }, "last_serial": 5124426, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e36c5a49be1a3325c30d59dbca61b122", "sha256": "9e5beabd663275783ed3cbb19ffedc8d1da8179fcc1aeedf697dadb2d0d29c32" }, "downloads": -1, "filename": "IoticHttp-0.1.0.tar.gz", "has_sig": true, "md5_digest": "e36c5a49be1a3325c30d59dbca61b122", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27411, "upload_time": "2016-09-19T14:05:27", "url": "https://files.pythonhosted.org/packages/29/4b/8d9a12601d25e4584736ee40ebf06e909baa748b104cc6b06f0fec5f2e5e/IoticHttp-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "cf916d60be69c009da572a8b591c15f5", "sha256": "3c2f746d7d2430b05271fa12092f05d2095fe525a26d3b18a7c2d9a3d95a687b" }, "downloads": -1, "filename": "IoticHttp-0.1.1.tar.gz", "has_sig": true, "md5_digest": "cf916d60be69c009da572a8b591c15f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28712, "upload_time": "2016-12-01T15:30:01", "url": "https://files.pythonhosted.org/packages/df/ec/94c3de98829d2e29a0e9dd37f60b54d938d7f847b7b0c8e4a403a104dc81/IoticHttp-0.1.1.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "106d80cd162ef3a1472706bad06f5ec0", "sha256": "d0661457487c0c2f5156d5d1b8ab06d596ec40b0a720b421b35ebba31332eb1b" }, "downloads": -1, "filename": "IoticHttp-0.1.4.tar.gz", "has_sig": true, "md5_digest": "106d80cd162ef3a1472706bad06f5ec0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29173, "upload_time": "2017-03-20T10:55:07", "url": "https://files.pythonhosted.org/packages/05/e7/ed51a139fc2286fb21f5141df715c204a4a1092137b5840921819549110a/IoticHttp-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "96f5ea37083ec05a1aceb7d86c5e79a1", "sha256": "7760309ee86ac87cea84412fbba3ea75e117ce7ecd001bb43c7c2c4a6cc73d0b" }, "downloads": -1, "filename": "IoticHttp-0.1.5.tar.gz", "has_sig": true, "md5_digest": "96f5ea37083ec05a1aceb7d86c5e79a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29219, "upload_time": "2017-04-11T14:54:28", "url": "https://files.pythonhosted.org/packages/85/1d/86fec10c67ddc1f6895cd3d3504f7cb5979a9272c57b86b2672baee75d38/IoticHttp-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "96f5ea37083ec05a1aceb7d86c5e79a1", "sha256": "7760309ee86ac87cea84412fbba3ea75e117ce7ecd001bb43c7c2c4a6cc73d0b" }, "downloads": -1, "filename": "IoticHttp-0.1.5.tar.gz", "has_sig": true, "md5_digest": "96f5ea37083ec05a1aceb7d86c5e79a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29219, "upload_time": "2017-04-11T14:54:28", "url": "https://files.pythonhosted.org/packages/85/1d/86fec10c67ddc1f6895cd3d3504f7cb5979a9272c57b86b2672baee75d38/IoticHttp-0.1.5.tar.gz" } ] }