#!/usr/bin/perl

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

# RCS: $Id: wbmc_webalizer_merge,v 1.1 2006/12/22 05:33:58 shodai Exp $

##010716 v4.10 新規作成(アクセスログマージ処理)    haramoto
##010726 v4.10 ログファイルの読み込み順の変更   murakami

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

#
# アクセスログマージコマンド
#

$domaindir = "";
$option = $ARGV[0];
$domaindir = $ARGV[1];

#ログファイル(ローテート数値が末尾につく".n")
$logdir = "/var/log/httpd/";
$logfile = "access_log." . $domaindir;
$newfile = $logdir . $logfile . ".mrg";
$filenames = "";
$logfile_lock = "logfile";
$flag = 0;
$found = 0;

##010725 .mrg ファイル削除
if (-f $newfile) {
    system("/bin/rm -f $newfile");
}

if ($option eq "-n") {
	#
	# ローテートファイルの取得
	#
	chdir($logdir);
##010716 最新ファイルから表示
##010726 古いファイルから読み込む
	if (!&readFile("/bin/ls -lt $logfile*|", $logfile_lock, *rotatefile)) {
#	    &showErrorPage("$logfileの読み込みに失敗しました。");
	    exit(1);
	}

	#
	# アクセスログ ファイルリスト作成
	#
#	for ($i = 0; $i < @rotatefile; $i++) {
	for ($i = @rotatefile; $i > 0; $i--) {
	    @tmp = split(/\s+/, $rotatefile[$i]);
	    if (($tmp[8] eq $logfile) || ($tmp[8] =~ /^\Q$logfile\E\.\d+$/i)) {
	        $found++;
	        $file = $tmp[8];
	        if ($flag == 0) {
	            $filenames .= "$logdir$file";
	        } else {
				$filenames .= " $logdir$file";
	        }
	        if ($flag eq 0) {
	            $flag = 1;
	        }
	    }
	}

	if (!$found) {
#	    &showResultPage("ログファイルが存在しません。","");
	    exit(1);
	}

	#
	# コマンド発行
	#
	if(system("/bin/cat $filenames > $newfile") != 0){
#	    &showResultPage("アクセス統計用ファイル作成($filenames)に失敗しました。","");
	    exit(1);
	}

}
