示例#1
0
 public static function charts()
 {
     $stats = array();
     $identities = array();
     $agents = Bouncer::getAgentsIndex(self::$_namespace);
     foreach ($agents as $id) {
         $key = $_GET['stats'];
         $identity = Bouncer::getIdentity($id);
         if (empty($identity) || empty($identity[$key])) {
             continue;
         }
         $value = $identity[$key];
         if (empty($stats[$value])) {
             $stats[$value] = 1;
         } else {
             $stats[$value]++;
         }
         if (isset($_GET['aggregate'])) {
             $stats[$value] += Bouncer::countAgentConnections($id, self::$_namespace) - 1;
         }
         if (empty($identities[$value])) {
             $identities[$value] = $identity;
         }
     }
     ksort($stats);
     arsort($stats);
     echo '<table class="bouncer-table">';
     foreach ($stats as $value => $count) {
         $identity = $identities[$value];
         if ($count <= 2) {
             continue;
         }
         if (isset($_GET['unknown'])) {
             $type = Bouncer_Rules_Fingerprint::getType($identity);
             if (!empty($type)) {
                 continue;
             }
         }
         echo '<tr>';
         if ($key == 'fingerprint') {
             echo '<td width="20">', $count, '</td>';
             echo '<td width="20" style="background:#' . substr($value, 0, 6) . '">&nbsp;</td>';
             echo '<td width="20">', '<a href="?filter=fingerprint%3A' . $value . '">', $value, '</a></td>';
             echo '<td width="20">', Bouncer_Rules_Fingerprint::getType($identity), '</td>';
             echo '<td class="ic ', $identity['name'], '">', '<a href="?filter=name%3A' . $identity['name'] . '">', $identity['name'], '</a> ', isset($identity['version']) ? $identity['version'] : '', '</td>';
         } else {
             if ($key == 'host') {
                 echo '<td width="10">', $count, '</td>';
                 echo '<td width="10">', '<a href="?filter=host%3A' . $value . '">', $value, '</a></td>';
             } else {
                 if ($key == 'addr') {
                     echo '<td width="10">', $count, '</td>';
                     echo '<td width="10">', '<a href="?filter=addr%3A' . $value . '">', $value, '</a></td>';
                 } else {
                     if ($key == 'signature') {
                         echo '<td width="10">', $count, '</td>';
                         echo '<td width="10">', '<a href="?filter=signature%3A' . $value . '">', $value, '</a></td>';
                         echo '<td width="10">', Bouncer_Rules_Fingerprint::getType($identity), '</td>';
                         echo '<td class="ic ', $identity['name'], '">', '<a href="?filter=name%3A' . $identity['name'] . '">', $identity['name'], '</a> ', isset($identity['version']) ? $identity['version'] : '', '</td>';
                         echo '<td>', isset($identity['headers']['User-Agent']) ? $identity['headers']['User-Agent'] : '', '</td>';
                     } else {
                         echo '<td>', $count, '</td>';
                         echo '<td>', $value, '</td>';
                     }
                 }
             }
         }
         echo '</tr>';
     }
     echo '</table>';
 }