/** * 更新ログから署名情報の収集 * @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; }