/** * アクションプラグイン処理 */ function plugin_log_whois_convert() { global $log; global $log_ua; global $_log_whois_msg; if (!$log['guess_user']['use']) { return ''; } // 推定ユーザ処理が無効の場合 $filename = log::set_filename('guess_user', ''); // ログファイル名 // ログの読み込み if (!file_exists($filename)) { return ''; } $src = @file($filename); $guess = array(); foreach ($src as $_src) { $data = log::table2array($_src); // 0:ua 1:host 2:user $guess[$data[0]][$data[1]][$data[2]] = ''; } $host = log::ip2host(); if (!isset($guess[$log_ua][$host])) { return ''; } $uname = ''; foreach ($guess[$log_ua][$host] as $user => $val) { $uname .= !empty($uname) ? ',' . $user : $user; } return sprintf($_log_whois_msg['msg_whois'], $uname); }
/** * アクションプラグイン処理 */ function plugin_log_guess_user_convert() { global $_log_guess_user_msg; global $log; // ユーザを推測する // $user = log::guess_user( $data['user'], $data['ntlm'], $data['sig'] ); $filename = log::set_filename('guess_user', ''); // ログファイル名 $src = array(); $master = array(); if (file_exists($filename)) { $src = @file($filename); } // ログの読み込み foreach ($src as $_src) { $data = log::table2array($_src); // 0:ua 1:host 2:user $master[$data[0]][$data[1]][$data[2]] = ''; } // 更新ログから署名情報の収集 // $guess[ USER-AGENT ][ ホスト名 ][ ユーザ名 ][任意欄] の配列を戻す $guess = log::summary_signature(); $i = 0; foreach ($guess as $ua => $val1) { foreach ($val1 as $host => $val2) { foreach ($val2 as $user => $val3) { if (isset($master[$ua][$host][$user])) { continue; } log_put($filename, '|' . $ua . '|' . $host . '|' . $user . '||'); $i++; } } } $msg = sprintf($_log_guess_user_msg['msg_put'], $i); return $msg; }
/** * 推測ユーザデータから署名情報の収集 * @return array * $rc[ USER-AGENT ][ ホスト名 ][ ユーザ名 ] の配列を戻す * @static */ function read_guess() { global $log; if (!$log['guess_user']['use']) { return ''; } $filename = log::set_filename('guess_user', ''); // ログファイル名 $src = @file($filename); $sum = array(); foreach ($src as $_src) { $x = trim($_src); $field = log::table2array($x); // PukiWiki 表形式データを配列データに変換 if (count($field) == 0) { continue; } $user = empty($field[3]) ? $field[2] : $field[3]; // 任意欄が記入されていれば、それを採用 $sum[$field[0]][$field[1]][$user] = ''; } return $sum; }