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 Options -Indexes FollowSymLinks MultiViews AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 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"; }