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/@appstore/phpMyAdmin/tool/serverchoicetool.php
#!/usr/bin/env php
<?php
const JSONFILEPATH = '/var/services/web/phpMyAdmin/synology_server_choice.json';

$config_M5 = array(
	"verbose" => "MariaDB 5",
	"auth_type" => "cookie",
	"host" => "localhost",
	"connect_type" => "socket",
	"socket" => "/run/mysqld/mysqld.sock",
	"compress" => false,
	"AllowNoPassword" => false
);
$config_M10 = array(
	"verbose" => "MariaDB 10",
	"auth_type" => "cookie",
	"host" => "localhost",
	"connect_type" => "socket",
	"socket" => "/run/mysqld/mysqld10.sock",
	"compress" => false,
	"AllowNoPassword" => false
);

function openFileWithLock($filename) {
	$file = fopen($filename, "r+");
	if (!$file) {
		return null;
	}
	if (!flock($file, LOCK_EX)) {
		fclose($file);
		return null;
	}
	return $file;
}

function closeFileWithLock($file) {
	flock($file, LOCK_UN);
	fclose($file);
}

function addToJson($new_server) {
	$jsonFile = openFileWithLock(JSONFILEPATH);
	if (is_null($jsonFile)) {
		return 1;
	}
	$servers = json_decode(file_get_contents(JSONFILEPATH), true);
	foreach ($servers as $server) {
		if ($server["verbose"] == $new_server["verbose"]) {
			closeFileWithLock($jsonFile);
			return 0;
		}
	}
	array_push($servers, $new_server);
	ftruncate($jsonFile, 0);
	fwrite($jsonFile, json_encode($servers));
	fflush($jsonFile);
	closeFileWithLock($jsonFile);
	return 0;
}

function deleteFromJson($del_server) {
	$jsonFile = openFileWithLock(JSONFILEPATH);
	if (is_null($jsonFile)) {
		return 1;
	}
	$old_servers = json_decode(file_get_contents(JSONFILEPATH), true);
	$new_servers = [];
	foreach ($old_servers as $server) {
		if ($server["verbose"] != $del_server["verbose"]) {
			array_push($new_servers, $server);
		}
	}
	ftruncate($jsonFile, 0);
	fwrite($jsonFile, json_encode($new_servers));
	closeFileWithLock($jsonFile);
	return 0;
}

switch ($argv[1]) {
	case "INIT":
		$jsonFile = fopen(JSONFILEPATH, "w");
		if (!$jsonFile) {
			$RET = 1;
		} else {
			fwrite($jsonFile, "[]");
			fclose($jsonFile);
		}
		$RET = 0;
		break;
	case "ADDM5":
		$RET = addToJson($config_M5);
		break;
	case "DELM5":
		$RET = deleteFromJson($config_M5);
		break;
	case "ADDM10":
		$RET = addToJson($config_M10);
		break;
	case "DELM10":
		$RET = deleteFromJson($config_M10);
		break;
	default:
		$RET = 1;
}
exit($RET);
?>