#!/usr/bin/perl

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

# RCS: $Id: wbmc_tripcron,v 1.1.1.1 2004/09/09 08:14:21 snavi Exp $


################################################
# ¹ԡʡ֤ˤCron¹ԥޥ #
#            wbmc_tripcron                     #
#                                          #
# ֤Υޥɤ/etc/crontab #
# Ͽ롣crontabϿƤ롢  #
# ޥɡwbmc_tripcronˤϺ롣      #
################################################

# ɬפʴؿХݡ
require "/opt/nec/wbmc/lib/wbmc.pl";

# ѿ
local(@conf) = ();
local(@tab) = ();
my($i);
my($chkpiriod,$chkcycletime,$chkstarttime);
my($datapiriod);
my($tripchkcmd);
my($trip_conf) = "/etc/opt/nec/wbmc/wbmc_tripconf";
my($trip_conf_lock) = "wbmc_tripconf";

# Ķեɤ߹
# ɤ߹桢եƤѹʤ褦å򤫤롣
# 
@conf = ();
if (-f $trip_conf) {
    if (!&readFile($trip_conf, $trip_conf_lock, *conf)) {
		print 'Ķեɤ߹ߤ˼Ԥޤ';
        exit(1);
    }
}
# ĶեƤѿ˳Ǽ
for ($i = 0; $i < @conf; $i++) {
    if ($conf[$i] =~ /^\s*CHKPIRIOD\s*=\s*(.*)\s*$/) {
        $chkpiriod = $1;
    } elsif ($conf[$i] =~ /^\s*CHKCYCLETIME\s*=\s*(.*)\s*$/) {
        $chkcycletime = $1;
    } elsif ($conf[$i] =~ /^\s*CHKSTARTTIME\s*=\s*(.*)\s*$/) {
        $chkstarttime = $1;
    } elsif ($conf[$i] =~ /^\s*DATAPIRIOD\s*=\s*(.*)\s*$/) {
        $datapiriod = $1;
	}
}

# crontabλ֤
# ֻ[0-23]ʤΤǡ23Ķʬϡ-24Ƥ
if ($chkcycletime != 1) {
    $cyclehour = "$chkstarttime";
    for ($i=0 ; $i < 24 / $chkcycletime -1 ; $i++) {
        $chkstarttime += $chkcycletime;
        if ($chkstarttime > 23) {
            $chkstarttime -= 24;
        }
	    $cyclehour .= "\,$chkstarttime";
    }
} else {
    $cyclehour = '*';
}

# ޥɺ
# ư¹Ԥ"CYCLE"ξΥޥɺ
if ($chkpiriod eq "CYCLE") {
	if($datapiriod eq "NO") {
		$tripchkcmd = "0 $cyclehour * * * root /opt/nec/wbmc/bin/wbmc_trip -c\n";
	} elsif ($datapiriod eq "SAME"){
		$tripchkcmd = "0 $cyclehour * * * root /opt/nec/wbmc/bin/wbmc_trip -i\n";
	} elsif ($datapiriod eq "DAILY"){
		$tripchkcmd = "0 $cyclehour * * * root /opt/nec/wbmc/bin/wbmc_trip -c\n";
	} else {
		print "եͤʤᡢư¹ԤΥޥɤǤޤǤ";
		exit(1);
	}
}


# crontabɲý
#  wbmc_tripcronιԤwbmc_trip -[ic]ɲä롣
#  wbmc_tripǡºݤμư¹ԤDBԤ

# Ķեɤ߹
# ɤ߹桢եƤѹʤ褦å򤫤롣
# ХååκȤȽŤʤäˡåͭˤʤ褦
# åե̾¾ΥץǻѤƤΤѤ

if (!&readFile("/etc/crontab", "crontab", *tab)) {
	print 'ե(/etc/crontab)ɤ߹ߤ˼Ԥޤ';
	exit(1);
}

# ˤwbmc_tripcronιԤwbmc_tripޥɤִ
for ($i = 0; $i < @tab; $i++) {
    if ($tab[$i] =~ /\/opt\/nec\/wbmc\/bin\/wbmc_tripcron\s*/) {
        splice(@tab, $i, 1, $tripchkcmd);
    }
}

# ե˽񤭹
if (!&writeFile("/etc/crontab", "crontab", @tab)) {
	print 'ե(/etc/crontab)ν񤭹ߤ˼Ԥޤ';
	exit(1);
}
system ("/etc/rc.d/init.d/crond restart &> /dev/null");

