/**
 * アクションプラグイン処理
 */
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);
}
Esempio n. 2
0
/**
 * 共通チェック
 */
function log_common_check($kind, $page, $parm)
{
    global $log;
    global $log_ua;
    $username = auth::check_auth();
    // 認証済の場合
    if ($log['auth_nolog'] && !empty($username)) {
        return '';
    }
    $utime = UTIME;
    $obj_log = new log();
    $obj_proxy = new check_proxy();
    $ip = $obj_log->getip();
    $hostname = $obj_log->ip2host($ip);
    $proxy_info = $obj_proxy->is_proxy() ? $obj_proxy->get_proxy_info() . '(' . $obj_proxy->get_realip() . ')' : '';
    unset($obj_log);
    unset($obj_proxy);
    if (isset($log[$kind]['nolog_ip'])) {
        // ロギング対象外IP
        foreach ($log[$kind]['nolog_ip'] as $nolog_ip) {
            if ($ip == $nolog_ip) {
                return '';
            }
        }
    }
    // NetBIOS でのチェックを実施
    if (netbios_scope_check($ip, $hostname)) {
        $obj_nbt = new netbios($ip);
        $ntlm_user = $obj_nbt->username;
        unset($obj_nbt);
    } else {
        $ntlm_user = '';
    }
    // 更新時は、削除されたか?
    if ($kind == 'update') {
        $delete_flag = file_exists(get_filename($page)) ? '' : 'DELETE';
    } else {
        $delete_flag = '';
    }
    // 署名の収集
    $signature = log_set_signature($kind, $page, $utime);
    $rc = array();
    $field = log::set_fieldname($kind);
    $obj = new auth_api();
    $msg = $obj->auth_session_get();
    foreach ($field as $key) {
        switch ($key) {
            case 'ts':
                // タイムスタンプ (UTIME)
                $rc[$key] = $utime;
                break;
            case 'ip':
                // IPアドレス
                $rc[$key] = $ip;
                break;
            case 'host':
                // ホスト名 (FQDN)
                $rc[$key] = $hostname;
                break;
            case 'auth_api':
                // 認証API名
                //$obj = new auth_api();
                //$msg = $obj->auth_session_get();
                $rc[$key] = empty($msg['api']) && !empty($username) ? 'plus' : $msg['api'];
                break;
            case 'local_id':
                $rc[$key] = empty($msg['local_id']) ? '' : $msg['local_id'];
                break;
            case 'user':
                // ユーザ名(認証済)
                $rc[$key] = $username;
                break;
            case 'ntlm':
                // ユーザ名(NTLM認証)
                $rc[$key] = $ntlm_user;
                break;
            case 'proxy':
                // Proxy情報
                $rc[$key] = $proxy_info;
                break;
            case 'ua':
                // ブラウザ情報
                $rc[$key] = $log_ua;
                break;
            case 'del':
                // 削除フラグ
                $rc[$key] = $delete_flag;
                break;
            case 'sig':
                // 署名(曖昧)
                $rc[$key] = $signature;
                break;
            case 'file':
                // ファイル名
                $rc[$key] = $parm;
                break;
            case 'page':
            case 'cmd':
                $rc[$key] = $page;
                break;
        }
    }
    return $rc;
}