#!/opt/Guardian/Admin/php/bin/php
<?php
require_once 'util.php';
require_once 'rpc_lib.php';
require_once 'pc/pc.php';

define('DEF_DAYS', 2);
define('CMD_LASTACCS', PCG_BASE . 'pms/bin/pg_last_accs_chk.php');

/* $B%(%i!<=hM}(B */
function err_exit($s) {
    print $s . "\n";
    exit(-1);
}

/* $B@bL@I=<((B */
function usage($msg = '') {
    if (!empty($msg)) {
        print "$msg \n";
    }
    print "Usage: " . basename($_SERVER["PHP_SELF"]) . " [options] \n";
    print "  -d: reference days \n";
    print "  -h: show this message. \n";
    exit(1);
}

/* main */

// $BF|?t(B
$days = DEF_DAYS;

// get parameter
array_shift($argv);
while (($opt = array_shift($argv)) != null) {
    if ($opt{0} != '-')
        break;
    switch ($opt{1}) {
    case 'd':
        $days = array_shift($argv);
        break;
    default:
        usage();
        break;
    }
}

$srvList = getGDNServerList('pc');
if (!is_array($srvList) || count($srvList) < 1)  {
    exit(1);
}
// $B3F(BPC $B8!::%5!<%P!<$N:G=*;~9o$r<hF@(B
$l_logdir = TMP_DIR . 'policy.' . date("YmdHis", time()) . '/';
if (!su_exec("mkdir $l_logdir")) {
    err_exit("mkdir $l_logdir");
}
su_chmod('777', $l_logdir);
$l_logfile = $l_logdir . 'policy.log.';

$logfile = TMP_DIR . '.policy.log';
$cmd = CMD_LASTACCS . ' -d 2 ' . $logfile;

foreach($srvList as $s) {
    // $B%]%j%7!<<hF@%m%0%^!<%8=hM}8F$S=P$7(B
    if (!guts_exec_cmd($s, $cmd, false)) {
        rmdir_tree($l_logdir, true);
        err_exit("Failed: pg_last_accs_chk(ID:" . $s->id . ")");
    }
    // $B@8@.%U%!%$%k<hF@(B
    if (!guts_get_file($s, $logfile, $l_logfile . $s->id)) {
        rmdir_tree($l_logdir, true);
        err_exit("Failed: get_file($logfile)(ID:" . $s->id . ")");
    }
    // DB$BEPO?(B
    $fp = fopen($l_logfile . $s->id, "r");
    if ($fp === false) {
        rmdir_tree($l_logdir, true);
        err_exit("Failed: get_file($logfile)(ID:" . $s->id . ")");
    }
    while(!feof($fp)) {
        $line = trim(fgets($fp));
        if ($line == null || $line == '') continue;
        list($agentid, $accessdt, $agentVer) = preg_split("/\t/", $line, 3);

        // DB$BH?1G(B
        if (!changeAgentVersion($agentid, $agentVer, $accessdt)) {
            guts_log_warn("Failed: Update DB($agentid, $agentVer, $accessdt)");
        }
    }
    fclose($fp);
}

rmdir_tree($l_logdir, true);

guts_log_info("GUTS getlastaccs finish.");
exit(0);

?>
