{ "info": { "author": "Andreas Gabriel", "author_email": "gabriel@hrz.uni-marburg.de", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Programming Language :: Python", "Topic :: Multimedia :: Sound/Audio", "Topic :: Multimedia :: Video", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Introduction\n============\n\nunimr.red5.protectedvod implements a video-on-demand (vod) or\naudio-on-demand solution for secure flash streaming with `Red5\nserver`_. It provides a way to protect your media files from being\ndirectly downloaded from Plone or from being \"leeched\" by other\nsites. For this purpose the streaming URL is secured by altering the\nrequested URL with a signature. When the video/audio file is requested,\nthe path of the file is individually signed by Plone for each request\nand the streaming is delegated to Red5. Red5 checks afterwards the\nsignature of the incoming request for validity by a shared secret\n(only known by Plone and Red5!). If the signature is valid Red5\ndelivers the stream. The signature is unique, context specific and its\nduration of validity is limited. Plone's security context is therefore\ncompletely preserved in Red5. Nobody can copy-and-paste that URL\nanywhere he want and load the video.\n\n.. _`Red5 server`: http://osflash.org/red5\n\n\nInstallation\n============\n\nProduct\n-------\n\nAdd unimr.red5.protectedvod to your buildout as normal. See \nhttp://plone.org/documentation/tutorial/buildout. Don't forget to \nload the configure.zcml file!\n\nThen install the product via Plone's Add-on products control panel.\n\n\nFileSystemStorage\n-----------------\n\nBoth Plone and Red5 require a shared file system with read/write\naccess. Follow the installation instructions of iw.fss_ and remember\nthat only site storage strategies *site1* and *site2* are supported by\nunimr.red5.protectedVOD. Red5 needs the file extension of the\nmedia content to work.\n\n.. _iw.fss: http://pypi.python.org/pypi/iw.fss\n\nConfiguration\n-------------\n\nIn portal_properties/red5_protectedvod_properties you have to\nconfigure the Red5 server URL, TTL (time to live) in sec of your\nsignature and the shared secret for generating the signature.\n\n :red5_server_url: rtmp:///protectedVOD\n :ttl: 60\n :secret: \n\n\nExample Archetype\n=================\n\nThe included Archetype *Red5Stream* integrates the GPL version of\nflowplayer_ with Plone 3.x. It can play video files (FLV, H.246, MP4)\nas well as audio files (MP3). Clients with \"view\" permission can only\nview the content by the streaming technique of Red5 but cannot\ndirectly download the content. Per default only clients with owner or\nmanager role have the \"Download Red5Stream\" permission to download the\ncontent from Plone.\n\n.. _flowplayer: http://www.flowplayer.org\n\n\nKupu integration \n----------------\n\nTo make it easier to present Red5Streams within a content item of Plone,\nthis product installs a new Kupu paragraph style. You can use them\nlike this:\n\n 1. Insert the image you want to use as a splash image. You\n should insert this \"inline\" (rather than left/right floating),\n preferably in its own paragraph. Alternatively, you can also\n enter a text as placeholder.\n\n 2. Select on the image (or placeholder text), and make it link\n to the .flv or .mp3 file you want to play.\n \n 3. Select the *red5-stream* style from the styles drop-down.\n\n\nSignature & streaming URL\n=========================\n\nThe dynamically signed streaming URL takes the following format:\n\n **rtmp:///protectedVOD////**\n\nThe parts of this URL are as follows:\n\n * *baseURL* is determined based on the relative path of the\n video/audio content in the FileSystemStorage.\n\n * *signature* is calculated as follows:\n ``hmac.new(shared_secret + baseUrl + streamName + client ip + expires).hexdigest()``\n where shared_secret is specified in Plone's configuration and\n should match the value on the red5 server.\n\n * *expires* is a timestamp given as a hex string. This is the number\n of seconds since January 1, 1970, 00:00:00 in hexadecimal\n notation plus the the ttl configured in Plone portal_properties.\n\n * *streamName* is the name of the video file, for example,\n Extremists.flv, flowplayer.flv, or rocknroll.mp4.\n\n\nRed5 application\n================\n\nThis package includes the corresponding Red5 application\n*protectedVOD* as WAR-archive (also a tgz-Archive of the java sources;\ns. README.txt in ``red5-wabapp`` directory of this product for further\ninformation). Don't forget to change/synchronize the shared secret in\nboth Plone's and Red5's configuration!\n\n\nRequisites\n==========\n\n * Support for symbolic links for the used file system\n * FileSystemStorage (iw.fss_)\n * Red5 server (v0.8.x)\n \n\nCredits\n=======\n \n - Andreas Gabriel \n - David Nax \n\n\nTODO\n====\n\n * clustering implementation\n * collective.flowplayer integration\n\nChangelog\n=========\n\n0.1 (xxxx-xx-xx)\n----------------\n\n* Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://svn.plone.org/svn/collective/unimr.red5.protectedvod", "keywords": "Plone Flash FLV MP3 Zope Streaming Red5 rtmp", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "unimr.red5.protectedvod", "package_url": "https://pypi.org/project/unimr.red5.protectedvod/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/unimr.red5.protectedvod/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://svn.plone.org/svn/collective/unimr.red5.protectedvod" }, "release_url": "https://pypi.org/project/unimr.red5.protectedvod/0.1rc1-r96721/", "requires_dist": null, "requires_python": null, "summary": "Manage, protect and present your video/audio content (FLV, MP3, etc.) with Plone but delegate the flash streaming to Red5", "version": "0.1rc1-r96721" }, "last_serial": 801229, "releases": { "0.1rc1-r95123": [], "0.1rc1-r95125": [ { "comment_text": "", "digests": { "md5": "9e30b422fb126e2ff9a51e11a7ba1862", "sha256": "f69a3a2276713b87cead98f1bde3b211fd5ead539a1137dfa9ef62d3e61018c7" }, "downloads": -1, "filename": "unimr.red5.protectedvod-0.1rc1_r95125-py2.4.egg", "has_sig": false, "md5_digest": "9e30b422fb126e2ff9a51e11a7ba1862", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 245554, "upload_time": "2009-08-20T00:05:24", "url": "https://files.pythonhosted.org/packages/70/85/afed3d59da7e5f9ab32bd4192e1e9ef96e5d0e6ba46c0503c41310f4533b/unimr.red5.protectedvod-0.1rc1_r95125-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "18bac58b96fd6259ab05f8f8a4cf8247", "sha256": "022185e41218498341f48f250203f1de0650af2ce22b396a2c25100d1796684c" }, "downloads": -1, "filename": "unimr.red5.protectedvod-0.1rc1-r95125.tar.gz", "has_sig": false, "md5_digest": "18bac58b96fd6259ab05f8f8a4cf8247", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 237318, "upload_time": "2009-08-20T00:04:28", "url": "https://files.pythonhosted.org/packages/1f/5a/872dcaa271942c29e4aef05ce80081139a93fee36f0f7dcd461cdb43792f/unimr.red5.protectedvod-0.1rc1-r95125.tar.gz" } ], "0.1rc1-r96721": [ { "comment_text": "", "digests": { "md5": "59f761113665cacbd0ad3b6108336ebc", "sha256": "28799e5ac31b48fbf110e173ff59787e71816a4f788a52c8024e62fc4437ccd2" }, "downloads": -1, "filename": "unimr.red5.protectedvod-0.1rc1_r96721-py2.4.egg", "has_sig": false, "md5_digest": "59f761113665cacbd0ad3b6108336ebc", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 245698, "upload_time": "2009-09-04T21:22:55", "url": "https://files.pythonhosted.org/packages/12/a3/a84a3034c700d437eab0591f92690e615d69b206275394ff82801500921c/unimr.red5.protectedvod-0.1rc1_r96721-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "b17f132599560c3c004bb17e8ed54a8a", "sha256": "367de3a1317635ee060ceac921433b33ece7e8fef83a169bf7c0bd08b497fb89" }, "downloads": -1, "filename": "unimr.red5.protectedvod-0.1rc1-r96721.tar.gz", "has_sig": false, "md5_digest": "b17f132599560c3c004bb17e8ed54a8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 236758, "upload_time": "2009-09-04T21:22:43", "url": "https://files.pythonhosted.org/packages/18/0f/688891a24207fa136b3d75c81e5cfc2f2b7d759105a46f004e3507c86966/unimr.red5.protectedvod-0.1rc1-r96721.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "59f761113665cacbd0ad3b6108336ebc", "sha256": "28799e5ac31b48fbf110e173ff59787e71816a4f788a52c8024e62fc4437ccd2" }, "downloads": -1, "filename": "unimr.red5.protectedvod-0.1rc1_r96721-py2.4.egg", "has_sig": false, "md5_digest": "59f761113665cacbd0ad3b6108336ebc", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 245698, "upload_time": "2009-09-04T21:22:55", "url": "https://files.pythonhosted.org/packages/12/a3/a84a3034c700d437eab0591f92690e615d69b206275394ff82801500921c/unimr.red5.protectedvod-0.1rc1_r96721-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "b17f132599560c3c004bb17e8ed54a8a", "sha256": "367de3a1317635ee060ceac921433b33ece7e8fef83a169bf7c0bd08b497fb89" }, "downloads": -1, "filename": "unimr.red5.protectedvod-0.1rc1-r96721.tar.gz", "has_sig": false, "md5_digest": "b17f132599560c3c004bb17e8ed54a8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 236758, "upload_time": "2009-09-04T21:22:43", "url": "https://files.pythonhosted.org/packages/18/0f/688891a24207fa136b3d75c81e5cfc2f2b7d759105a46f004e3507c86966/unimr.red5.protectedvod-0.1rc1-r96721.tar.gz" } ] }