/**
  * Inits wemahu scanner by passing necessary objects like settings and database.
  *
  */
 public function initWemahu()
 {
     $rulesetId = (int) $_POST['ruleset'];
     if (empty($rulesetId)) {
         $this->returnError('No ruleset selected.');
     }
     $ModelRuleset = new ModelRuleset($this->wpdb);
     $rulesetData = $ModelRuleset->getRulesetData($rulesetId);
     if (empty($rulesetData)) {
         $this->returnError('Invalid ruleset.');
     }
     // prepare Wemahu settings:
     $WemahuSettings = new Wemahu\Settings();
     $WemahuSettings->intervalMode = true;
     $WemahuSettings->useApi = (int) $this->options['use_api'] === 1 ? true : false;
     $WemahuSettings->audits['filecheck'] = (int) $rulesetData['filecheck'] === 1 ? true : false;
     $WemahuSettings->auditSettings['filecheck']['regexCheck'] = (int) $rulesetData['regex_check'] === 1 ? true : false;
     $WemahuSettings->auditSettings['filecheck']['hashCheck'] = (int) $rulesetData['hash_check'] === 1 ? true : false;
     $WemahuSettings->auditSettings['filecheck']['scanDir'] = ABSPATH;
     $WemahuSettings->auditSettings['filecheck']['tmpDir'] = WP_PLUGIN_DIR . '/wemahu/tmp';
     $WemahuSettings->auditSettings['filecheck']['pathRegexWhitelistUser'] = WP_PLUGIN_DIR . '/wemahu/tmp/wemahu_regex_whitelist.wmdb';
     if (!empty($rulesetData['scandir'])) {
         $WemahuSettings->auditSettings['filecheck']['scanDir'] = $rulesetData['scandir'];
     }
     $WemahuSettings->auditSettings['filecheck']['scanDir'] = rtrim($WemahuSettings->auditSettings['filecheck']['scanDir'], '/');
     if (!empty($rulesetData['regex_db'])) {
         $WemahuSettings->auditSettings['filecheck']['pathRegexDb'] = WP_PLUGIN_DIR . '/wemahu/admin/libs/wemahu/db/' . $rulesetData['regex_db'] . '.wmdb';
     }
     if (!empty($rulesetData['filetypes'])) {
         $WemahuSettings->auditSettings['filecheck']['extensionFilter'] = $rulesetData['filetypes'];
     }
     if (!empty($rulesetData['filesize_max'])) {
         $WemahuSettings->auditSettings['filecheck']['sizeFilter'] = $rulesetData['filesize_max'];
     }
     if (!empty($rulesetData['max_results_file'])) {
         $WemahuSettings->auditSettings['filecheck']['maxResultsFile'] = $rulesetData['max_results_file'];
     }
     if (!empty($rulesetData['max_results_total'])) {
         $WemahuSettings->auditSettings['filecheck']['maxResultsTotal'] = $rulesetData['max_results_total'];
     }
     if ($WemahuSettings->auditSettings['filecheck']['hashCheck'] === true && !empty($rulesetData['hash_check_blacklist'])) {
         $WemahuSettings->auditSettings['filecheck']['hashCheckBlacklist'] = explode("\n", str_replace("\r", "", $rulesetData['hash_check_blacklist']));
     }
     // Init Wemahu:
     $Wemahu = new Wemahu\Wemahu();
     $Wemahu->setSettings($WemahuSettings);
     $WemahuStorage = new Wemahu\Storage();
     $Wemahu->setStorage($WemahuStorage);
     $WemahuDatabase = new Wemahu\WordpressDatabase($this->wpdb);
     $Wemahu->setDatabase($WemahuDatabase);
     $initResult = $Wemahu->init();
     // Send Response:
     if ($initResult === false) {
         $this->JsonResponse->setError('Wemahu initialization failed.');
     }
     $auditMessages = $Wemahu->getAuditMessages();
     $auditMessagesHtml = implode('<br />', $auditMessages) . '<br />';
     $this->JsonResponse->setType('init_success');
     $this->JsonResponse->setData('init_msg', $auditMessagesHtml);
     echo $this->JsonResponse->getResponseData();
     exit;
 }
