function scan($doLog = false) { global $mainframe; $session =& JFactory::getSession(); $confModel =& JModel::getInstance('Configuration', 'JDefenderModel'); $componentConfig = $confModel->getData(false); // Turn off error reporting JD_Error::unsetErrorHandlers(); jimport('joomla.error.log'); jimport('joomla.filesystem.file'); // choose scan type $filesystemScanned = $session->get('filesystem.scanned', false, 'jdefender'); $optionsScanned = $session->get('options.scanned', false, 'jdefender'); // Scan now $scanModel =& JModel::getInstance('Scan', 'JDefenderModel'); $scanModel->setState('filesystem.scanned', $filesystemScanned); $scanModel->setState('options.scanned', $optionsScanned); $scanData = $scanModel->getScanData('', $doLog); if ($doLog) { JD_Vars_Helper::setVar('status', 'jdefender_scan', JText::_('Processing Scan Results')); } foreach ($scanData as $family => $data) { // skip empty data if (!$data) { continue; } if ($family == 'filesystem') { if ($scanModel->_isFirstScan()) { // The handler for the first scan which does not write logs for new files. $firstScanHandler = JD_Handler::getInstance('first_scan', 'filesystem'); $firstScanHandler->handleResults($data); $firstScanHandler->flushLogs(); } } foreach ($data as $type => $results) { $handler = JD_Handler::getInstance($type, $family); if ($handler) { if ($doLog) { $titles = JD_Log_Helper::readableLogType($type); if ($titles) { JD_Vars_Helper::setVar('status', 'jdefender_scan', JText::_('Processing Scan Results') . ': ' . $titles->title); } } $handler->handleResults($results); $handler->flushLogs(); } } } // Turn on error reporting JD_Error::putErrorHandlersBack(); $state = array($scanModel->getState('filesystem.scanned'), $scanModel->getState('options.scanned')); // save scan state to session $session->set('filesystem.scanned', $state[0], 'jdefender'); $session->set('options.scanned', $state[1], 'jdefender'); return $state; }
function jdGetScanStatus() { require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'log.php'; $objResponse = new xajaxResponse(); $controller = new JDefenderControllerScan(); $scanStatus = $controller->scan($doLog = JD_Scan_Helper::isLogging()); $scanInfo = JD_Vars_Helper::getGroup('jdefender_scan'); if (empty($scanInfo)) { $scanInfo = array(); } unset($scanInfo['status']); $progress = 0; if (!empty($scanInfo['total'])) { $scanned = 0; $scanned += @$scanInfo['files']; $scanned += @$scanInfo['dirs']; $progress = (int) floor($scanned / $scanInfo['total'] * 100); } $objResponse->assign('scanstatus', 'innerHTML', JText::_('Progress') . ': ' . $progress . '%'); $objResponse->script('setProgress(' . $progress . ');'); $objResponse->script('blink("scanstatus", 2);'); $js = array(); foreach ($scanInfo as $k => $v) { if ($k == 'last_scan_date') { continue; } $titles = JD_Log_Helper::readableLogType($k); if ($titles) { $js[] = '"' . addslashes(JHTML::link('index.php?option=com_jdefender&controller=log&task=showLog&cid[]=' . $k, $titles->title, 'target="_blank"')) . '" : ' . (int) $v; } else { $js[] = $k . ': ' . (int) $v; } } $js = '{' . implode(', ', $js) . '}'; $objResponse->script('onInfoUpdated("' . addslashes($js) . '")'); // Check scan status. if ($scanStatus && is_array($scanStatus) && count($scanStatus) == 2) { list($filesystemScanComplete, $optionScanComplete) = $scanStatus; if ($filesystemScanComplete && $optionScanComplete) { $objResponse->script('onScanComplete()'); } } return $objResponse; }
function _decorateLogGroup(&$logRecord) { require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'log.php'; $r = JD_Log_Helper::readableLogType($logRecord->type); $logRecord->title = $r->title; $logRecord->description = $r->description; if ($logRecord->type == 'file_integrity_php_bad_functions' && !empty($logRecord->issue)) { $logRecord->issue = JText::_('Occurences') . ': ' . count(explode("\n", $logRecord->issue)); } }
function display($tpl = null) { global $mainframe, $option; $document =& JFactory::getDocument(); $document->addStyleSheet(JURI::base() . 'components/com_jdefender/css/main.css'); $document->addStyleSheet(JURI::base() . 'components/com_jdefender/css/toolbar.css'); JToolBarHelper::title(JText::_("Block List"), 'blocklist.png'); JToolBarHelper::addNew(); JToolBarHelper::editList('add'); JToolBarHelper::publishList(); JToolBarHelper::unpublishList(); JToolBarHelper::deleteList(); $filter_order = $mainframe->getUserStateFromRequest($option . '.rules.filter_order', 'filter_order', 'type'); $filter_order_Dir = $mainframe->getUserStateFromRequest($option . '.rules.filter_order_Dir', 'filter_order_Dir', ''); $type = $mainframe->getUserStateFromRequest($option . '.rules.filter_type', 'type', ''); $published = $mainframe->getUserStateFromRequest($option . '.rules.filter_published', 'published', null); $limitstart = $mainframe->getUserStateFromRequest($option . '.rules.filter_limitstart', 'limitstart', ''); $limit = $mainframe->getUserStateFromRequest($option . '.rules.filter_limit', 'limit', ''); $state = $mainframe->getUserStateFromRequest($option . '.rules.filter_state', 'state', null); $search = $mainframe->getUserStateFromRequest($option . '.rules.filter_search', 'search', ''); $lists = array(); $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; $lists['state'] = $state; $lists['search'] = $search; $lists['type'] = $type; $lists['published'] = $published; $model =& JModel::getInstance('Rule', 'JDefenderModel'); $model->setState('state', $state); $model->setState('type', $type); $model->setState('search', $search); $model->setState('order', $filter_order); $model->setState('orderDir', $filter_order_Dir); $model->setState('published', $published); if ($limit) { $model->setState('limit', $limit); $model->setState('limitstart', $limitstart); } $filters = $this->_getFilters($lists); $rules = $model->getData(); $pagination = $model->getPagination(); foreach ($rules as $k => $v) { switch ($v->origin) { case 0: $rules[$k]->origin = JText::_('Mighty Defender'); break; case 1: $rules[$k]->origin = JText::_('Custom'); break; case 2: $rules[$k]->origin = JText::_('Third party'); break; } $rules[$k]->type = $this->_beautifyRuleType($rules[$k]->type); $res = JD_Log_Helper::readableLogType($v->family); $rules[$k]->familyTitle = $res->title; $rules[$k]->actionTitle = JHTML::link('index.php?option=com_jdefender&controller=rules&view=rules&layout=rule&id=' . $v->id . '&tmpl=component', JD_Log_Helper::beautifyString($v->action, true), array('rel' => '{handler: \'iframe\', size: {x: 800, y: 600}}', 'class' => 'modal')); $rules[$k]->editLink = JHTML::link('index.php?option=com_jdefender&controller=rules&view=rules&layout=form&id=' . $v->id, JHTML::image(JURI::base() . 'components/com_jdefender/images/toolbar/icon-16-edit.png', JText::_('Edit'))); $rules[$k]->viewLink = JHTML::link('index.php?option=com_jdefender&controller=rules&view=rules&layout=rule&id=' . $v->id . '&tmpl=component', JHTML::image(JURI::base() . 'components/com_jdefender/images/toolbar/icon-16-preview.png', JText::_('View')), array('rel' => '{handler: \'iframe\', size: {x: 800, y: 600}}', 'class' => 'modal')); } $this->assignRef('items', $rules); $this->assignRef('lists', $lists); $this->assignRef('pagination', $pagination); JHTML::_('behavior.modal'); JHTML::_('behavior.tooltip'); JD_Admin_Menu_Helper::decorate(); return parent::display($tpl); }