]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/commitdiff
Add simple way to deal with IRC server configuration required.
authorBram Matthys <redacted>
Wed, 26 Apr 2023 07:45:53 +0000 (09:45 +0200)
committerBram Matthys <redacted>
Wed, 26 Apr 2023 07:46:35 +0000 (09:46 +0200)
This handles the "no_irc_server_required" property on $pages.

Also renames "url" property to "script" in $pages in previous commit,
since it points to the script page (eg server-bans/index.php).
It will automatically strip /index.php if possible.

inc/common.php
inc/header.php
server-bans/ban-exceptions.php
server-bans/name-bans.php
servers/index.php
spamfilter.php

index 64a47cc729252ac3ddae3dcf371c8cfba9e96cbf..44967879fb73393a81827b36b3cc831ae90160ec 100644 (file)
@@ -24,6 +24,34 @@ function get_config($setting)
        return $item;
 }
 
+function get_current_page_helper($name, $p)
+{
+       if (isset($p["script"]))
+       {
+               if (($p["script"] != '') && str_ends_with($_SERVER['SCRIPT_FILENAME'],$p["script"]))
+                       return $p;
+               return null;
+       }
+       foreach ($p as $k=>$v)
+       {
+               $ret = get_current_page_helper($k, $v);
+               if ($ret !== null)
+                       return $ret;
+       }
+       return null;
+}
+
+function get_current_page()
+{
+       GLOBAL $pages;
+       foreach ($pages as $k=>$v)
+       {
+               $ret = get_current_page_helper($k, $v);
+               if ($ret !== null)
+                       return $ret;
+       }
+}
+
 function page_requires_no_config()
 {
        if (str_ends_with($_SERVER['SCRIPT_FILENAME'],"install.php") ||
@@ -410,25 +438,25 @@ if (!page_requires_no_config())
 }
 
 $pages = [
-       "Overview"     => ["url"=>""],
-       "Users"        => ["url"=>"users"],
-       "Channels"     => ["url"=>"channels"],
-       "Servers"      => ["url"=>"servers"],
+       "Overview"     => ["script"=>""],
+       "Users"        => ["script"=>"users/index.php"],
+       "Channels"     => ["script"=>"channels/index.php"],
+       "Servers"      => ["script"=>"servers/index.php"],
        "Server Bans"  => [
-               "Server Bans" => ["url" => "server-bans"],
-               "Name Bans" => ["url" => "server-bans/name-bans.php"],
-               "Ban Exceptions" => ["url" => "server-bans/ban-exceptions.php"],
+               "Server Bans" => ["script" => "server-bans/index.php"],
+               "Name Bans" => ["script" => "server-bans/name-bans.php"],
+               "Ban Exceptions" => ["script" => "server-bans/ban-exceptions.php"],
        ],
-       "Spamfilter"   => ["url" => "spamfilter.php"],
+       "Spamfilter"   => ["script" => "spamfilter.php"],
        "Tools" => [
-               "IP WHOIS" => ["url" => "tools/ip-whois.php"],
+               "IP WHOIS" => ["script" => "tools/ip-whois.php","no_irc_server_required"=>true],
        ],
        "Settings" => [
-               "Plugins" => ["url" => "settings/plugins.php"],
-               "RPC Servers" => ["url" => "settings/rpc-servers.php"],
+               "Plugins" => ["script" => "settings/plugins.php","no_irc_server_required"=>true],
+               "RPC Servers" => ["script" => "settings/rpc-servers.php","no_irc_server_required"=>true],
        ],
        
-       "News" => ["url" => "news.php"],
+       "News" => ["script" => "news.php","no_irc_server_required"=>true],
 ];
 
 if (!panel_start_session())
@@ -442,14 +470,25 @@ if (!panel_start_session())
                die;
        }
 } else {
-       $pages["Settings"]["Accounts"] = ["url" => "settings"];
+       $pages["Settings"]["Accounts"] = [
+               "script" => "settings/index.php",
+               "no_irc_server_required"=>true
+       ];
        if (current_user_can(PERMISSION_MANAGE_USERS))
-               $pages["Settings"]["Role Editor"] = ["url"=>"settings/user-role-edit.php"];
+       {
+               $pages["Settings"]["Role Editor"] = [
+                       "script"=>"settings/user-role-edit.php",
+                       "no_irc_server_required"=>true
+               ];
+       }
        $user = unreal_get_current_user();
        if ($user)
        {
                /* Add logout page, if logged in */
-               $pages["Logout"] = ["url"=>"login/?logout=true"];
+               $pages["Logout"] = [
+                       "script"=>"login/?logout=true",
+                       "no_irc_server_required"=>true
+               ];
        }
 }
 
