[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.14.248.199: ~ $
<?php

if (!defined('ABSPATH')) exit;
if (!class_exists('BVWatchCallback')) :

class BVWatchCallback extends BVCallbackBase {
	public $db;
	public $settings;

	const WATCH_WING_VERSION = 1.6;

	public function __construct($callback_handler) {
		$this->db = $callback_handler->db;
		$this->settings = $callback_handler->settings;
	}

	public function getData($table, $limit = 0, $filter = "") {
		$result = array();
		$data = array();
		$rows = $this->db->getTableContent($table, '*', $filter, $limit);
		$last_id = 0;
		foreach ($rows as $row) {
			$result[] = $row;
			$last_id = $row['id'];
		}
		$data['last_id'] = $last_id;
		$data['rows'] = $result;
		return $data;
	}

	public function deleteBvDynamicEvents($filter = "") {
		$name = BVWPDynSync::$dynsync_table;
		return $this->db->deleteBVTableContent($name, $filter);
	}

	public function setWatchTime() {
		return $this->settings->updateOption('bvwatchtime', time());
	}

	// we use fread to read limited fw_prepend_log, with wp function, we will load entire fw_prepend_log at once which may have perfromance issues
	public function getFWPrependLog($params) {
		$result = array();
		$fname = $params['fname'];
		$limit = intval($params['limit']);

		if (MCWPFileSystem::getInstance()->exists($fname) === true) {

			$result['exists'] = true;
			$tmpfname = $fname."tmp";

			if (MCWPFileSystem::getInstance()->move($fname, $tmpfname, true) === false) {
				$result = array('status' => 'Error', 'message' => 'UNABLE_TO_RENAME_LOGFILE');

			} else {

				if (MCWPFileSystem::getInstance()->exists($tmpfname) === true) {

					$fsize = MCWPFileSystem::getInstance()->size($tmpfname);
					$result["size"] = $fsize;

					if ($fsize <= $limit) {
						$result['content'] = MCWPFileSystem::getInstance()->getContents($tmpfname);
					} else {
						$handle = fopen($tmpfname, "rb"); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen
						$result['content'] = fread($handle, $limit); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fread
						$result['incomplete'] = true;
						fclose($handle); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose
					}

					$result['tmpfile'] = unlink($tmpfname);
				} else {
					$result['tmpfile'] = 'DOES_NOT_EXISTS';
				}

			}
		}

		return $result;
	}

	// phpcs:disable WordPress.WP.AlternativeFunctions.file_system_operations_fsockopen, WordPress.WP.AlternativeFunctions.file_system_operations_fwrite, WordPress.WP.AlternativeFunctions.file_system_operations_fclose
	public function getDomainInfo($params) {
		$domain = $params["domain"];
		if (empty($domain)) {
			return array('domainData' => "DOMAIN_NOT_PRESENT");
		}

		$whoisServer = $params["host"];
		if (empty($whoisServer)) {
			return array('domainData' => "WHOIS_SERVER_NOT_PRESENT : $domain");
		}

		$conn = @fsockopen($whoisServer, $params["port"], $errno, $errstr, $params["timeout"]);
		if (!$conn) {
			return array('domainData' => "UNABLE_TO_CONNECT_TO_WHOIS_SERVER : $whoisServer : DOMAIN : $domain : ERROR : $errstr ($errno)");
		}

		try {
			fwrite($conn, "$domain\r\n");

			$response = '';
			while (!feof($conn)) {
				$response .= fgets($conn, 1024);
			}

			fclose($conn);
		} catch (Exception $e) {
			fclose($conn);
			return array('domainData' => "ERROR_WHILE_FETCHING_DATA : " . $e->getMessage());
		}

		return array('domainData' => $response);
	}
	// phpcs:enable WordPress.WP.AlternativeFunctions.file_system_operations_fsockopen, WordPress.WP.AlternativeFunctions.file_system_operations_fwrite, WordPress.WP.AlternativeFunctions.file_system_operations_fclose

	public function getOffsetResetInfo($params, $offset, $table, $col_name = "id") {
		if (!isset($params['enforce_auto_incr_check']) || !($params['enforce_auto_incr_check'] === true)) {
			return array();
		}
		$last_id = $this->db->getLastRowId($col_name, $table);
		if ($last_id === null) {
			return array("error" => "UNABLE_TO_FETCH_LAST_ROW_ID");
		} else if ($last_id < $offset) {
			return array("last_row_id" => $last_id, "offset_reset_required" => true);
		} else {
			return array();
		} 
	}

	public function process($request) {
		$db = $this->db;
		$settings = $this->settings;
		$this->setWatchTime();
		$params = $request->params;

		switch ($request->method) {
		case "getdata":
			$resp = array();

			if (isset($params['domain_params']) && is_array($params['domain_params'])) {
				$resp = array_merge($resp, $this->getDomainInfo($params['domain_params']));
			}

			if (array_key_exists('lp', $params)) {
				require_once dirname( __FILE__ ) . '/../../protect/lp.php';
				$lp_params = $params['lp'];
				if (!isset($lp_params['bv_check_table']) || $db->isTablePresent($db->getBVTable(MCProtectLP_V591::TABLE_NAME))) {
					$limit = intval($lp_params['limit']);
					$filter = $lp_params['filter'];
					$offset = isset($lp_params['offset']) ? intval($lp_params['offset']) : 0;
					$table = $db->getBVTable(MCProtectLP_V591::TABLE_NAME);
					$resp["lplogs"] = $this->getOffsetResetInfo($lp_params, $offset, $table);
					if (empty($resp["lplogs"])) {
						$db->deleteBVTableContent(MCProtectLP_V591::TABLE_NAME, $lp_params['rmfilter']);
						$resp["lplogs"] = $this->getData($table, $limit, $filter);
					}
				} else {
					$resp["lplogs"] = array("status" => "TABLE_NOT_PRESENT");
				}
			}

			if (array_key_exists('prelog', $params)) {
				$prelog_params = $params['prelog'];
				$resp["prelog"] = $this->getFWPrependLog($prelog_params);
			}

			if (array_key_exists('fw', $params)) {
				require_once dirname( __FILE__ ) . '/../../protect/fw.php';
				$fw_params = $params['fw'];
				if (!isset($fw_params['bv_check_table']) || $db->isTablePresent($db->getBVTable(MCProtectFW_V591::TABLE_NAME))) {
					$limit = intval($fw_params['limit']);
					$filter = $fw_params['filter'];
					$offset = isset($fw_params['offset']) ? intval($fw_params['offset']) : 0;
					$table = $db->getBVTable(MCProtectFW_V591::TABLE_NAME);
					$resp["fwlogs"] = $this->getOffsetResetInfo($fw_params, $offset, $table);
					if (empty($resp["fwlogs"])){
						$db->deleteBVTableContent(MCProtectFW_V591::TABLE_NAME, $fw_params['rmfilter']);
						$resp["fwlogs"] = $this->getData($table, $limit, $filter);
					}
				} else {
					$resp["fwlogs"] = array("status" => "TABLE_NOT_PRESENT");
				}
			}

			if (array_key_exists('dynevent', $params)) {
				require_once dirname( __FILE__ ) . '/../../wp_dynsync.php';
				$isdynsyncactive = $settings->getOption('bvDynSyncActive');
				if ($isdynsyncactive == 'yes') {
					if (!isset($params['bv_check_table']) || $db->isTablePresent($db->getBVTable(BVWPDynSync::$dynsync_table))) {
						$limit = intval($params['limit']);
						$filter = $params['filter'];
						$offset = isset($params['offset']) ? intval($params['offset']) : 0;
						$table = $db->getBVTable(BVWPDynSync::$dynsync_table);
						$offset_reset_info = $this->getOffsetResetInfo($params, $offset, $table);
						if (empty($offset_reset_info)) {
							$this->deleteBvDynamicEvents($params['rmfilter']);
							$data = $this->getData($table, $limit, $filter);

							$resp['last_id'] = $data['last_id'];
							$resp['events'] = $data['rows'];
							$resp['timestamp'] = time();
							$resp["status"] = true;
						} else {
							if (array_key_exists("error", $offset_reset_info)) {
								$resp["error"] = $offset_reset_info["error"];
							} else {
								$resp["offset_reset_required"] = $offset_reset_info["offset_reset_required"];
								$resp["last_row_id"] = $offset_reset_info["last_row_id"];
							}
						}
					}
				}
			}

			if (array_key_exists('actlog', $params)) {
				require_once dirname( __FILE__ ) . '/../../wp_actlog.php';
				$actlog_params = $params['actlog'];
				if (!isset($actlog_params['bv_check_table']) || $db->isTablePresent($db->getBVTable(BVWPActLog::$actlog_table))) {
					$table = $db->getBVTable(BVWPActLog::$actlog_table);
					$limit = intval($actlog_params['limit']);
					$filter = $actlog_params['filter'];
					$offset = isset($actlog_params['offset']) ? intval($actlog_params['offset']) : 0;
					$resp["actlogs"] = $this->getOffsetResetInfo($actlog_params, $offset, $table);
					if (empty($resp["actlogs"])) {
						$db->deleteBVTableContent(BVWPActLog::$actlog_table, $actlog_params['rmfilter']);
						$resp["actlogs"] = $this->getData($table, $limit, $filter);
					}
				} else {
					$resp["actlogs"] = array("status" => "TABLE_NOT_PRESENT");
				}
			}

			if (array_key_exists('airlift_stats', $params)) {
				$airlift_stats_table = "airlift_stats";
				$airlift_stats_params = $params['airlift_stats'];
				$table = $db->getBVTable($airlift_stats_table);
				if (!isset($airlift_stats_params['bv_check_table']) || $db->isTablePresent($table)) {
					$limit = intval($airlift_stats_params['limit']);
					$filter = $airlift_stats_params['filter'];
					$offset = isset($airlift_stats_params['offset']) ? intval($airlift_stats_params['offset']) : 0;
					$resp["airlift_stats"] = $this->getOffsetResetInfo($airlift_stats_params, $offset, $table);
					if (empty($resp["airlift_stats"])) {
						$db->deleteBVTableContent($airlift_stats_table, $airlift_stats_params['rmfilter']);
						$resp["airlift_stats"] = $this->getData($table, $limit, $filter);
					}
				} else {
					$resp["airlift_stats"] = array("status" => "TABLE_NOT_PRESENT");
				}
			}

			if (array_key_exists('php_error_monitoring', $params)) {
				require_once dirname( __FILE__ ) . '/../../php_error_monitoring/monitoring.php';
				$php_error_monit_params = $params['php_error_monitoring'];
				$table = $db->getBVTable(MCWPPHPErrorMonitoring::ERROR_TABLE);
				if (!isset($php_error_monit_params['bv_check_table']) || $db->isTablePresent($table)) {
					$limit = intval($php_error_monit_params['limit']);
					$filter = $php_error_monit_params['filter'];
					$offset = isset($php_error_monit_params['offset']) ? intval($php_error_monit_params['offset']) : 0;
					$resp["php_error_monitoring"] = $this->getOffsetResetInfo($php_error_monit_params, $offset, $table);
					if (empty($resp["php_error_monitoring"])) {
						$db->deleteBVTableContent(MCWPPHPErrorMonitoring::ERROR_TABLE, $php_error_monit_params['rmfilter']);
						$resp["php_error_monitoring"] = $this->getData($table, $limit, $filter);
					}
				} else {
					$resp["php_error_monitoring"] = array("status" => "TABLE_NOT_PRESENT");
				}
			}

			$resp["status"] = "done";
			break;
		case "rmdata":
			require_once dirname( __FILE__ ) . '/../../wp_dynsync.php';
			$filter = $params['filter'];
			$resp = array("status" => $this->deleteBvDynamicEvents($filter));
			break;
		default:
			$resp = false;
		}
		return $resp;
	}
}
endif;

Filemanager

Name Type Size Permission Actions
account.php File 2.71 KB 0644
actlog.php File 1.65 KB 0644
brand.php File 1.27 KB 0644
bv_upgrader_skin.php File 2.23 KB 0644
db.php File 11.76 KB 0644
dynsync.php File 2.57 KB 0644
fs.php File 11.87 KB 0644
fs_write.php File 11.56 KB 0644
info.php File 17.77 KB 0644
ipstore.php File 4.03 KB 0644
manage.php File 27.51 KB 0644
misc.php File 8.17 KB 0644
protect.php File 3.2 KB 0644
security.php File 5.36 KB 0644
watch.php File 10.43 KB 0644