file*HANDLER 0.13 review
Downloadfile*HANDLER project is primarily a Perl script which coordinates some free media conversion packages (cited later) with a PostgreSQL
|
|
file*HANDLER project is primarily a Perl script which coordinates some free media conversion packages (cited later) with a PostgreSQL back end accessing server to index and serve binary and text files direct from the database. A simple CGI file with embedded AJAX makes calls to this server which is also constantly looking for other alive f*H servers on the Internet.
Since the server caches media into the SQL database on demand, as the network grows, the network improves.
It's gridded directory sharing/browsing/searching with streaming audio/video as well as flat text/'doc'/pdf/image display for everyone. Its written with a few hooks for tags that would be included in your actual front page so that the UI is discard-able -- anyone can quickly rewrite a whole new [GT]UI without having to worry about the syntax of the 'newest version of dojo.licio.r' or whatever.
If you wanted to ignore the JS/HTML/CSS hooks then you can easily use the system to make direct requests that just return lists formatted as HTML table-bodies. In other words, the markup IS the markup.
As such, I've whipped up a Dojo 0.2 Widget that coordinates the serving backend with a UI so anyone can embed f*H functionality anywhere, or easily customize a provided default page.
A file*HANDLER server is really a few constituent parts I've tied up for you (top down):
A local web page providing the UI(served by an HTTP server of your choice) that is generated by a cgi script with embedded AJAX.
A secondary portion of the same CGI script, acting as middle-ware, which communicates, via AJAX, with the local front page to reconcile asynchronous JavaScript requests with the file*HANDLER sub-network back-end.
An always-on network server written in PERL that serves to the front and end communicates laterally with everyone else's file*HANDLER back-end PERL server additionally, it manages indexing of content directories you choose to serve.
A PostgreSQL database that is accessed only via internal PERL routines called from your front page.
So for example, a remote user comes to your site. First, not only can they browse and search your files, but they can also browse and search the files of anyone else hosting a file*HANDLER server that your local server knows about. (file*HANDLER identifies other servers on the network automatically). The user can now read/view/listen/watch by stream any content they find from whomever's server. There's no download, so there's so actual sharing, just direct streaming to the user's browser.
Requirements:
perl 5.8.x
PostgreSQL Core Distribution 8.x
HTTP Server (Apache suggested)
ffmpeg (video conversion - tested with version: CVS, build 3211264 on gcc 4.0.1)
wvWare (document conversion - tested with version 1.0.3)
ImageMagick (image conversion - tested with version 6.2.2)
Perl Modules (Available on CPAN):
DBI, DBD::Pg, Digest::MD5, File::Type, File::MimeInfo, Image::Magick, HTML::Tidy
IO::Socket, IO::Socket::Multicast, IO::SessionSet, IO::Handle
CGI, CGI::Ajax
Tie::Scalar
Getopt::Std
What's New in This Release:
Besides some more general code tweaking, file*HANDLER is now fully compatible with a MySQL database in addition to PostgreSQL.
The MySQL implementation is slightly faster on access/load times, but slightly more kludgy in the guts.
The Postgres implementation is noticeably slower with normal queries, slightly slower with BLOB access/creation, but is overall more consistent.
file*HANDLER 0.13 keywords