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) . '"> </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>'; }