X-Git-Url: https://jfr.im/git/irc/unrealircd/unrealircd-webpanel.git/blobdiff_plain/1634b6ac1230c1cf80262d6f18f1d6a20f1974f5..96541ea34d3deac2afbc405b6918aaf3f75e48f8:/inc/common.php diff --git a/inc/common.php b/inc/common.php index c5890d0..e38f5eb 100644 --- a/inc/common.php +++ b/inc/common.php @@ -59,6 +59,24 @@ function read_config_file() return false; if (isset($config['unrealircd'])) $config_transition_unreal_server = true; + /* Upgrade needed? */ + $plugins_modified = false; + foreach ($config["plugins"] as $k=>$v) + { + if ($v == "sql_auth") + { + $config["plugins"][$k] = "sql_db"; + $plugins_modified = true; + } else + if ($v == "file_auth") + { + $config["plugins"][$k] = "file_db"; + $plugins_modified = true; + } + } + if ($plugins_modified) + write_config_file(); + return true; } @@ -191,6 +209,53 @@ function generate_secrets() $config['secrets']['key'] = rtrim(base64_encode(sodium_crypto_aead_xchacha20poly1305_ietf_keygen()),'='); } +function get_active_rpc_server() +{ + $servers = get_config("unrealircd"); + if (empty($servers)) + return; + // TODO: make user able to override this - either in user or in session + + foreach ($servers as $displayname=>$e) + { + if (isset($e["default"]) && $e["default"]) + return $displayname; + } + return null; +} + +/* Set a new default RPC server */ +function set_default_rpc_server($name) +{ + GLOBAL $config; + + /* Mark all other servers as non-default */ + foreach ($config["unrealircd"] as $n=>$e) + if ($n != $name) + $config["unrealircd"][$n]["default"] = false; + $config["unrealircd"][$name]["default"] = true; +} + +/* Ensure at least 1 server is default */ +function set_at_least_one_default_rpc_server() +{ + GLOBAL $config; + + $has_default_rpc_server = false; + foreach ($config["unrealircd"] as $name=>$e) + if ($e["default"]) + $has_default_rpc_server = true; + if (!$has_default_rpc_server) + { + /* Make first server in the list the default */ + foreach ($config["unrealircd"] as $name=>$e) + { + $config["unrealircd"][$name]["default"] = true; + break; + } + } +} + function secret_encrypt(string $text) { GLOBAL $config; @@ -246,6 +311,14 @@ function upgrade_check() write_config('unrealircd'); } } + /* $config["unrealircd"] should be an array now.. */ + if (isset($config['unrealircd']) && isset($config['unrealircd']['rpc_password'])) + { + $config["unrealircd"]["default"] = true; + $config['unrealircd'] = [ + "Primary" => $config['unrealircd']]; + write_config("unrealircd"); + } $version = get_version(); if (!isset($config['webpanel_version'])) @@ -352,6 +425,7 @@ $pages = [ ], "Settings" => [ "Plugins" => "settings/plugins.php", + "RPC Servers" => "settings/rpc-servers.php", ], "News" => "news.php", @@ -362,7 +436,7 @@ if (!panel_start_session()) if (!page_requires_no_login()) { if (!is_auth_provided()) - die("No authentication plugin loaded. You must load either sql_auth, file_auth, or a similar auth plugin!"); + die("No authentication plugin loaded. You must load either sql_db, file_db, or a similar auth plugin!"); $current_page = $_SERVER['REQUEST_URI']; header("Location: ".get_config("base_url")."login/?redirect=".urlencode($current_page)); die;