Example #1
0
 /**
  * 共通チェック
  */
 private function log_common_check()
 {
     // 認証中のユーザ名
     $username = Auth::check_auth();
     // 認証済の場合
     if ($this->config['auth_nolog'] && !empty($username)) {
         return null;
     }
     // タイムスタンプ
     $utime = UTIME;
     // リモートIPを取得
     $ip = Utility::getRemoteIp();
     if (isset($this->config[$this->kind]['nolog_ip'])) {
         // ロギング対象外IP
         foreach ($this->config[$this->kind]['nolog_ip'] as $nolog_ip) {
             if ($ip === $nolog_ip) {
                 return null;
             }
         }
     }
     $rc = array();
     $field = self::set_fieldname();
     foreach ($field as $key) {
         switch ($key) {
             case 'ts':
                 // タイムスタンプ (UTIME)
                 $rc[$key] = (int) $utime;
                 break;
             case 'ip':
                 // IPアドレス
                 $rc[$key] = $ip;
                 break;
             case 'host':
                 // ホスト名 (FQDN)
                 $rc[$key] = gethostbyaddr($ip);
                 break;
             case 'auth_api':
                 // 認証API名
                 //$obj = new auth_api();
                 //$msg = $obj->auth_session_get();
                 $rc[$key] = isset($msg['api']) && !empty($username) ? 'plus' : null;
                 break;
             case 'local_id':
                 $rc[$key] = isset($msg['local_id']) ? null : $msg['local_id'];
                 break;
             case 'user':
                 // ユーザ名(認証済)
                 $rc[$key] = $username;
                 break;
             case 'ntlm':
                 // ユーザ名(NTLM認証)
                 if (self::netbios_scope_check($ip, gethostbyaddr($ip))) {
                     $obj_nbt = new NetBios($ip);
                     $rc[$key] = $obj_nbt->username;
                     unset($obj_nbt);
                 } else {
                     $rc[$key] = null;
                 }
                 break;
             case 'proxy':
                 // Proxy情報
                 $obj_proxy = new ProxyChecker();
                 $rc[$key] = $obj_proxy->is_proxy() ? $obj_proxy->get_proxy_info() . '(' . $obj_proxy->get_realip() . ')' : null;
                 unset($obj_proxy);
                 break;
             case 'ua':
                 // ブラウザ情報
                 if (isset($_SERVER['HTTP_USER_AGENT'])) {
                     $rc[$key] = $_SERVER['HTTP_USER_AGENT'];
                 } else {
                     if (isset($_SERVER['ALL_HTTP'])) {
                         $rc[$key] = preg_match('/^HTTP_USER_AGENT:(.+)$/m', $_SERVER['ALL_HTTP'], $regs) ? $regs[1] : null;
                     }
                 }
                 break;
             case 'del':
                 // 削除フラグ
                 // 更新時は、削除されたか?
                 $rc[$key] = $this->kind === 'update' && Factory::Wiki($this->page)->has() ? null : 'DELETE';
                 break;
             case 'sig':
                 // 署名(曖昧)
                 $rc[$key] = self::log_set_signature($utime);
                 break;
             case 'file':
                 // ファイル名
                 $rc[$key] = $this->kind;
                 break;
             case 'page':
             case 'cmd':
                 $rc[$key] = $this->page;
                 break;
         }
     }
     return $rc;
 }