#!/usr/bin/perl -w
#
# Copyright (c) 2008 University of Utah and the Flux Group.
#
# {{{EMULAB-LICENSE
#
# This file is part of the Emulab network testbed software.
#
# This file is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or (at
# your option) any later version.
#
# This file is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public
# License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this file. If not, see .
#
# }}}
#
use English;
use Getopt::Std;
use File::Basename;
use File::Find;
sub usage {
print STDERR "Usage: installwikidocs \n";
exit(-1);
}
my $optlist = "";
my $TB = "@prefix@";
my $WIKIDOCS = "$TB/www/wikidocs";
my $HTMLINSTALL = "$TB/sbin/htmlinstall";
# Protos
sub FindCallBack();
# un-taint path
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin';
delete @ENV{'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
# Turn off line buffering on output
$| = 1;
usage()
if (@ARGV != 1);
my $sourcedir = $ARGV[0];
if (! chdir($sourcedir)) {
die("Could not chdir to $sourcedir: $!\n");
}
if (!-e $WIKIDOCS) {
if (! mkdir("$WIKIDOCS", 0771)) {
die("Could not make directory $WIKIDOCS: $!\n");
}
}
system("rsync -a --delete $sourcedir/ $WIKIDOCS") == 0
or die("Could not rsync $sourcedir/ to $WIKIDOCS");
find({'wanted' => \&FindCallBack, 'untaint' => 1}, $sourcedir);
unlink("$WIKIDOCS/robots.txt")
if (-e "$WIKIDOCS/robots.txt");
unlink("$WIKIDOCS/.htaccess")
if (-e "$WIKIDOCS/.htaccess");
exit(0);
sub FindCallBack()
{
my $name = $_;
return
if ($name eq "." || $name eq "..");
my $fullpath = "$File::Find::dir/$name";
my $tmp = `file -i $name`;
if ($tmp =~ /text\/plain/ ||
$tmp =~ /text\/html/) {
print "$name, $WIKIDOCS/$fullpath\n";
}
}