#!/usr/bin/perl #+JMJ # wfilej - Generate web server file list in JSON format # 2014 David Meyer 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 () { $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: