]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blobdiff - inc/common.php
Move datatables CSS/JS include to inc/header.php.
[irc/unrealircd/unrealircd-webpanel.git] / inc / common.php
index c5890d045e39be553bb4494139bf44f9755c2689..e38f5eb459e75f29ef467b673fec90e5dbe30887 100644 (file)
@@ -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;