]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blobdiff - inc/common.php
Make $pages[] not have a string value in the end but an array with ["url"=>...]
[irc/unrealircd/unrealircd-webpanel.git] / inc / common.php
index 8a485aeae6f05a99b885491e222ad513630082af..64a47cc729252ac3ddae3dcf371c8cfba9e96cbf 100644 (file)
@@ -209,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;
@@ -363,25 +410,25 @@ if (!page_requires_no_config())
 }
 
 $pages = [
-       "Overview"     => "",
-       "Users"        => "users",
-       "Channels"     => "channels",
-       "Servers"      => "servers",
+       "Overview"     => ["url"=>""],
+       "Users"        => ["url"=>"users"],
+       "Channels"     => ["url"=>"channels"],
+       "Servers"      => ["url"=>"servers"],
        "Server Bans"  => [
-               "Server Bans" => "server-bans",
-               "Name Bans" => "server-bans/name-bans.php",
-               "Ban Exceptions" => "server-bans/ban-exceptions.php"
+               "Server Bans" => ["url" => "server-bans"],
+               "Name Bans" => ["url" => "server-bans/name-bans.php"],
+               "Ban Exceptions" => ["url" => "server-bans/ban-exceptions.php"],
        ],
-       "Spamfilter"   => "spamfilter.php",
+       "Spamfilter"   => ["url" => "spamfilter.php"],
        "Tools" => [
-               "IP WHOIS" => "tools/ip-whois.php",
+               "IP WHOIS" => ["url" => "tools/ip-whois.php"],
        ],
        "Settings" => [
-               "Plugins" => "settings/plugins.php",
-               "RPC Servers" => "settings/rpc-servers.php",
+               "Plugins" => ["url" => "settings/plugins.php"],
+               "RPC Servers" => ["url" => "settings/rpc-servers.php"],
        ],
        
-       "News" => "news.php",
+       "News" => ["url" => "news.php"],
 ];
 
 if (!panel_start_session())
@@ -395,14 +442,14 @@ if (!panel_start_session())
                die;
        }
 } else {
-       $pages["Settings"]["Accounts"] = "settings";
+       $pages["Settings"]["Accounts"] = ["url" => "settings"];
        if (current_user_can(PERMISSION_MANAGE_USERS))
-               $pages["Settings"]["Role Editor"] = "settings/user-role-edit.php";
+               $pages["Settings"]["Role Editor"] = ["url"=>"settings/user-role-edit.php"];
        $user = unreal_get_current_user();
        if ($user)
        {
                /* Add logout page, if logged in */
-               $pages["Logout"] = "login/?logout=true";
+               $pages["Logout"] = ["url"=>"login/?logout=true"];
        }
 }