X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/b056895f0a313ec69824daa23e0981afb49c8305..cd26522ba6ff68c18e1504b022ca92f4d01827be:/settings/rpc-servers.php diff --git a/settings/rpc-servers.php b/settings/rpc-servers.php index bf05545..808762c 100644 --- a/settings/rpc-servers.php +++ b/settings/rpc-servers.php @@ -2,70 +2,75 @@ require_once "../inc/common.php"; require_once "../inc/header.php"; -if (isset($_POST['do_del_server'])) +$can_edit = current_user_can(PERMISSION_MANAGE_USERS); + +if ($can_edit) { - $server = $_POST['del_server_name'] ?? null; - if (isset($config["unrealircd"][$server])) + if (isset($_POST['do_del_server'])) { - unset($config["unrealircd"][$server]); - set_at_least_one_default_rpc_server(); - write_config("unrealircd"); - } else { - Message::Fail("Delete failed: could not find server"); - } -} else -if (isset($_POST['do_add_server'])) -{ - $opts = (object)$_POST; + $server = $_POST['del_server_name'] ?? null; + if (isset($config["unrealircd"][$server])) + { + unset($config["unrealircd"][$server]); + set_at_least_one_default_rpc_server(); + write_config("unrealircd"); + } else { + Message::Fail("Delete failed: could not find server"); + } + } else + if (isset($_POST['do_add_server'])) + { + $opts = (object)$_POST; - /* TODO: Server-side validation */ + /* TODO: Server-side validation */ - // TODO: syntax of each item + // TODO: syntax of each item - // TODO: check server already exists with that (new) displayname + // TODO: check server already exists with that (new) displayname - if (isset($config["unrealircd"][$opts->rpc_displayname]) && - !($opts->rpc_displayname == $opts->edit_existing)) - { - die("Server with that name already exists"); // TODO: pretier :D - } + if (isset($config["unrealircd"][$opts->rpc_displayname]) && + !($opts->rpc_displayname == $opts->edit_existing)) + { + die("Server with that name already exists"); // TODO: pretier :D + } - $new_properties = [ - "rpc_user" => $opts->rpc_user, - "rpc_password" => $opts->rpc_password, - "host"=>$opts->rpc_host, - "port"=>$opts->rpc_port, - "tls_verify_cert"=>isset($opts->rpc_tls_verify_cert)?true:false, - "default"=>isset($opts->rpc_default)?true:false, - ]; + $new_properties = [ + "rpc_user" => $opts->rpc_user, + "rpc_password" => $opts->rpc_password, + "host"=>$opts->rpc_host, + "port"=>$opts->rpc_port, + "tls_verify_cert"=>isset($opts->rpc_tls_verify_cert)?true:false, + "default"=>isset($opts->rpc_default)?true:false, + ]; - if (!empty($opts->edit_existing)) - { - // Change existing server - if (!isset($config["unrealircd"][$opts->edit_existing])) - die("Editing a server that does not exist!?"); // not very graceful, isn't it? - if ($new_properties["rpc_password"] == "****************") - $new_properties["rpc_password"] = $config["unrealircd"][$opts->edit_existing]["rpc_password"]; - // name change? unset the old one - if ($opts->edit_existing != $opts->rpc_displayname) - unset($config["unrealircd"][$opts->edit_existing]); - // set new properties - $config["unrealircd"][$opts->rpc_displayname] = $new_properties; - } else { - // Add new server - $config["unrealircd"][$opts->rpc_displayname] = $new_properties; - // TODO: encrypt pwd ;) - } + if (!empty($opts->edit_existing)) + { + // Change existing server + if (!isset($config["unrealircd"][$opts->edit_existing])) + die("Editing a server that does not exist!?"); // not very graceful, isn't it? + if ($new_properties["rpc_password"] == "****************") + $new_properties["rpc_password"] = $config["unrealircd"][$opts->edit_existing]["rpc_password"]; + // name change? unset the old one + if ($opts->edit_existing != $opts->rpc_displayname) + unset($config["unrealircd"][$opts->edit_existing]); + // set new properties + $config["unrealircd"][$opts->rpc_displayname] = $new_properties; + } else { + // Add new server + $config["unrealircd"][$opts->rpc_displayname] = $new_properties; + // TODO: encrypt pwd ;) + } - if ($new_properties["default"]) - set_default_rpc_server($opts->rpc_displayname); - else - set_at_least_one_default_rpc_server(); + if ($new_properties["default"]) + set_default_rpc_server($opts->rpc_displayname); + else + set_at_least_one_default_rpc_server(); - /* And write the new config */ - write_config(); + /* And write the new config */ + write_config(); - Message::Success("RPC Server successfully ". (empty($opts->edit_existing) ? "added" : "modified")."."); + Message::Success("RPC Server successfully ". (empty($opts->edit_existing) ? "added" : "modified")."."); + } } ?> @@ -91,7 +96,7 @@ if (empty($config["unrealircd"]))
-
Add Server
+
>Add Server
@@ -214,7 +219,7 @@ border-radius: 3px;
- + @@ -222,7 +227,10 @@ border-radius: 3px; $e) + $servers = get_config('unrealircd'); + if (!$servers) + $servers = []; + foreach($servers as $name=>$e) { $primary = ""; if (isset($e["default"]) && $e["default"]) @@ -235,7 +243,8 @@ border-radius: 3px; $tls_verify_cert = $e["tls_verify_cert"] ? "true" : "false"; $html_name = "$name"; echo ""; - echo ""; + if ($can_edit) + echo ""; echo ""; echo ""; echo ""; @@ -267,7 +276,7 @@ border-radius: 3px; /* The RPC connection tester! */ function test_rpc_server() { - fetch( + 'api/test_rpc_server.php', { + fetch('' + 'api/test_rpc_server.php', { method:'POST', headers: {'Content-Type':'application/x-www-form-urlencoded'}, body: 'method=rpc&'+
Display name Hostname Port
".$html_name.$primary."".$host."".$port."