squidanalyzer/Makefile.PL

167 lines
4.8 KiB
Perl

use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
use strict;
my @ALLOWED_ARGS = ('LOGFILE','BINDIR','CONFDIR','HTMLDIR','BASEURL','DOCDIR','MANDIR','QUIET','INSTALLDIRS','DESTDIR');
# Parse command line arguments and store them as environment variables
while ($_ = shift) {
my ($k,$v) = split(/=/, $_, 2);
if (grep(/^$k$/, @ALLOWED_ARGS)) {
$ENV{$k} = $v;
}
}
$ENV{DESTDIR} =~ s/\/$//;
# Search for default log dir
my $default_log = '/var/log/squid/access.log';
if (! -d $default_log ) {
$default_log = '/var/log/squid3/access.log';
}
# Default install path
my $LOGFILE = $ENV{LOGFILE} || $default_log;
my $BINDIR = $ENV{BINDIR} || '/usr/local/bin';
my $CONFDIR = $ENV{CONFDIR} || '/etc/squidanalyzer';
my $HTMLDIR = $ENV{HTMLDIR} || '/var/www/squidanalyzer';
my $BASEURL = $ENV{BASEURL} || '/squidreport';
my $DOCDIR = $ENV{DOCDIR} || '';
my $MANDIR = $ENV{MANDIR} || '/usr/local/man/man3';
my $DESTDIR = $ENV{DESTDIR} || '';
$ENV{INSTALLDIRS} ||= 'vendor';
unless(open(INST, ">install_all.sh")) {
print "\nError: can't write post install file install_all.sh, $!\n";
exit 0;
}
print INST qq{#!/bin/sh
if [ ! -d "$DESTDIR$BINDIR" ]; then
mkdir -p $DESTDIR$BINDIR
fi
if [ ! -d "$DESTDIR$CONFDIR" ]; then
mkdir -p $DESTDIR$CONFDIR
mkdir -p $DESTDIR$CONFDIR/lang
fi
if [ ! -d "$DESTDIR$HTMLDIR" ]; then
mkdir -p $DESTDIR$HTMLDIR
fi
};
if ($DOCDIR ne '') {
print INST qq{
if [ ! -d "$DESTDIR$DOCDIR" ]; then
mkdir -p $DESTDIR$DOCDIR
fi
};
}
print INST qq{
if [ ! -d "$DESTDIR$MANDIR" ]; then
mkdir -p $DESTDIR$MANDIR
fi
if [ -e "$DESTDIR$CONFDIR/squidanalyzer.conf" ]; then
echo "File squidanalyzer.conf already exists. The new one will be copied as squidanalyzer.conf.new"
install -m 644 squidanalyzer.conf $DESTDIR$CONFDIR/squidanalyzer.conf.new
else
install -m 644 squidanalyzer.conf $DESTDIR$CONFDIR/
fi
install -m 755 squid-analyzer $DESTDIR$BINDIR/
install -m 644 sorttable.js $DESTDIR$HTMLDIR/
install -m 644 logo-squidanalyzer.png $DESTDIR$HTMLDIR/
install -m 644 squidanalyzer.css $DESTDIR$HTMLDIR/
install -m 644 lang/* $DESTDIR$CONFDIR/lang/
install -m 644 network-aliases $DESTDIR$CONFDIR/
install -m 644 user-aliases $DESTDIR$CONFDIR/
install -m 644 excluded $DESTDIR$CONFDIR/
pod2man doc/SquidAnalyzer.pod doc/squidanalyzer.3
install -m 644 doc/squidanalyzer.3 $DESTDIR$MANDIR/squidanalyzer.3
pod2text doc/SquidAnalyzer.pod README
};
if ($DOCDIR ne '') {
print INST qq{
install -m 644 README $DESTDIR$DOCDIR/
install -m 644 INSTALL $DESTDIR$DOCDIR/
install -m 644 ChangeLog $DESTDIR$DOCDIR/
};
}
if (!$ENV{QUIET}) {
print INST qq{
echo "
-----------------------------------------------------------------------------
1. Modify your httpd.conf to allow access to HTML output like follow:
Alias /squidreport $HTMLDIR
<Directory $HTMLDIR>
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
2. If necessary, give additional host access to SquidAnalyzer in httpd.conf.
Restart and ensure that httpd is running.
3. Browse to http://my.host.dom/squidreport/ to ensure that things are working
properly.
4. Setup a cronjob to run squid-analyzer daily:
# SquidAnalyzer log reporting daily
0 2 * * * $BINDIR/squid-analyzer > /dev/null 2>&1
or run it manually. For more information, see $DOCDIR/README file.
-----------------------------------------------------------------------------
"
};
}
close(INST);
`chmod 755 install_all.sh`;
# Change path into the default configuration file
`perl -p -i -e 's#/etc/squidanalyzer#$CONFDIR#' squidanalyzer.conf squid-analyzer`;
`perl -p -i -e 's#^Output.*#Output $HTMLDIR#' squidanalyzer.conf`;
`perl -p -i -e 's#^LogFile.*#LogFile $LOGFILE#' squidanalyzer.conf`;
`perl -p -i -e 's#^WebUrl.*#WebUrl $BASEURL#' squidanalyzer.conf`;
my $zcat = `which zcat`;
chomp($zcat);
`perl -p -i -e 's#^\\\$ZCAT_PROG.*#\\\$ZCAT_PROG = "$zcat";#' SquidAnalyzer.pm`;
WriteMakefile(
'DISTNAME' => 'SquidAnalyzer',
'NAME' => 'SquidAnalyzer',
'VERSION_FROM' => 'SquidAnalyzer.pm',
'dist' => {
'COMPRESS'=>'gzip -9f', 'SUFFIX' => 'gz',
'ZIP'=>'/usr/bin/zip','ZIPFLAGS'=>'-rl'
},
'AUTHOR' => 'Gilles Darold (gilles@darold.net)',
'ABSTRACT' => 'Squid log analyzer',
'DESTDIR' => $ENV{DESTDIR},
'INSTALLDIRS' => $ENV{INSTALLDIRS},
clean => {FILES => "install_all.sh"},
);
sub MY::install {
my $self = shift;
my $string = $self->MM::install;
$string =~ s/(pure_install\s+)(.*)/$1 install_all $2/;
return $string;
}
sub MY::postamble {
my $postamble = <<'END';
install_all: install_all.sh
sh install_all.sh
END
return $postamble;
}
if (!$ENV{QUIET}) {
print "Done...\n\n";
print "Now type 'make && make install'\n\n";
}