Beispiel #1
0
 /**
  * 更新ログから署名情報の収集
  * @return	array
  * $rc[ USER-AGENT ][ ホスト名 ][ ユーザ名 ] の配列を戻す
  * @static
  */
 function summary_signature()
 {
     global $log;
     if (!$log['update']['use']) {
         return '';
     }
     $sum = array();
     $data = log::log_summary('update');
     $name = log::get_log_field('update');
     foreach ($data as $_data) {
         foreach ($_data as $line) {
             $field = log::line2field($line, $name);
             if (empty($field['ua'])) {
                 continue;
             }
             $user = log::guess_user($field['user'], $field['ntlm'], $field['sig']);
             if (empty($user)) {
                 continue;
             }
             $sum[$field['ua']][$field['host']][$user] = '';
         }
     }
     return $sum;
 }
function logview_get_data($filename, $name)
{
    if (!file_exists($filename)) {
        return array();
    }
    $rc = array();
    $fp = @fopen($filename, 'r');
    if ($fp == FALSE) {
        return $rc;
    }
    @flock($fp, LOCK_SH);
    $count = 0;
    while (!feof($fp)) {
        $line = fgets($fp, 512);
        if ($line === FALSE) {
            continue;
        }
        $rc[] = log::line2field($line, $name);
        ++$count;
        if ($count > MAX_LINE) {
            // 古いデータを捨てる
            array_shift($rc);
        }
    }
    @flock($fp, LOCK_UN);
    if (!fclose($fp)) {
        return array();
    }
    rsort($rc);
    // 逆順にソート(最新順になる)
    return $rc;
}