file*HANDLER 0.13

file*HANDLER is primarily a Perl script which coordinates some free media conversion packages with a PostgreSQL back end.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!
send us
an update
GPL (GNU General Public License) 
file*HANDLER Team
ROOT \ Internet \ HTTP (WWW)
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.


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

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.

Last updated on February 17th, 2006

#file handler #Perl script #serve binary #file #handler #Perl #script

Add your review!