#!/usr/bin/perl

# Copyright (C) 2000-2002 NEC Corporation
# All Rights Reserved.

#
# プロキシサーバの統計情報作成
#  (2000.10.31 キャッシュサーバ向けに新規作成)
#  (2001.11.12  webalizerはaccess1.logが存在したときに動作)
#

require "/opt/nec/wbmc/lib/wbmc.pl";
require "/opt/nec/wbmc/lib/wbmc2.pl";

$webalizer_conf      = "/etc/opt/nec/wbmc/wbmc_webalizer.conf";
$webalizer_conf_lock = "wbmc_webalizer.conf";


#
# 前回起動のwebalizerがまだ動作していたらkillする
#
open(IN, "/bin/ps -efw |");
while(<IN>) {
	if( $_ =~ /\/opt\/nec\/wbmc\/bin\/webalizer/ ) {
		@wk = split(/\s+/, $_);
		print "webalizer process id = $wk[1]\n";
		system("/bin/kill $wk[1]");
		sleep(1);
	}
}
close(IN);

#--- 統計情報格納ディレクトリが存在しなければ作成する
system("/bin/mkdir -p /home/webalizer");

#--- 統計ディレクトリのサイズが一定量を越えていたら
#    ローテートする
if (!&readFile($webalizer_conf, $webalizer_conf_lock, *file)) {
        &showErrorPage("$webalizer_conf の読み込みに失敗しました。");
        exit(1);
}
$size  = "10"; # デフォルトは「１０MB」とする
for($i=0; $i<@file; $i++) {
        if( $file[$i] =~ /^\s*STATSIZE=(\d+)/ ) {
                $size = $1;
        }
}
$dirsize = &getDirSize("/home/webalizer") / 1024;
if( $dirsize > $size ) {
	#-- ローテート
	system("/bin/mkdir -p /home/webalizer/backup >/dev/null ");
	system("/bin/rm -f /home/webalizer/backup/* >/dev/null ");
	system("/bin/mv -f /home/webalizer/*png /home/webalizer/backup >/dev/null ");
	system("/bin/mv -f /home/webalizer/*html /home/webalizer/backup >/dev/null");
	system("/bin/rm -f /home/webalizer/webalizer.* >/dev/null ");
}

#
# 統計の解析を行う
#
$inPath = "/var/log/roma/";
$fname = $inPath . "access$ARGV[0].log";
system("/opt/nec/wbmc/bin/webalizer -o /home/webalizer -F squid -p $fname >/dev/null ");

#
# 上位５０件抽出＆HTMLページ作成
#
$proxypath = "/opt/nec/wbmc/adm/proxy";
chdir($proxypath);
system("$proxypath/create_urllist.cgi /home/webalizer/ $proxypath/ >/dev/null ");