Esempio n. 2
0
 public function doExecute($params)
 {
     // prepare settings:
     $rulesetId = !empty($this->options['cron_ruleset']) ? (int) $this->options['cron_ruleset'] : 1;
     if (!empty($params['ruleset'])) {
         $rulesetId = (int) $params['ruleset'];
     }
     $sendReportEmail = !empty($this->options['cron_sendmail']) ? (int) $this->options['cron_sendmail'] : 1;
     $sendReportEmail = (int) $sendReportEmail === 1 ? true : false;
     if ($sendReportEmail === true) {
         $emailSystem = get_option('admin_email');
         $emailRecipient = !empty($this->options['cron_email']) ? $this->options['cron_email'] : '';
         $emailRecipient = empty($emailRecipient) ? $emailSystem : $emailRecipient;
     }
     $forceOutput = isset($params['force_output']) ? true : false;
     $Ruleset = $this->wpdb->get_row("SELECT * FROM " . $this->wpdb->prefix . "wm_rulesets WHERE id = " . (int) $rulesetId);
     if (empty($Ruleset)) {
         $this->out('Error: Could not load ruleset.');
         return false;
     }
     $WemahuSettings = new Wemahu\Settings();
     $WemahuSettings->useApi = (int) $this->options['use_api'] === 1 ? true : false;
     $WemahuSettings->audits['filecheck'] = (int) $Ruleset->filecheck === 1 ? true : false;
     $WemahuSettings->auditSettings['filecheck']['regexCheck'] = (int) $Ruleset->regex_check === 1 ? true : false;
     $WemahuSettings->auditSettings['filecheck']['hashCheck'] = (int) $Ruleset->hash_check === 1 ? true : false;
     $WemahuSettings->auditSettings['filecheck']['scanDir'] = ABSPATH;
     $WemahuSettings->auditSettings['filecheck']['tmpDir'] = WP_PLUGIN_DIR . '/wemahu/tmp';
     $WemahuSettings->auditSettings['filecheck']['pathRegexWhitelistUser'] = WP_PLUGIN_DIR . '/wemahu/tmp/wemahu_regex_whitelist.wmdb';
     if (!empty($Ruleset->scandir)) {
         $WemahuSettings->auditSettings['filecheck']['scanDir'] = $Ruleset->scandir;
     }
     $WemahuSettings->auditSettings['filecheck']['scanDir'] = rtrim($WemahuSettings->auditSettings['filecheck']['scanDir'], '/');
     if (!empty($Ruleset->regex_db)) {
         $WemahuSettings->auditSettings['filecheck']['pathRegexDb'] = WP_PLUGIN_DIR . '/wemahu/admin/libs/wemahu/db/' . $Ruleset->regex_db . '.wmdb';
     }
     if (!empty($Ruleset->filetypes)) {
         $WemahuSettings->auditSettings['filecheck']['extensionFilter'] = $Ruleset->filetypes;
     }
     if (!empty($Ruleset->filesize_max)) {
         $WemahuSettings->auditSettings['filecheck']['sizeFilter'] = $Ruleset->filesize_max;
     }
     if (!empty($Ruleset->max_results_file)) {
         $WemahuSettings->auditSettings['filecheck']['maxResultsFile'] = $Ruleset->max_results_file;
     }
     if (!empty($Ruleset->max_results_total)) {
         $WemahuSettings->auditSettings['filecheck']['maxResultsTotal'] = $Ruleset->max_results_total;
     }
     if ($WemahuSettings->auditSettings['filecheck']['hashCheck'] === true && !empty($Ruleset->hash_check_blacklist)) {
         $WemahuSettings->auditSettings['filecheck']['hashCheckBlacklist'] = explode("\n", str_replace("\r", "", $Ruleset->hash_check_blacklist));
     }
     // Init Wemahu:
     $Wemahu = new Wemahu\Wemahu();
     $Wemahu->setSettings($WemahuSettings);
     $WemahuStorage = new Wemahu\Storage();
     $Wemahu->setStorage($WemahuStorage);
     $WemahuDatabase = new Wemahu\WordpressDatabase($this->wpdb);
     $Wemahu->setDatabase($WemahuDatabase);
     $initResult = $Wemahu->init();
     $runResult = $Wemahu->run();
     if ($runResult !== true) {
         $this->out('Error while running Wemahu.');
         return false;
     }
     // Handle report:
     $WemahuReport = new Wemahu\WemahuReport($WemahuDatabase);
     $WemahuReport->loadItems();
     if ($forceOutput === true) {
         $this->displayReport($WemahuReport);
         return true;
     }
     if ($sendReportEmail === true) {
         $sendEmptyReport = !empty($this->options['cron_emptyreport']) ? (int) $this->options['cron_emptyreport'] : 1;
         if (empty($WemahuReport->reportItems) && $sendEmptyReport !== 1) {
             return true;
         }
         $this->mailReport($WemahuReport, $emailRecipient, $emailSystem);
     }
 }