#!/usr/bin/perl

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

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

$roma_conf="/opt/nec/roma/etc/roma.conf";
$roma_conf_lock ="roma.conf";
$access_log_wk = "access_log_wk";
$access_log_dir = "/var/log/roma/access_log_rotate/";
$access_log_compress_dir = $access_log_dir."compress/";
$access_log_plain_dir = $access_log_dir."plain/";

if(!(-d $access_log_dir)){
	system("/bin/mkdir $access_log_dir");
}

if(!(-d $access_log_compress_dir)){
	system("/bin/mkdir $access_log_compress_dir");
}

if(!(-d $access_log_plain_dir)){
	system("/bin/mkdir $access_log_plain_dir");
}


#2012/2 higashi
#Υå
if($ARGV[0] eq ""){
    exit(1);
}
$log_file_name=$ARGV[0];

#2012/2 higashi
#roma.confɤ߹
$rfile=();
if (!&readFile("$roma_conf", $roma_conf_lock, *rfile) ) {
	system("/bin/echo $roma_conf cannot read");
	exit(1);
}

#

#2012/2 higashi
#ɤ߹
$logfile_count = "";
$logfile_count_old = 0;
$accesslog_rotate_mode = 0;
for ($i = 0; $i < @rfile; $i++) {
	if ($rfile[$i] =~ /^\s*main_accesslog_rotate_count\s+(\d+)\s*$/) {
		$logfile_count = $1;
		next;
	}
	if ($rfile[$i] =~ /^\s*main_logfile_rotate_count\s+(\d+)\s*$/) {
		$logfile_count_old = $1;
		next;
	}
	if ($rfile[$i] =~ /^\s*main_accesslog_rotate_mode\s+(\d+)\s*$/) {
		$accesslog_rotate_mode = $1;
		next;
	}
}

#2012/2 higashi
#ʤиŤѤ
if($logfile_count eq ""){
	$logfile_count = $logfile_count_old;
}

#2012/2 higashi
#̤/ʤեȳĥҤѹ
$extension = "";
if($accesslog_rotate_mode eq 0){
	$access_log_dir = $access_log_plain_dir;
}else{
	$access_log_dir = $access_log_compress_dir;
	$extension = ".tgz";
}

#2012/2 higashi
#եѤ˥ԡ(ॹפϤΤޤ)
if(system("/bin/cp -p $log_file_name ${access_log_dir}${access_log_wk} > /dev/null 2>&1") != 0){
	exit(1);
}

#2012/2 higashi
#ե
$logsum=0;
open(IN,"/bin/ls ${access_log_dir}access_log* | grep -cE \"access_log\.[0-9]+\" |");
$logsum=<IN>;
#Ԥ
$logsum =~ s/^\s+//g;
$logsum =~ s/\s+$//g;
close(IN);

#ȺΥեӤư礭
if($logsum >= $logfile_count){
	if(-e "${access_log_dir}access_log.${logfile_count}${extension}"){
		system("/bin/rm -r ${access_log_dir}access_log.${logfile_count}${extension} > /dev/null 2>&1");
		$logsum = $logfile_count - 1;
	}
}

#٤ƤΥե+1ƥ͡
$new_cnt = 0;
for($i=$logsum;0 < $i;$i--){
	$new_cnt = $i + 1;
	system("/bin/mv -f ${access_log_dir}access_log.${i}${extension} ${access_log_dir}access_log.${new_cnt}${extension} > /dev/null 2>&1");
}

#ơȤե͡
system("/bin/mv -f ${access_log_dir}$access_log_wk ${access_log_dir}access_log.1 > /dev/null 2>&1");

#̤뤫ɤå
if($accesslog_rotate_mode eq 1){
	system("/bin/tar -cvzf ${access_log_dir}access_log.1.tgz ${access_log_dir}access_log.1 > /dev/null 2>&1");
	system("/bin/rm -r ${access_log_dir}access_log.1 > /dev/null 2>&1");
}
