/** * アクションプラグイン処理 */ 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; }
break 1; } if (isset($_GET["getdesc"])) { //asking for the description of a cell cell_desc(); break 2; } if (isset($_POST["actupd"])) { //update an activity update_activity($_STATE); echo $_STATE->msgStatus; break 2; } if (isset($_POST["btnPut"])) { //asking for a download log_put(); break 2; } if (!(isset($_GET["row"]) || isset($_POST["row"]))) { throw_the_bum_out(NULL, "Evicted(" . __LINE__ . "): GET/POST row not supplied"); } $SCION = $_STATE->scion_pull(); //use the child thread $HTML = "@"; //tell server_call to do an eval while (1 == 1) { switch ($SCION->status) { case STATE::INIT: $SCION->row = $_GET["row"]; //working on this displayed row if ($SCION->row == 0) {
function log_put_guess($data) { // ユーザを推測する $user = log::guess_user($data['user'], $data['ntlm'], $data['sig']); if (empty($user)) { return; } $filename = log::set_filename('guess_user', ''); // ログファイル名 if (file_exists($filename)) { $src = file($filename); // ログの読み込み } else { // 最初の1件目 $data = log::array2table(array($data['ua'], $data['host'], $user, "")); log_put($filename, $data); return; } $sw = FALSE; foreach ($src as $_src) { $x = trim($_src); $field = log::table2array($x); // PukiWiki 表形式データを配列データに変換 if (count($field) == 0) { continue; } if ($field[0] != $data['ua']) { continue; } if ($field[1] != $data['host']) { continue; } if ($field[2] != $user) { continue; } $sw = TRUE; break; } if ($sw) { return; } // 既に存在 // データの更新 $data = log::array2table(array($data['ua'], $data['host'], $user, '')); log_put($filename, $data); }