X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/41e618f46b6d2c0fb0640e66300689dfce3f7728..cd26522ba6ff68c18e1504b022ca92f4d01827be:/settings/rpc-servers.php diff --git a/settings/rpc-servers.php b/settings/rpc-servers.php index 7a6f5ec..808762c 100644 --- a/settings/rpc-servers.php +++ b/settings/rpc-servers.php @@ -2,94 +2,75 @@ require_once "../inc/common.php"; require_once "../inc/header.php"; -/* Ensure at least 1 server is default */ -function set_at_least_one_default_server() -{ - GLOBAL $config; +$can_edit = current_user_can(PERMISSION_MANAGE_USERS); - $has_default_server = false; - foreach ($config["unrealircd"] as $name=>$e) - if ($e["default"]) - $has_default_server = true; - if (!$has_default_server) +if ($can_edit) +{ + if (isset($_POST['do_del_server'])) { - /* Make first server in the list the default */ - foreach ($config["unrealircd"] as $name=>$e) + $server = $_POST['del_server_name'] ?? null; + if (isset($config["unrealircd"][$server])) { - $config["unrealircd"][$name]["default"] = true; - break; + unset($config["unrealircd"][$server]); + set_at_least_one_default_rpc_server(); + write_config("unrealircd"); + } else { + Message::Fail("Delete failed: could not find server"); } - } -} - -if (isset($_POST['do_del_server'])) -{ - $server = $_POST['edit_existing'] ?? null; - if (isset($config["unrealircd"][$server])) + } else + if (isset($_POST['do_add_server'])) { - unset($config["unrealircd"][$server]); - set_at_least_one_default_server(); - write_config("unrealircd"); - } else { - Message::Fail("Delete failed: could not find server"); - } -} else -if (isset($_POST['do_add_server'])) -{ - $opts = (object)$_POST; + $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_iphost, - "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"]; - // we unset because there could be a rename - unset($config["unrealircd"][$opts->edit_existing]); - $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"]) - { - /* Mark all other servers as non-default */ - foreach ($config["unrealircd"] as $name=>$e) - if ($name != $opts->rpc_displayname) - $config["unrealircd"][$name]["default"] = false; - } else { - /* Ensure at least 1 server is default */ - set_at_least_one_default_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")."."); + } } ?> @@ -115,7 +96,7 @@ if (empty($config["unrealircd"]))
-
Add Server
+
>Add Server
@@ -145,8 +126,8 @@ if (empty($config["unrealircd"])) Make this the default (primary) server that will be used for connections.
- - + + The hostname or IP address of your UnrealIRCd server. You should use 127.0.0.1 for the same machine.
@@ -173,7 +154,6 @@ if (empty($config["unrealircd"]))
@@ -201,10 +181,45 @@ if (empty($config["unrealircd"])) + + + + + +
+ @@ -212,7 +227,10 @@ if (empty($config["unrealircd"])) $e) + $servers = get_config('unrealircd'); + if (!$servers) + $servers = []; + foreach($servers as $name=>$e) { $primary = ""; if (isset($e["default"]) && $e["default"]) @@ -223,9 +241,11 @@ if (empty($config["unrealircd"])) $port = htmlspecialchars($e["port"]); $rpc_user = htmlspecialchars($e["rpc_user"]); $tls_verify_cert = $e["tls_verify_cert"] ? "true" : "false"; - $name = "$name"; + $html_name = "$name"; echo ""; - echo ""; + if ($can_edit) + echo ""; + echo ""; echo ""; echo ""; echo ""; @@ -238,7 +258,7 @@ if (empty($config["unrealircd"]))
Display name Hostname Port
".$name.$primary."".$html_name.$primary."".$host."".$port."".$rpc_user."