]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blobdiff - misc/server-lookup-misc.php
chan details: make tables sm0l
[irc/unrealircd/unrealircd-webpanel.git] / misc / server-lookup-misc.php
index 1aaa6abbf9f7abdf9e914df47fbc0921c54af498..14f6afe3696c7b5c790ea21ccea04ce9b634518d 100644 (file)
@@ -47,41 +47,66 @@ function sinfo_conv_version_string($server) : string
 {
     $string = (isset($server->server->features->software)) ? $server->server->features->software : "";
     $return = "";
+    $tooltip = "";
+    $badge = "";
+    $display_string = $string;
+
     if (strlen($string) && strpos($string,"-"))
     {
         $tok = split($string, "-");
-        $tooltip = ($tok[2] == "git") ? "Installed from GitHub" : NULL;
-        if (!$tooltip)
+        if (($tok[0] == "UnrealIRCd") && isset($tok[2]))
         {
-            $tooltip = (substr($tok[2],0,2) == "rc") ? "Release Candidate/Beta Version" : "";
+            if ($tok[2] == "git")
+            {
+                if (!empty($tok[3]))
+                    $badge = "git:".$tok[3];
+                else
+                    $badge = "git";
+                $tooltip = "Installed from GitHub";
+                $display_string = $tok[0]."-".$tok[1]."-".$tok[2];
+            } else if (substr($tok[2],0,2) == "rc")
+            {
+                $tooltip = "Release Candidate/Beta Version";
+                $badge = "rc";
+            } else if (strlen($tok[2]) == 9)
+            {
+                /* Guess that this is a commit id :D */
+                $badge = "git:".$tok[2];
+                $tooltip = "Installed from GitHub";
+                $display_string = $tok[0]."-".$tok[1];
+            }
+            $tooltip = htmlspecialchars($tooltip);
+            $display_string = htmlspecialchars($display_string);
         }
-        $return = "<span data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"$tooltip\"><code>" . $tok[1] . "</code> <div class=\"badge rounded-pill badge-dark\">" . $tok[2] . "</div></a>";
+        $return = "<span data-toggle=\"tooltip\" data-placement=\"bottom\" title=\"$tooltip\"><code>" . $display_string . "</code> <div class=\"badge rounded-pill badge-dark\">$badge</div></a>";
     }
-    if ($server->server->ulined)
+    if (isset($server->server->ulined) && $server->server->ulined)
         $return .= "<div class=\"badge rounded-pill badge-warning\">Services</div>";
     return $return;
 }
 
 function generate_html_serverinfo($server)
 {
+    global $rpc;
     ?>
     <table class="table-sm table-responsive caption-top table-hover">
         <tbody>
             <tr>
                 <th>Name</th>
-                <td colspan="2"><code><?php echo $server->name; ?></code></td>
+                <td colspan="2"><code><?php echo htmlspecialchars($server->name); ?></code></td>
             </tr><tr>
                 <th>Server ID (SID)</th>
-                <td colspan="2"><code><?php echo $server->id; ?></code></td>
+                <td colspan="2"><code><?php echo htmlspecialchars($server->id); ?></code></td>
             </tr><tr>
                 <th>Info</th>
-                <td colspan="2"><code><?php echo $server->server->info; ?></code></td>
+                <td colspan="2"><code><?php echo htmlspecialchars($server->server->info); ?></code></td>
             </tr><tr>
                 <th>Uplink</th>
-                <td colspan="2"><code><?php echo "<a href=\"".BASE_URL."servers/details.php?server=".$server->server->uplink."\">".$server->server->uplink."</a>"; ?></code></td>
+                <?php $serverlkup = (isset($server->server->uplink)) ? $rpc->server()->get($server->server->uplink) : "<span class=\"badge rounded-pill badge-info\">None</span>"; ?>
+                <td colspan="2"><code><?php echo "<a href=\"".BASE_URL."servers/details.php?server=".htmlspecialchars($serverlkup->id)."\">".htmlspecialchars($server->server->uplink)."</a>"; ?></code></td>
             </tr><tr>
                 <th>User count</th>
-                <td colspan="2"><code><?php echo $server->server->num_users; ?></code></td>
+                <td colspan="2"><code><?php echo htmlspecialchars($server->server->num_users); ?></code></td>
             </tr><tr>
                 <th>Version</th>
                 <td colspan="2"><?php echo sinfo_conv_version_string($server); ?></td>
@@ -113,16 +138,16 @@ function generate_html_modlist($srv)
         <?php
         foreach ($modules->list as $module) {
             echo "<tr>\n";
-            echo "<td><code>$module->name</code></td>";
+            echo "<td><code>".htmlspecialchars($module->name)."</code></td>";
             $desc = $module->description;
             $short_desc = substr($desc, 0, 70); // truncate to 80 chars
             if (strlen($desc) > strlen($short_desc))
                 $short_desc .= "...";
-            echo "<td><span href='#' data-toggle='tooltip' title=\"$desc\">$short_desc</span></td>";
+            echo "<td><span href='#' data-toggle='tooltip' title=\"".htmlspecialchars($desc)."\">".htmlspecialchars($short_desc)."</span></td>";
             $source = (!$module->third_party) ? "<div class=\"badge rounded-pill badge-success\">Official</div>" : "<div class=\"badge rounded-pill badge-info\">Third-Party</div>";
             echo "<td>$source</td>";
-            echo "<td>$module->author</td>";
-            echo "<td>$module->version</td>";
+            echo "<td>".htmlspecialchars($module->author)."</td>";
+            echo "<td>".htmlspecialchars($module->version)."</td>";
         }
     }
         ?>
@@ -130,4 +155,29 @@ function generate_html_modlist($srv)
     </table>
 
     <?php
+}
+
+
+function get_unreal_latest_version()
+{
+    $url = "https://www.unrealircd.org/downloads/list.json";
+    $contents = file_get_contents($url);
+    if (!$contents)
+    {
+        Message::Fail("Could not get latest version of UnrealIRCd. Please check again later.");
+        return NULL;
+    }
+    $arr = json_decode($contents, true);
+    $biggest = 0;
+    foreach($arr as $key => $value)
+    {
+        if ($key > $biggest)
+            $biggest = $key;
+    }
+    if (!$biggest)
+    {
+        Message::Fail("Could not get latest version of UnrealIRCd. Please check again later.");
+        return NULL;
+    }
+    return $arr[$biggest]['Stable']['version'];
 }
\ No newline at end of file