@@ -472,4 +511,6 @@ Hook::run(HOOKTYPE_NAVBAR, $pages);
  *               $pages[$page_name] = $page_link;
  *       }
  * }
-*/
\ No newline at end of file
+*/
+
+$current_page = get_current_page();
index 36b96e19eefb109ca86fbebc43aa6a9f256116f9..ae7005df85f3ae6482fa52ad1e78a0ef49ab53b5 100644 (file)
@@ -108,7 +108,7 @@ function show_page_item($name, $page, $nestlevel)
        //if (is_string($active_page) && $page == $active_page)
        //      $class .= " active";
 
-       $is_link = isset($page["url"]) ? true : false;
+       $is_link = isset($page["script"]) ? true : false;
 
        if ($nestlevel > 0)
        {
@@ -122,7 +122,10 @@ function show_page_item($name, $page, $nestlevel)
        {
                $style = "padding-bottom: 0px;";
        } else {
-               echo "<a href=\"".get_config("base_url").$page["url"]."\" style=\"text-decoration: none\">\n";
+               $url = $page["script"];
+               if (str_ends_with($url, "/index.php"))
+                       $url = str_replace('/index.php', '', $url);
+               echo "<a href=\"".get_config("base_url").$url."\" style=\"text-decoration: none\">\n";
        }
        echo "<div class=\"big-page-item d-flex justify-content-between align-items-center $class list-group-item-action\" style=\"$style\">$name
                <div class=\"text-right padding-top\">
@@ -269,3 +272,13 @@ foreach ($pages as $name => $page)
                nav_resize_check();
        });
 </script>
+
+<?php
+       if ($current_page &&
+           !(isset($current_page["no_irc_server_required"]) &&
+             ($current_page["no_irc_server_required"] == true)))
+       {
+               Message::Fail("No RPC server configured. Go to Settings - RPC Servers.");
+               require_once('footer.php');
+               die;
+       }
index 34596d2eb5eeaf2c9d0a90b92e487514032e7fc8..6bd265b723c697a93bbaa18673e30f2ced6bfe74 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once "../inc/common.php";
-require_once "../inc/connection.php";
 require_once "../inc/header.php";
+require_once "../inc/connection.php";
 require_once "../misc/ban-exceptions-misc.php";
 if (!empty($_POST))
 {
index 75ef9861ef24eeafc76c348d3cf53e83d4a6b934..264e74022bc6d68a1aeab5fb060412b8c3aef29b 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once "../inc/common.php";
-require_once "../inc/connection.php";
 require_once "../inc/header.php";
+require_once "../inc/connection.php";
 
 if (!empty($_POST))
 {
index f63ed5afc417abc2f702d9a799ad570340cd9112..bca59bfaccbb38f89c2fdfe3ba067db58faea43b 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once "../inc/common.php";
-require_once "../inc/connection.php";
 require_once "../inc/header.php";
+require_once "../inc/connection.php";
 
 $rehash_errors = [];
 $rehash_warnings = [];
index 80d439607be06ab0f8c0e74a623ea1fee6107454..8a8a7496f95858b3316f6a44c767b44c75d82f42 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 require_once "inc/common.php";
-require_once "inc/connection.php";
 require_once "inc/header.php";
+require_once "inc/connection.php";
 
 $spamfilter_target_info = Array(
        "p"=>Array("short_text" => "usermsg", "long_text" => "User message"),