#!/usr/bin/perl

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

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

##010726 v4.1-1 access_logカレントログをマージ haramoto
##010726 v4.1-1 マージファイルのソート機能追加 murakami
##010726 v4.1-1 ローテートマージとカレントマージの連結 murakami
require "/opt/nec/wbmc/lib/wbmc.pl";

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

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

#ログファイル(カレントログ以外のマージファイル：末尾に".mrg1"がつく)
$logdir = "/var/log/httpd/";
$logfile = "access_log." . $domaindir;
$ssllogfile = "access_log." . $domaindir . "-ssl";

##010726 
$mrg1file = $logdir . $logfile . ".mrg1"; #ローテートログ、マージファイル名
$mrg2file = $logdir . $logfile . ".mrg2"; #カレントログ、マージファイル名
$newfile = $logdir . $logfile . ".mrg";   #連結マージファイル名

$filenames = "";
$logfile_lock = "logfile";
$flag = 0;
$found = 0;

if ($option eq "-n") {
	#
	# ログファイルの取得
	#
	chdir($logdir);
	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] eq $ssllogfile)) {
	        $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);
	}

##010726 sort
#
#    $newfileをSORT
	system("/bin/sort -k 4.9b,4.12 -k 4.5b,4.7M -k 4.2b,4.3 -k 4.14b,4.21 $newfile -o $mrg2file");

##010716 マージファイルの連結（ローテート＋カレント）
#    .mrg = .mrg1 + .mrg2
#
	if(-f $mrg1file){
		system("/bin/cat $mrg1file $mrg2file > $newfile");
	}else{
		system("/bin/cat $mrg2file > $newfile");
	}

}
