http://paperlined.org/dev/src/pl/application_http-index-format.pl

#!/usr/bin/perl

    use strict;
    use warnings;
    use CGI::Carp qw(fatalsToBrowser);
    BEGIN {$ENV{HOME} ||= (getpwuid($<))[7]}       # in case $HOME isn't set
    BEGIN {require "$ENV{HOME}/.cgiEnvVars.pm"}

    use CGI;
    use HTTP::Date;
    use Data::Dumper;
    use CGI::Util;

my $external_directory = $ENV{PATH_INFO};
            #print "Content-type: text/plain\n\n$external_directory\nFIN\n"; exit;
    defined($external_directory) or doesnt_exist("");
my $internal_directory = get_internal_directory_from_external($external_directory);
    -d $internal_directory or doesnt_exist($external_directory);


print "Content-Type: application/http-index-format; charset=utf-8\n\n";

my $requested_url = "http://" . $ENV{SERVER_NAME} . $external_directory;
print "300: $requested_url\n";
print "200: Filename Content-Length File-type Last-Modified\n";


my $directory_description = get_directory_description($internal_directory);
if ($directory_description) {
    $directory_description =~ s/^/101: /;
    $directory_description =~ s/[\n\r]$//s;
    print "$directory_description\n";
}



opendir DIR, $internal_directory        or die "Unable to open directory '$internal_directory': $!\n\t";
my @entries = readdir(DIR);
closedir DIR;

# default sort order:  most-recently-modified first
my %age = map {$_ => -M "$internal_directory/$_"} @entries;
@entries = sort {$age{$a} <=> $age{$b}} @entries;

foreach my $filename (@entries) {
    next if ($filename =~ /^\./);
    next if ($filename eq 'HEADER.html');
    my $fullpath = "$internal_directory/$filename";

    printf "201: \"%s\" %d %s %s\n",
            $filename,
            -s $fullpath,
            -d $fullpath ? "DIRECTORY" : "FILE",
            CGI::Util::escape(
                HTTP::Date::time2str(       # RFC 1123 date
                    (stat $fullpath)[9]
                )
            );
}

exit;






sub doesnt_exist {
    my $requested = shift;
    print <<"EOF";
Status: 404
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL $requested was not found on this server.<P>
<HR>
$ENV{SERVER_SIGNATURE}
</BODY></HTML>
EOF

    exit;
}


# =================== per-website customizations ==========================

sub get_internal_directory_from_external
{
    my $external_dir = shift;

    return "/home/interiot/public_html/" . $external_dir;
}

sub get_directory_description {
    my $dir = shift;

    if (-f "$dir/HEADER.html") {
        if (open FIN, "$dir/HEADER.html") {
            my $contents = do {local $/=undef; <FIN>};
            close FIN;

            if ($contents =~ /\(([^)<>]*)\)/m) {
                return "==== $1 ====";
            }
        }
    }
    return undef;
}

Generated by GNU enscript 1.6.4.