コード例 #1
0
ファイル: log.php プロジェクト: aterai/pukiwiki-plus-i18n
 /**
  * 更新ログから署名情報の収集
  * @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;
 }
コード例 #2
0
/**
 * ユーザ名推測
 */
function logview_guess_user($data, $guess)
{
    // 確定的な情報
    $user = isset($data['user']) ? $data['user'] : '';
    $ntlm = isset($data['ntlm']) ? $data['ntlm'] : '';
    $sig = isset($data['sig']) ? $data['sig'] : '';
    $now_user = log::guess_user($user, $ntlm, $sig);
    if (!empty($now_user)) {
        return $now_user;
    }
    // 見做し
    if (!isset($data['ua'])) {
        return '';
    }
    if (!isset($guess[$data['ua']])) {
        return '';
    }
    // USER-AGENT が一致したデータがあるか
    if (!isset($data['host'])) {
        return '';
    }
    $user = '';
    $level = 0;
    // とりあえずホスト名は完全一致
    foreach ($guess[$data['ua']] as $_host => $val1) {
        list($sw, $lvl) = log::check_host($data['host'], $_host, $level);
        // ホスト名の一致確認
        if (!$sw) {
            continue;
        }
        // ホスト名が一致しない
        // UA が等しく、同じIPなものの、複数ユーザまたは改変した場合は、複数人分出力
        foreach ($val1 as $_user => $val2) {
            if (!empty($user)) {
                $user .= ' / ';
            }
            $user .= $_user;
        }
    }
    return $user;
}