#!/usr/bin/perl
#+JMJ
# wfilej - Generate web server file list in JSON format
# 2014 David Meyer <[email protected]>

use JSON;

$ROOTURL = 'http://totallynuclear.club';
$ROOTPATH = '/var/www/html';
$USERPATH = '/home/*/public_html';
$UPATHRE = '/home/(\w+)/public_html';

#print "{\"filelist\": [\n";
@filelist = ();

open WFILE, "/bin/find $ROOTPATH $USERPATH -name '*.html' -o -name '*.txt' 2>/dev/null |";

while (<WFILE>) {
   $urlpath = $user = $basefile = $url = "";
   chop $_;
   if ($_ =~ m:^$ROOTPATH(.*)/([^/]+)$:) {
       $urlpath = $1;
       $basefile = $2;
       $user = 'null';
       $url = $ROOTURL . $urlpath . '/' . $basefile;
   }
   else {
       $_ =~ m:^$UPATHRE(.*)/([^/]+)$:;
       $user = "\"$1\"";
       $urlpath = $2;
       $basefile = $3;
       $url = $ROOTURL . "/~$1" . $urlpath . '/' . $basefile;
   }

#    print "\t{\n";
#    print "\t\t\"file\": \"$_\",\n";
#    print "\t\t\"user\": $user,\n";
#    print "\t\t\"urlpath\": " . ($urlpath ? "\"$urlpath\"" : "null") . ",\n";
#    print "\t\t\"basefile\": \"$basefile\",\n";
#    print "\t\t\"url\": \"$url\"\n";
#    print "\t},\n";
   %fileobj = (
       file => $_,
       user => $user,
       urlpath => $urlpath,
       basefile => $basefile,
       url => $url
   );
   push @filelist, \%fileobj;
#       (
#        file => $_,
#        user => $user,
#        urlpath => $urlpath,
#        basefile => $basefile,
#        url => $url
#       )
#    );
}

#print "]}\n";
%flobj = (filelist => \@filelist);
print encode_json \%flobj;

# Emacs variables ...
#Local variables:
#mode: perl
#End: