예제 #1
0
/**
 * アクションプラグイン処理
 */
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;
}
예제 #3
0
 /**
  * 推測ユーザデータから署名情報の収集
  * @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;
 }