{ "info": { "author": "Hendrik Buchwald", "author_email": "hb@zecure.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Programming Language :: Python :: 2", "Topic :: Internet :: WWW/HTTP", "Topic :: System :: Networking :: Firewalls" ], "description": ".. image:: https://travis-ci.org/zecure/shadowd_python.svg\n :target: https://travis-ci.org/zecure/shadowd_python\n.. image:: http://shadowd.zecure.org/img/logo_small.png\n\n**Shadow Daemon** is a collection of tools to **detect**, **record** and **prevent** **attacks** on *web applications*.\nTechnically speaking, Shadow Daemon is a **web application firewall** that intercepts requests and filters out malicious parameters.\nIt is a modular system that separates web application, analysis and interface to increase security, flexibility and expandability.\n\nThis component can be used to connect Python applications with the `background server `_.\n\nDocumentation\n=============\nFor the full documentation please refer to `shadowd.zecure.org `_.\n\nInstallation\n============\nYou can install the package with easy_install or pip:\n\n::\n\n easy_install shadowd\n pip install shadowd\n\nIt is also possible to clone this repository and install the package manually:\n\n::\n\n python setup.py install\n\nYou also have to create a configuration file. You can copy *misc/examples/connectors.ini* to */etc/shadowd/connectors.ini*.\nThe example configuration is annotated and should be self-explanatory.\n\nCGI\n---\nTo protect CGI applications you simply have to load the module:\n\n::\n\n import shadowd.cgi_connector\n\nDjango\n------\nDjango applications require a small modification. It is necessary to create a hook to intercept requests.\nTo do this create the file *middleware/shadowdconnector.py* in the application directory:\n\n::\n\n from shadowd.django_connector import InputDjango, OutputDjango, Connector\n\n class ShadowdConnectorMiddleware(object):\n def process_request(self, request):\n input = InputDjango(request)\n output = OutputDjango()\n\n status = Connector().start(input, output)\n if not status == True:\n return status\n\nThere also has to be an empty *__init__.py* file in the middleware directory.\nNext you have to register the middleware in the *settings.py* file of your application:\n\n::\n\n MIDDLEWARE_CLASSES = (\n 'middleware.shadowdconnector.ShadowdConnectorMiddleware',\n # ...\n )\n\nThe connector should be at the beginning of the *MIDDLEWARE_CLASSES* list.\n\nFlask\n------\nFlask applications require a small modification as well. It is necessary to create a hook to intercept requests:\n\n::\n\n from shadowd.flask_connector import InputFlask, OutputFlask, Connector\n\n @app.before_request\n def before_req():\n input = InputFlask(request)\n output = OutputFlask()\n\n Connector().start(input, output)", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/zecure/shadowd_python", "keywords": "waf security shadowd", "license": "GPLv2", "maintainer": null, "maintainer_email": null, "name": "shadowd", "package_url": "https://pypi.org/project/shadowd/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/shadowd/", "project_urls": { "Homepage": "http://github.com/zecure/shadowd_python" }, "release_url": "https://pypi.org/project/shadowd/2.0.0/", "requires_dist": null, "requires_python": null, "summary": "Python connector for the Shadow Daemon web application firewall", "version": "2.0.0" }, "last_serial": 1900881, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "62d6871aa05941c5914609398fe06e7e", "sha256": "a60da5e54549d1616022ccad5519ed4fcb4f27fdf6365c28e94ae98b89872aef" }, "downloads": -1, "filename": "shadowd-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "62d6871aa05941c5914609398fe06e7e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7346, "upload_time": "2015-01-15T16:28:11", "url": "https://files.pythonhosted.org/packages/2e/19/331671c0075a177301d05e582b7f6d87582aa52d1ba22932af69941cfbf3/shadowd-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "93bc84f3f3cbdf371c9c5eb36fb04342", "sha256": "939862890c23677bb7b4201f179cbf4eeffc5667f1fd2c6a1733e8803210bc0e" }, "downloads": -1, "filename": "shadowd-1.0.0.tar.gz", "has_sig": false, "md5_digest": "93bc84f3f3cbdf371c9c5eb36fb04342", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4760, "upload_time": "2015-01-15T16:28:13", "url": "https://files.pythonhosted.org/packages/8b/4f/d45dd3543d704ee05cf9beeae9529bd27c5b14ba102e7da31594463e7a2a/shadowd-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "17ab21151614712553cbad3f5caac339", "sha256": "d83f426aa9e8dd7884916706159349bda6ae4bfd94b5ae64d35e474db7d80ca9" }, "downloads": -1, "filename": "shadowd-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "17ab21151614712553cbad3f5caac339", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7351, "upload_time": "2015-01-28T13:25:58", "url": "https://files.pythonhosted.org/packages/dc/7c/c3c7e8cafe271ca1469c9b174c2c9e39e94b0829f84607ee44195065cffa/shadowd-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0393562f25077662e5412dad5b77650d", "sha256": "1bfa19e3a38b2140aba10c40c7504f235b071ff5e9d7f34cb71ed1584bf78d7c" }, "downloads": -1, "filename": "shadowd-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0393562f25077662e5412dad5b77650d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4760, "upload_time": "2015-01-28T13:26:01", "url": "https://files.pythonhosted.org/packages/cb/ba/5928d148ad7ab27cc0e0708d037dd4e3349062128f7ba6078c8adf66c31f/shadowd-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b09ce31b84dea58a77a4e2529b9c8beb", "sha256": "7aa91cec5395a5a8bd47c42f852a98914aefa4a6f6725e2dd7fb12f014e49ed5" }, "downloads": -1, "filename": "shadowd-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "b09ce31b84dea58a77a4e2529b9c8beb", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9539, "upload_time": "2015-02-03T15:13:38", "url": "https://files.pythonhosted.org/packages/63/b4/f76e9ad67879cee02b5cc948b4cfa72b123ad9f2f323bb0badbe7c138157/shadowd-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b65afbb7e4e31433e2d4cfb2b833872", "sha256": "6219d9366159534f7226ed34cabb57db9f5a7514ac640dd46bc6275d215d0ebe" }, "downloads": -1, "filename": "shadowd-1.1.0.tar.gz", "has_sig": false, "md5_digest": "0b65afbb7e4e31433e2d4cfb2b833872", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5647, "upload_time": "2015-02-03T15:13:41", "url": "https://files.pythonhosted.org/packages/2c/e5/775075a25d349fb86ab54c25ae7735212c784152632a014efd987e506c9c/shadowd-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "21531003943400dff3e6ccfd99f4e831", "sha256": "d3e2641c60fd4852f8ecc334bf173f2aa24520bbb9cd2068f439ba5eb380f72c" }, "downloads": -1, "filename": "shadowd-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "21531003943400dff3e6ccfd99f4e831", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9536, "upload_time": "2015-02-06T11:52:40", "url": "https://files.pythonhosted.org/packages/1b/b6/140f71b335a7ebf8d0488649bf7ea7b31f0fd0b2e02c014f35b0932aa574/shadowd-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "296bd5648f4725ef7902cfc79d3b23f5", "sha256": "651e6cfa41d07f9c93665ddba67a564c18aaea950556859fc39d96f38655b529" }, "downloads": -1, "filename": "shadowd-1.1.1.tar.gz", "has_sig": false, "md5_digest": "296bd5648f4725ef7902cfc79d3b23f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5639, "upload_time": "2015-02-06T11:52:42", "url": "https://files.pythonhosted.org/packages/20/9b/03ccdd48c766b32a18a560593938d04c34b9fb5c9672b279d2118cfe08d2/shadowd-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "3568fc554f35b66d9737de4188522eb1", "sha256": "8b9393811e5332c156851cb1d05d5411f9df355bbc53f03a5f656693d6259867" }, "downloads": -1, "filename": "shadowd-1.2.0.tar.gz", "has_sig": false, "md5_digest": "3568fc554f35b66d9737de4188522eb1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6112, "upload_time": "2015-05-05T19:43:21", "url": "https://files.pythonhosted.org/packages/5e/f9/abfe25d83ec5197cbb95c808f4bdd5eae2d819d53d0097ff6272a8214326/shadowd-1.2.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "ac53f19a0877af38246735392e665b46", "sha256": "4e9f40c9b68e7362f1614cb296fc91a2fc356b1d9798cea42dadae125d481bf8" }, "downloads": -1, "filename": "shadowd-2.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ac53f19a0877af38246735392e665b46", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 13031, "upload_time": "2016-01-12T14:12:50", "url": "https://files.pythonhosted.org/packages/30/6d/5559b55d43cd616273df9404e41ca0b96e3a5e2a7d715e76bf5ed8c07226/shadowd-2.0.0-py2-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ac53f19a0877af38246735392e665b46", "sha256": "4e9f40c9b68e7362f1614cb296fc91a2fc356b1d9798cea42dadae125d481bf8" }, "downloads": -1, "filename": "shadowd-2.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ac53f19a0877af38246735392e665b46", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 13031, "upload_time": "2016-01-12T14:12:50", "url": "https://files.pythonhosted.org/packages/30/6d/5559b55d43cd616273df9404e41ca0b96e3a5e2a7d715e76bf5ed8c07226/shadowd-2.0.0-py2-none-any.whl" } ] }