{ "info": { "author": "Christian Ledermann", "author_email": "christian.ledermann@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Pyramid", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" ], "description": "Introduction\n ==================\n \n In fantasy fiction, a lich is a type of undead creature. (wikipedia_)\n Liches is used to find dead links in your website so I thought this name\n was appropriate (and a nicer explanation than liches stands for LInk Checker\n Server).\n \n Liches wraps the linkchecker_ output into a web interface.\n You can run Liches as a stand-alone service for use with your websites\n regardless of the language they're written in. While Liches itself is\n written in Python, it interacts with your website purely via HTTP and\n JSON_. You can even integrate it with pure javascript without the need of\n server side programming or use it as a stand alone service.\n An example how to integrate it into a website can be found at\n https://github.com/collective/collective.liches\n \n Rational\n --------\n \n While linkchecker_ itself can produce html this results in a single\n monolithic page with all results included. This can be intimidating\n and is from a usability point of view suboptimal. Liches presents\n the results agregated per page, so you get a quick overview of how\n many pages in your site have broken links and for each page an overview\n which links are broken. You can also filter the results for a specific\n error message so you can narrow down and prioritize which errors to deal\n with first.\n \n You can configure your linkchecks and invoke linkchecker through the\n webinterface.\n \n Install\n =======\n \n Prerequisites\n -------------\n \n It is strongly recommended to install Liches in a virtualenv_\n \n ::\n \n $ mkdir liches\n $ virtualenv --no-site-packages liches/\n $ cd liches/\n \n In this virtualenv you can install liches for production\n or development.\n \n Install for production\n ----------------------\n \n In the virtualenv you created above execute these commands\n \n ::\n \n $ wget http://github.com/downloads/wummel/linkchecker/LinkChecker-8.4.tar.xz\n $ xz -d LinkChecker-8.4.tar.xz\n $ bin/pip install LinkChecker-8.4.tar\n $ bin/pip install liches\n $ wget https://raw.github.com/cleder/liches/master/production.ini\n $ bin/initialize_liches_db production.ini\n Username [admin]:\n Password [generate]:\n ('password generated: ', 'whmgfi6r')\n Fullname: Administrator\n Email: root@localhost\n $ bin/pserve production.ini\n \n Username and password are written to the file 'password.txt'. Delete this\n file after installation.\n \n Install for development\n ------------------------\n \n In the virtualenv you created above execute these commands:\n \n ::\n \n $ wget https://raw.github.com/cleder/liches/master/buildout.cfg\n $ mkdir buildout-cache\n $ mkdir buildout-cache/eggs\n $ mkdir buildout-cache/downloads\n $ bin/easy_install -u setuptools\n $ wget http://python-distribute.org/bootstrap.py\n $ bin/python bootstrap.py\n $ bin/buildout\n $ rm buildout.cfg\n $ ln -s src/liches/buildout.cfg\n $ ln -s src/liches/development.ini\n $ bin/initialize_liches_db development.ini\n Username [admin]:\n Password [generate]:\n ('password generated: ', 'whmgfi6r')\n Fullname: Administrator\n Email: root@localhost\n $ bin/pserve development.ini\n \n \n Username and password are written to the file 'password.txt', so you do\n not have to input these values every time you reinitialize your database.\n \n Configuration\n --------------\n \n You configure you liches server in you production.ini or development.ini\n file.\n \n Database\n +++++++++\n \n In the `[app:main]` section of you configuration file change the sqlalchemy.url_\n to point to your database (or leave it like it is if you want to use sqllite)\n \n .. _sqlalchemy.url: http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#database-urls\n \n API Key\n ++++++++\n \n To enable a website to request a linkcheck of a particular page you have\n to provide an `api_key` in the `[liches]` section of your ini file. If this\n parameter is not set liches will generate a random key every time it is\n started. The generated key will be displayed during startup.\n \n ::\n \n 2013-08-05 17:16:01,085 WARNI [liches.utils][MainThread] API Key: w4NhYBHSVGzfmpiK\n \n As the generated key is reasonably unique and complicated you may copy\n it into your ini file.\n \n Getting Started\n ===============\n \n Define your linkchecks in the web GUI or alternatively import linkchecks\n from the commandline.\n \n Web GUI\n --------\n \n Open your Liches server in your webbrowser.\n \n .. image:: https://raw.github.com/cleder/liches/master/docs/liches-home-loggedout.png\n \n Log into your liches server.\n \n .. image:: https://raw.github.com/cleder/liches/master/docs/liches-home-loggedin.png\n \n Goto linkchecks.\n \n .. image:: https://raw.github.com/cleder/liches/master/docs/liches-linkchecks.png\n \n and add a new linkcheck.\n \n .. image:: https://raw.github.com/cleder/liches/master/docs/liches-add-linkcheck.png\n \n On the commandline you can then call:\n \n ::\n \n $ bin/liches_linkchecker development.ini\n \n This command will call linkchecker_ for all the checks you have enabled\n and import the results into the database. For regular linkchecks you can\n call this command as a cron job.\n \n \n Manual Import\n --------------\n Check a site for bad links with e.g:\n \n ::\n \n $ bin/linkchecker --file-output=csv --pause=3 --no-warnings http://localhost/index.html\n \n Please refer to the linkchecker_ manual for usage.\n \n Import the output produced by linkchecker_ into liches\n \n ::\n \n $ bin/import_liches_csv production.ini\n \n View the results\n -----------------\n \n Open `http://localhost:6543/` in your browser to see the results. The\n frontpage tells you how many pages with broken urls are in your site.\n Click on the link *'You have XYZ pages with broken links'* to view the\n pages at `http://localhost:6543/getpages`.\n \n At `http://localhost:6543/getpages?format=json` you can access the data\n in JSON_ format.\n \n .. image:: https://raw.github.com/cleder/liches/master/docs/liches-brokenpages.png\n \n The links will take you to a page with detailed results for this page e.g.\n `http://localhost:6543/checkurl?url=http://localhost/index.html`\n which can also be accessed as JSON_\n `http://localhost:6543/checkurl?url=http://localhost/index.html&format=json`\n \n .. image:: https://raw.github.com/cleder/liches/master/docs/liches-brokenlinks.png\n \n .. _linkchecker: http://wummel.github.io/linkchecker/\n .. _virtualenv: http://www.virtualenv.org/\n .. _JSON: http://www.json.org/\n .. _wikipedia: https://en.wikipedia.org/wiki/Lich\n \n \n Changes\n ========\n \n 0.7 (2013/11/28)\n ----------------\n \n - remove linkchecker dependency so you can `pip install -U liches`\n - pyramid 1.5 compatible (if you are using pyramid < 1.5 use liches 0.6)\n \n 0.6 (2013/11/28)\n ----------------\n \n - add ability to invoke linkchecker in the webinterface\n - add a broken links count to each page in overview\n \n \n 0.5 (2013/08/29)\n -----------------\n \n - add ability to show invalid pages only\n - inititialize_liches_db writes a file 'password.txt' with user:password\n \n 0.4 (2013/08/12)\n ----------------\n \n - bug fixes\n - add ability to filter pages by error\n \n \n 0.3 (2013/08/07)\n -----------------\n \n - add script to check all linkchecks\n - add linkcheck contenttype\n - add authentication\n - add form to change password\n - add user add form\n \n \n 0.2 (2013/07/31)\n -----------------\n \n - Add script to empty db\n - fixes\n - more documentation\n - add license\n \n \n 0.1 (2013/07/31)\n ----------------\n \n - Initial version", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cleder/liches", "keywords": "web wsgi bfg pylons pyramid linkchecker", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "liches", "package_url": "https://pypi.org/project/liches/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/liches/", "project_urls": { "Homepage": "https://github.com/cleder/liches" }, "release_url": "https://pypi.org/project/liches/0.7/", "requires_dist": null, "requires_python": null, "summary": "Liches a server for linkchecker results", "version": "0.7" }, "last_serial": 931093, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "c84534b916f32f0bdff5a194700e0c3e", "sha256": "5f35e2f430336b89fb2a8255924d3d55a9b3460b2b5c7a28cf951f2e17d0ca3a" }, "downloads": -1, "filename": "liches-0.1.tar.gz", "has_sig": false, "md5_digest": "c84534b916f32f0bdff5a194700e0c3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55739, "upload_time": "2013-07-31T11:50:52", "url": "https://files.pythonhosted.org/packages/01/b6/981bade7a389c4ca9daba0c8ccbf1f4cc410f2557daec76bcd571fa114dc/liches-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "44d62235b28d8d627865901bf40847f3", "sha256": "58e7a76d0fa9f330614dbaa1ccbcb2eda74807d45f222bad4ce06c15d08802e5" }, "downloads": -1, "filename": "liches-0.2.tar.gz", "has_sig": false, "md5_digest": "44d62235b28d8d627865901bf40847f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56120, "upload_time": "2013-07-31T15:54:06", "url": "https://files.pythonhosted.org/packages/72/26/ff03692cee323154f3b6f1c215704127dc93a62a5d3125bb7d25862c18af/liches-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "748bc52d3a26a2a7037551b75d2cf6ac", "sha256": "736bb93a059615939ef721a84c47ae35b1076d3486a3285184cb9b8c21d77bf4" }, "downloads": -1, "filename": "liches-0.3.tar.gz", "has_sig": false, "md5_digest": "748bc52d3a26a2a7037551b75d2cf6ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65718, "upload_time": "2013-08-07T13:36:23", "url": "https://files.pythonhosted.org/packages/6d/2a/083ec275b6676bdc58dc533303ad16228c58be1cc9b6e9c7f335b1862b99/liches-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "c39487241ae96e7da425c6385cb6364f", "sha256": "3b0408f42fe672cb8d9e92abe1bd3ef9c717a6ff8e44aed081c090ab240ff0b6" }, "downloads": -1, "filename": "liches-0.4.tar.gz", "has_sig": false, "md5_digest": "c39487241ae96e7da425c6385cb6364f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66156, "upload_time": "2013-08-12T15:19:35", "url": "https://files.pythonhosted.org/packages/de/ab/0e093eb3aeab8c25ca0ea47f66aa7ad6af552c3744227fd11c6a9ef9cac5/liches-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "5ff9b783addf0b5e5415b50871307741", "sha256": "163b2bbcb03da73f03d1468a633388f401ae806abf53a539e2e83d52d23ad5ab" }, "downloads": -1, "filename": "liches-0.5.tar.gz", "has_sig": false, "md5_digest": "5ff9b783addf0b5e5415b50871307741", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64620, "upload_time": "2013-08-29T15:26:45", "url": "https://files.pythonhosted.org/packages/ff/5a/63643f29429cb8e34eb6cedd8d89187ece3ee685e11a7197001d56d7e25c/liches-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d809cf6f26653cfb9fb487c32ec83ca4", "sha256": "990f957e1229031ebc656bde98aab991141d22b74f73db415758bad251076874" }, "downloads": -1, "filename": "liches-0.6.tar.gz", "has_sig": false, "md5_digest": "d809cf6f26653cfb9fb487c32ec83ca4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65603, "upload_time": "2013-11-28T10:36:18", "url": "https://files.pythonhosted.org/packages/82/89/67f9a12afe29c9f692a0e32dd2c84b440159e168251dd633d53254a3c89e/liches-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "ab6fd4a746b854200d188cd16ef21c39", "sha256": "9bd2b3b22f6987456d26e19d5f29910855071dd6b569362c80a00817b029e5c5" }, "downloads": -1, "filename": "liches-0.7.tar.gz", "has_sig": false, "md5_digest": "ab6fd4a746b854200d188cd16ef21c39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65705, "upload_time": "2013-11-28T10:57:19", "url": "https://files.pythonhosted.org/packages/b4/24/715aa03bb99bb8284c2ab16422e4feff72541df0805a1488d0114d0f19db/liches-0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ab6fd4a746b854200d188cd16ef21c39", "sha256": "9bd2b3b22f6987456d26e19d5f29910855071dd6b569362c80a00817b029e5c5" }, "downloads": -1, "filename": "liches-0.7.tar.gz", "has_sig": false, "md5_digest": "ab6fd4a746b854200d188cd16ef21c39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65705, "upload_time": "2013-11-28T10:57:19", "url": "https://files.pythonhosted.org/packages/b4/24/715aa03bb99bb8284c2ab16422e4feff72541df0805a1488d0114d0f19db/liches-0.7.tar.gz" } ] }