$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... Что приведет к противоположному косяку... */ $q = array(); if ($filter['nat'] > 0) { $q[] = "LOCATE(`ipv4`, `ipv4_list`)" . ($filter['nat'] == 1 ? '>' : '=') . "0"; } if ($filter['new'] > 0) { $q[] = "`flag_new`=" . ($filter['new'] == 1 ? 1 : 0);
if ($filter['grouping']) { $query2 .= ' GROUP BY `t`.`context`'; } $query2 .= ' ORDER BY `t`.`bot_id`, `t`.`rtime`'; unset($q1); } /////////////////////////////////////////////////////////////////////////////////////////////////// // HTML фильтр/результат. /////////////////////////////////////////////////////////////////////////////////////////////////// if (!$_is_ajax_search && !$_is_plain_search) { define('INPUT_WIDTH', '200px'); //Ширина input.text. define('INPUTQ_WIDTH', '500px'); //Ширина input.text. $js_qw = addJsSlashes(LNG_REPORTS_FILTER_REMOVE_Q); $js_script = jsCheckAll('botslist', 'checkall', 'bots[]'); $js_script .= <<<JS_SCRIPT function RemoveReports() { if(confirm('{$js_qw}')) { var f = document.forms.namedItem('filter'); f.elements.namedItem('rm').value = 1; f.submit(); } } JS_SCRIPT; //Подготовливаем список дат. if ($_is_ajax_result) { $datelist = ''; $js_datelist = '';
if ($_FILTER['cd']) { SearchDF($_CUR_PATH, $_FILTER['path'], $ci, $counter, $lastfolder); } else { SearchDF($config['reports_path'], '', $ci, $counter, $lastfolder); } } echo str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(COLUMNS_COUNT, sprintf(LNG_REPORTS_LIST_TOTAL, numberFormatAsInt($counter[1]), numberFormatAsInt($counter[2]), numberFormatAsInt($counter[0]))), THEME_LIST_TITLE) . THEME_LIST_END; } else { define('INPUT_WIDTH', '200px'); //Ширина input.text. define('INPUTQ_WIDTH', '500px'); //Ширина input.text. //Создаем JS-скрипт. $fl_onsubmit = ' onsubmit="return ExecuteAction()"'; $js_qa = addJsSlashes(LNG_REPORTS_FILESACTION_Q); $js_script = jsCheckAll('fileslist', 'checkall', 'files[]') . "function ExecuteAction(){return confirm('{$js_qa}');}"; if ($_is_browser) { $query = addJsSlashes(QUERY_STRING . '&path=' . urlencode($_FILTER['path'])); $js_script .= jsSetSortMode($query); } else { $q = addJsSlashes(QUERY_STRING); foreach ($_FILTER as $k => $v) { $q .= addJsSlashes('&' . urlencode($k) . '=' . urlencode($v)); } $ajax_init = jsXmlHttpRequest('srhhttp'); $ajax_err = addJsSlashes(str_replace('{TEXT}', LNG_REPORTS_RESULT_ERROR, THEME_STRING_ERROR)); $js_script .= <<<JS_SCRIPT var srhhttp = false; function stateChange(){if(srhhttp.readyState == 4)
} $actions .= THEME_DIALOG_ITEM_LISTBOX_END . THEME_STRING_SPACE . str_replace(array('{TEXT}', '{JS_EVENTS}'), array(LNG_ACTION_APPLY, ''), THEME_DIALOG_ITEM_ACTION_SUBMIT); $actions = THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', $actions, THEME_DIALOG_ITEM_TEXT) . THEME_DIALOG_ROW_END; } //Вывод таблицы. $data .= THEME_VSPACE . str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('reportslist', QUERY_SCRIPT_HTML, ''), THEME_FORMGET_TO_NEW_BEGIN) . str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(1, sprintf(LNG_BOTNET_REPORTS, numberFormatAsInt($bots_count))), THEME_DIALOG_TITLE) . $page_list . $actions . THEME_DIALOG_ROW_BEGIN . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ITEM_CHILD_BEGIN) . str_replace('{WIDTH}', 'auto', THEME_LIST_BEGIN) . 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) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}', '{WIDTH}'), array(1, '#', 'auto'), THEME_LIST_HEADER_R) . writeSortColumn(LNG_BOTNET_REPORTS_RTIME, 0, 1) . writeSortColumn(LNG_BOTNET_REPORTS_TYPE, 1, 0) . writeSortColumn(LNG_BOTNET_REPORTS_BOTID, 2, 0) . writeSortColumn(LNG_BOTNET_REPORTS_VERSION, 3, 1) . writeSortColumn(LNG_BOTNET_REPORTS_REPORT, 4, 0) . THEME_LIST_ROW_END . $blist . THEME_LIST_END . THEME_DIALOG_ITEM_CHILD_END . THEME_DIALOG_ROW_END . THEME_DIALOG_END . THEME_FORMGET_END; } themeSmall($is_view ? LNG_BOTNET_SCRIPT_EDIT : LNG_BOTNET_SCRIPT_NEW, $data, $js_script, getBotJsMenu('botmenu'), 0); die; } /////////////////////////////////////////////////////////////////////////////////////////////////// // JavaScript скрипты. /////////////////////////////////////////////////////////////////////////////////////////////////// $js_script = 0; if ($_allow_edit) { $js_script = jsCheckAll('scriptslist', 'checkall', 'scripts[]') . "function ExecuteAction(){return confirm('" . addJsSlashes(LNG_BOTNET_LIST_ACTION_Q) . "');}"; } /////////////////////////////////////////////////////////////////////////////////////////////////// // Создание списка команд. /////////////////////////////////////////////////////////////////////////////////////////////////// require_once 'system/lib/db.php'; require_once 'system/lib/guiutil.php'; $_GET['page'] = (int) (empty($_GET['page']) ? 1 : $_GET['page']); $PAGER = new Paginator($_GET['page'], 100, 1); $list = ''; if (!($r = mysqlQueryEx('botnet_scripts', 'SELECT SQL_CALC_FOUND_ROWS id, extern_id, name, flag_enabled, send_limit,
$data .= THEME_STRING_FORM_ERROR_1_BEGIN; foreach ($errors as $r) { $data .= $r . THEME_STRING_NEWLINE; } $data .= THEME_STRING_FORM_ERROR_1_END; } $data .= str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('edituser', QUERY_STRING_HTML . '&' . ($isEdit ? 'edit=' . htmlEntitiesEx(urlencode($_GET['edit'])) : 'new'), ''), THEME_FORMPOST_BEGIN) . str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN) . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(1, $isEdit ? LNG_SYS_USER_EDIT : LNG_SYS_USER_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_SYS_USER_NAME, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('name', $formName, 20, USER_INPUT_TEXT_WIDTH), THEME_DIALOG_ITEM_INPUT_TEXT) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_SYS_USER_PASSWORD, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('password', $formPassword, 64, USER_INPUT_TEXT_WIDTH), THEME_DIALOG_ITEM_INPUT_TEXT) . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_SYS_USER_STATUS, THEME_DIALOG_ITEM_TEXT) . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ITEM_CHILD_BEGIN) . str_replace(array('{NAME}', '{WIDTH}'), array('status', 'auto'), THEME_DIALOG_ITEM_LISTBOX_BEGIN) . str_replace(array('{VALUE}', '{TEXT}'), array(0, LNG_SYS_STATUS_DISABLED), !$formEnabled ? THEME_DIALOG_ITEM_LISTBOX_ITEM_CUR : THEME_DIALOG_ITEM_LISTBOX_ITEM) . str_replace(array('{VALUE}', '{TEXT}'), array(1, LNG_SYS_STATUS_ENABLED), $formEnabled ? THEME_DIALOG_ITEM_LISTBOX_ITEM_CUR : THEME_DIALOG_ITEM_LISTBOX_ITEM) . THEME_DIALOG_ITEM_LISTBOX_END . THEME_DIALOG_ITEM_CHILD_END . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{TEXT}', LNG_SYS_USER_COMMENT, THEME_DIALOG_ITEM_TEXT) . str_replace(array('{NAME}', '{VALUE}', '{MAX}', '{WIDTH}'), array('comment', $formComment, 250, USER_INPUT_TEXT_WIDTH), THEME_DIALOG_ITEM_INPUT_TEXT) . THEME_DIALOG_ROW_END . THEME_DIALOG_GROUP_END . THEME_DIALOG_ROW_END . THEME_DIALOG_ROW_BEGIN . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_GROUP_BEGIN) . $rightslist . THEME_DIALOG_GROUP_END . THEME_DIALOG_ROW_END . str_replace('{COLUMNS_COUNT}', 1, THEME_DIALOG_ACTIONLIST_BEGIN) . str_replace(array('{TEXT}', '{JS_EVENTS}'), array($isEdit ? LNG_SYS_USER_ACTION_SAVE : LNG_SYS_USER_ACTION_NEW, ''), THEME_DIALOG_ITEM_ACTION_SUBMIT) . ($isEdit ? THEME_DIALOG_ITEM_ACTION_SEPARATOR . str_replace(array('{TEXT}', '{JS_EVENTS}'), array(LNG_SYS_USER_ACTION_NEWT, ' onclick="window.location=\'' . QUERY_STRING_HTML . '&new=' . htmlEntitiesEx(urlencode($_GET['edit'])) . '\'"'), THEME_DIALOG_ITEM_ACTION) : '') . THEME_DIALOG_ACTIONLIST_END . THEME_DIALOG_END . THEME_FORMPOST_END; themeSmall($isEdit ? LNG_SYS_USER_EDIT : LNG_SYS_USER_NEW, $data, 0, 0, 0); die; } /////////////////////////////////////////////////////////////////////////////////////////////////// // JavaScript скрипты. /////////////////////////////////////////////////////////////////////////////////////////////////// $jsScript = 0; $jsQa = addJsSlashes(LNG_SYS_LIST_ACTION_Q); $jsScript = jsCheckAll('userslist', 'checkall', 'users[]') . "function ExecuteAction(){return confirm('{$jsQa}');}"; /////////////////////////////////////////////////////////////////////////////////////////////////// // Создание списка. /////////////////////////////////////////////////////////////////////////////////////////////////// $list = ''; if (!($r = mysqlQueryEx('cp_users', 'SELECT id, name, flag_enabled, comment FROM cp_users ORDER BY name ASC')) || @mysql_affected_rows() === 0) { $list .= THEME_LIST_ROW_BEGIN . str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(LIST_ROWS_COUNT, $r ? LNG_SYS_LIST_EMPTY : mysqlErrorEx()), THEME_LIST_ITEM_EMPTY_1) . THEME_LIST_ROW_END; } else { $i = 0; while ($mt = @mysql_fetch_row($r)) { $urlEdit = str_replace(array('{URL}', '{TEXT}'), array(QUERY_STRING_HTML . '&edit=' . $mt[0], strlen($mt[1]) > 0 ? htmlEntitiesEx($mt[1]) : '-'), THEME_LIST_ANCHOR); $urlStatus = str_replace(array('{URL}', '{TEXT}'), array(QUERY_STRING_HTML . '&status=' . $mt[0] . '&enable=' . ($mt[2] > 0 ? 0 : 1), $mt[2] > 0 ? LNG_SYS_STATUS_ENABLED : LNG_SYS_STATUS_DISABLED), THEME_LIST_ANCHOR); $text = $i % 2 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1; $list .= THEME_LIST_ROW_BEGIN . str_replace(array('{NAME}', '{VALUE}', '{JS_EVENTS}'), array('users[]', $mt[0], ''), $i % 2 ? THEME_LIST_ITEM_INPUT_CHECKBOX_1_U2 : THEME_LIST_ITEM_INPUT_CHECKBOX_1_U1) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', $urlEdit), $text) . str_replace(array('{WIDTH}', '{TEXT}'), array('1%', $urlStatus), $text) . str_replace(array('{WIDTH}', '{TEXT}'), array('auto', strlen($mt[3]) > 0 ? htmlEntitiesEx($mt[3]) : '-'), $text) . THEME_LIST_ROW_END; $i++; }