#######################################################################
## webloganalysis.pl
## Anno Domini: march-17-2000
## Peter Tapolyai
[email protected]
##
http://www.tinkershop.net
##
## Written in Perl for NT
## This application executes Analog (web log analysis tool) to analyze each
## website's weblogs. This application is called from the scheduler "AT" program
## and is run at every night at 2:30 am.
##
## This script also dynamicaly makes each websites's config file from the original
## config file that I renamed to Analog1.cfg without the headers.
##
## Paths and file names are purposly hardcoded for security reasons!
##
## The scheduler command is:
## at 2:20 /every:M,T,W,Th,F d:\inetpub\websites\scpintranet\webloganalysis.pl
##
use File::Copy;
use File::DosGlob 'glob';
use Win32::Process;
@sSites = ("spectrum","spacecom","acts","wincom","acatm","scp");
foreach $site (@sSites) {
if ($site eq "spectrum") {
$iNum = 1
}elsif ($site eq "spacecom") {
$iNum = 2
}elsif ($site eq "acts") {
$iNum = 3
}elsif ($site eq "wincom") {
$iNum = 5
}elsif ($site eq "acatm") {
$iNum = 6
}elsif ($site eq "scp") {
$iNum = 7
}
@sFilesToDelete = glob "C:\\Analog\\*.log";
map { unlink $_ } @sFilesToDelete;
@sLogFiles = glob "C:\\Winnt\\system32\\LogFiles\\W3svc" .$iNum . "\\*.log";
map {copy($_,"C:\\Analog")}@sLogFiles;
## For each site analyzed I write a new config file. Only two variables, the
## OUTFILENAME and HOSTNAME changes with each site
$sConfigHeader = "# Configuration file for analog 4.03\n";
$sConfigHeader .= "# See
http://www.statslab.cam.ac.uk/~sret1/analog/ \n";
$sConfigHeader .= "# \n";
$sConfigHeader .= "# Here are a couple of configuration commands to get you started. Add any more \n";
$sConfigHeader .= "# you like from the Readme. \n";
$sConfigHeader .= "# \n";
$sConfigHeader .= "# There is a much more extensive configuration file in examples/big.cfg \n";
$sConfigHeader .= "# \n";
$sConfigHeader .= "# If you need a LOGFORMAT command it must go here, above the LOGFILE command. \n";
$sConfigHeader .= "OUTFILE " . $site . ".html\n";
$sConfigHeader .= "\nLOGFILE ex*.log \n";
$sConfigHeader .= "HOSTNAME \U$site\n";
$sConfFile = "C:\\Analog\\Analog1.cfg";
open(CONFIGPATTERN, $sConfFile);
@ConfFile = <CONFIGPATTERN>;
close(CONFIGPATTERN);
open(CONFIGFILE, "+>C:\\Analog\\Analog.cfg");
print(CONFIGFILE $sConfigHeader);
print(CONFIGFILE @ConfFile);
close(CONFIGFILE);
Win32::Process::Create($ProcessObj,
"C:\\Analog\\Analog.exe",
"",
0,
NORMAL_PRIORITY_CLASS,
"C:\\Analog")|| print "<font color=\"\#ff0000\"><b>Analog Execution Error</b></font>\n<p>\n";
$Timeout = 1000;
$ProcessObj->Wait($Timeout);
$ProcessObj->GetExitCode($Exitcode);
if ($site eq "spacecom") {
sleep 60;
}elsif ($site eq "acts") {
sleep 120;
}
$sFilename = $site . ".html";
unlink("D:\\Inetpub\\websites\\scpintranet\\wwwroot\\" . $sFilename);
copy("C:\\Analog\\" . $sFilename,"D:\\Inetpub\\websites\\scpintranet\\wwwroot");
}
@sFilesToDelete = ();
push(@sFilesToDelete, glob "C:\\Analog\\*.html");
map { unlink $_ } @sFilesToDelete;
##
#######################################################################