PHP 8.2.31
Preview: wfScanMonitor.php Size: 4.09 KB
//proc/self/root/home/nshryvcy/blissfulnepal.com/wp-content/plugins/wordfence/lib/wfScanMonitor.php

<?php

class wfScanMonitor {

	const CRON_INTERVAL_NAME = 'wf_scan_monitor_interval';
	const CRON_INTERVAL_AMOUNT = 60; //Seconds
	const CRON_HOOK = 'wf_scan_monitor';

	const CONFIG_LAST_ATTEMPT = 'scanMonitorLastAttempt';
	const CONFIG_LAST_ATTEMPT_WAS_FORK = 'scanMonitorLastAttemptWasFork';
	const CONFIG_LAST_ATTEMPT_MODE = 'scanMonitorLastAttemptMode';
	const CONFIG_LAST_SUCCESS = 'scanMonitorLastSuccess';
	const CONFIG_MAX_RESUME_ATTEMPTS = 'scan_max_resume_attempts';
	const CONFIG_REMAINING_RESUME_ATTEMPTS = 'scanMonitorRemainingResumeAttempts';

	const DEFAULT_RESUME_ATTEMPTS = 2;
	const MAX_RESUME_ATTEMPTS = 5;
	const SCAN_START_TIMEOUT = 30; //Seconds

	public static function beginMonitoring() {
		if (wp_next_scheduled(self::CRON_HOOK))
			return;
		wp_schedule_event(time(), self::CRON_INTERVAL_NAME, self::CRON_HOOK);
	}

	public static function endMonitoring() {
		$timestamp = wp_next_scheduled(self::CRON_HOOK);
		if ($timestamp !== false)
			wp_unschedule_event($timestamp, self::CRON_HOOK);
	}

	public static function validateResumeAttempts($attempts, &$valid = null) {
		if ($attempts < 0 || $attempts > self::MAX_RESUME_ATTEMPTS) {
			$valid = false;
			return self::DEFAULT_RESUME_ATTEMPTS;
		}
		$valid = true;
		return $attempts;
	}

	private static function setRemainingResumeAttempts($attempts) {
		wfConfig::set(self::CONFIG_REMAINING_RESUME_ATTEMPTS, $attempts);
	}

	public static function getConfiguredResumeAttempts() {
		$attempts = (int) wfConfig::get(self::CONFIG_MAX_RESUME_ATTEMPTS, self::DEFAULT_RESUME_ATTEMPTS);
		return self::validateResumeAttempts($attempts);
	}

	private static function resetResumeAttemptCounter() {
		$attempts = self::getConfiguredResumeAttempts();
		self::setRemainingResumeAttempts($attempts);
		return $attempts;
	}

	private static function getRemainingResumeAttempts() {
		$attempts = (int) wfConfig::get(self::CONFIG_REMAINING_RESUME_ATTEMPTS, 0);
		return self::validateResumeAttempts($attempts);
	}

	public static function handleScanStart($mode) {
		wfConfig::set(self::CONFIG_LAST_ATTEMPT_MODE, $mode);
		$maxAttempts = self::resetResumeAttemptCounter();
		if ($maxAttempts > 0)
			self::beginMonitoring();
	}

	public static function monitorScan() {
		$remainingAttempts = self::getRemainingResumeAttempts();
		if ($remainingAttempts > 0) {
			$now = time();
			$lastAttempt = wfConfig::get(self::CONFIG_LAST_ATTEMPT);
			if ($lastAttempt === null || $now - $lastAttempt < self::SCAN_START_TIMEOUT)
				return;
			$lastSuccess = wfConfig::get(self::CONFIG_LAST_SUCCESS);
			self::setRemainingResumeAttempts(--$remainingAttempts);
			if ($lastSuccess === null || $lastAttempt > $lastSuccess) {
				wordfence::status(2, 'info', sprintf(/* translators: remaining attempts */ __('Attempting to resume scan stage (%d attempt(s) remaining)...', 'wordfence'), $remainingAttempts));
				self::resumeScan();
			}
		}
		else {
			self::endMonitoring();
		}
	}

	private static function resumeScan() {
		$mode = wfConfig::get(self::CONFIG_LAST_ATTEMPT_MODE);
		if (!wfScanner::isValidScanType($mode))
			$mode = false;
		wfScanEngine::startScan(wfConfig::get(self::CONFIG_LAST_ATTEMPT_WAS_FORK), $mode, true);
	}

	private static function logTimestamp($key) {
		wfConfig::set($key, time());
	}

	public static function logLastAttempt($fork) {
		self::logTimestamp(self::CONFIG_LAST_ATTEMPT);
		wfConfig::set(self::CONFIG_LAST_ATTEMPT_WAS_FORK, $fork);
	}

	public static function logLastSuccess() {
		self::logTimestamp(self::CONFIG_LAST_SUCCESS);
	}

	public static function handleStageStart($fork) {
		if ($fork)
			self::resetResumeAttemptCounter();
	}

	public static function registerCronInterval($schedules) {
		if (!array_key_exists(self::CRON_INTERVAL_NAME, $schedules)) {
			$schedules[self::CRON_INTERVAL_NAME] = array(
				'interval' => self::CRON_INTERVAL_AMOUNT,
				'display' => 'Wordfence Scan Monitor'
			);
		}
		return $schedules;
	}

	public static function registerActions() {
		add_filter('cron_schedules', array(self::class, 'registerCronInterval'));
		add_action(self::CRON_HOOK, array(self::class, 'monitorScan'));
	}

	public static function handleDeactivation() {
		self::endMonitoring();
	}

}

Directory Contents

Dirs: 4 × Files: 109

Name Size Perms Modified Actions
audit-log DIR
- drwxr-xr-x 2026-06-03 14:57:34
Edit Download
dashboard DIR
- drwxr-xr-x 2026-06-03 14:57:34
Edit Download
Diff DIR
- drwxr-xr-x 2026-06-03 14:57:34
Edit Download
rest-api DIR
- drwxr-xr-x 2026-06-03 14:57:34
Edit Download
354 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
425 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
5.63 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.85 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.39 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
8.82 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.34 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.02 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
6.62 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
8.86 MB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.17 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
580 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
4.46 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.69 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.94 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
317 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
3.07 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
4.01 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.02 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.05 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
9.15 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
3.60 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.86 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
3.33 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
10.87 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.68 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
12.49 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
38.69 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.33 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
408 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
991 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.30 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
9.80 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.64 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
185 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.51 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.47 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
9.72 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
20.55 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
8.38 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
8.19 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
10.10 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
47.13 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.02 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
3.90 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
256.83 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
9.77 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
6.02 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
25.94 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.25 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
127.17 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
6.92 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
10.29 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
4.05 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.02 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
9.25 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
352.13 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
11.49 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.13 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
66.92 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.89 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.72 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.97 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.13 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
878 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
3.23 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
303 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
266 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.80 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.70 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.56 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
29.07 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
199.14 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
5.33 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
10.95 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
9.81 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
58.47 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.27 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
5.20 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
754 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
6.70 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
8.93 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.40 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
377 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
15.98 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
127.73 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.04 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.01 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
403 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
408 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.07 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
4.09 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.77 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
11.93 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.21 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
24.95 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.14 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
27.23 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
131.69 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
15.59 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
535 B lrw-r--r-- 2026-06-03 14:57:34
Edit Download
2.22 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.47 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
1.75 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
392.60 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
3.35 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
42.60 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
28.19 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download
18.35 KB lrw-r--r-- 2026-06-03 14:57:34
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).