HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: /volume1/web/web/wp-content/plugins/syno_ps_tinymce/settings.php
<?php
session_start();

$setting_keys = ['protocol', 'host'];
$verify_key = '';

function GetSettingsFileHandle($read_only)
{
	$filename = 'synology_nas.ini';
	$mode = 'w+';

	if (true === $read_only) {
		$mode = 'a+';
	}

	$handle = @fopen($filename, $mode);

	if (!$handle) {
		$handle = @fopen(sys_get_temp_dir() . '/' . $filename, $mode);
		if (!$handle) {
			return false;
		}
	}

	return $handle;
}

function ReadFromSettingsFile()
{
	$handle = GetSettingsFileHandle(true);

	if (!$handle) {
		return [];
	}

	$settings = parse_ini_string(stream_get_contents($handle));
	if (!is_array($settings)) {
		$settings = [];
	}

	fclose($handle);

	return $settings;
}

function WriteToSettingsFile($settings) {
	if (!is_array($settings)) {
		return false;
	}

	$content = "";
	foreach ($settings as $key => $elem) {
		if (is_array($elem)) {
			for($i = 0;$i < count($elem);$i++) {
				$content .= $key."[] = \"".$elem[$i]."\"\n";
			}
		} else if($elem == "") {
			$content .= $key." = \n";
		} else {
			$content .= $key." = \"".$elem."\"\n";
		}
	}

	$handle = GetSettingsFileHandle(false);

	if (!$handle) {
		return false;
	}

	$success = fwrite($handle, $content);
	fclose($handle);

	return false !== $success ;
}

function GetSettings()
{
	global $setting_keys;

	$settings = ReadFromSettingsFile();

	foreach ($setting_keys as $key) {
		if (!array_key_exists($key, $settings)) {
			$settings[$key] = '';
		}
	}

	return $settings;
}

function SetSettings(&$request)
{
	global $setting_keys;

	if (!is_array($request)) {
		return false;
	}

	$settings = ReadFromSettingsFile();

	foreach ($setting_keys as $key) {
		if (array_key_exists($key, $request)) {
			$settings[$key] = $request[$key];
		}
	}

	return WriteToSettingsFile($settings);
}

$result = [
	'success' => false
];

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
	$result['success'] = true;
	$result['data'] = GetSettings();
} else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	if (isset($_SESSION['syno_ps_tinymce_setting_skip_verify']) && $_SESSION['syno_ps_tinymce_setting_skip_verify'] == true) {
		$result['success'] = SetSettings($_REQUEST);
	} else if (!empty($verify_key) && $_REQUEST['verify_key'] === $verify_key) {
		$result['success'] = SetSettings($_REQUEST);
	} else {
		$result['success'] = false;
	}
}

header('Content-Type: application/json; charset="UTF-8"');

echo json_encode($result);
?>