2 require_once "inc/common.php";
3 require_once "Classes/class-checkup.php";
4 if (!isset($config['unrealircd']))
6 $redirect = get_config("base_url")."settings/rpc-servers.php";
7 header('Location: ' . $redirect);
11 require_once "inc/header.php";
14 <div
class="row ml-0">
15 <h2
>Network Overview
</h2
>
16 <span
class="badge bg-danger text-light ml-4 pl-2 pr-2 rounded-pill" style
="height:fit-content">LIVE
</span
>
17 <?php
checkup_widget(); ?>
21 /* What if someone wants to add their own stats... */
22 Hook
::run(HOOKTYPE_PRE_OVERVIEW_CARD
, $array_of_stats);
24 /* This makes sure that a plugin which called the parameter
25 * by reference can add/update the stats for display here.
27 $stats = (object) $array_of_stats;
29 Hook
::run(HOOKTYPE_GET_USER_LIST
, $userlist);
30 $num_of_panel_admins = count($userlist);
39 .card
-container a
.card
:hover { opacity
: 0.8; transition
: opacity
0.2s ease
-in
-out
; }
40 .card
-container
.card
{
45 background
-image
: url('https://cdn.wallpapersafari.com/34/98/yznZmQ.jpg');
46 background
-size
: cover
;
48 .card
-container
.card
-body i
{
53 .card
-container
.card
:hover
{
54 text
-decoration
: none
;
57 @keyframes rotateEffect
{
58 0% { transform
: rotateX(0deg
); }
59 50% { transform
: rotateX(180deg
); }
60 100% { transform
: rotateX(0deg
); }
64 animation
: rotateEffect
0.5s ease
;
67 .frosted
-glass
-success
{
68 /* From https://css.glass */
69 background
: rgba(63, 162, 36, 0.73);
70 box
-shadow
: 0 4px
30px
rgba(0, 0, 0, 0.1);
71 backdrop
-filter
: blur(9.8px
);
72 -webkit
-backdrop
-filter
: blur(9.8px
);
75 /* From https://css.glass */
76 background
: rgba(57, 127, 207, 0.73);
77 box
-shadow
: 0 4px
30px
rgba(0, 0, 0, 0.1);
78 backdrop
-filter
: blur(9.8px
);
79 -webkit
-backdrop
-filter
: blur(9.8px
);
81 .frosted
-glass
-danger
{
82 /* From https://css.glass */
83 background
: rgba(207, 57, 57, 0.73);
84 box
-shadow
: 0 4px
30px
rgba(0, 0, 0, 0.1);
85 backdrop
-filter
: blur(9.8px
);
86 -webkit
-backdrop
-filter
: blur(9.8px
);
88 .frosted
-glass
-warning
{
89 /* From https://css.glass */
90 background
: rgba(207, 194, 57, 0.73);
91 box
-shadow
: 0 4px
30px
rgba(0, 0, 0, 0.1);
92 backdrop
-filter
: blur(9.8px
);
93 -webkit
-backdrop
-filter
: blur(9.8px
);
95 .frosted
-glass
-secondary
{
96 /* From https://css.glass */
97 background
: rgba(75, 75, 75, 0.73);
98 box
-shadow
: 0 4px
30px
rgba(0, 0, 0, 0.1);
99 backdrop
-filter
: blur(9.8px
);
100 -webkit
-backdrop
-filter
: blur(9.8px
);
104 <div
class="container card-container ml-1">
106 <div
class="row mt-3">
107 <div
class="col-sm mb-3">
108 <a
class="card frosted-glass-success text-center" href
="<?php echo get_config("base_url
"); ?>users/">
109 <div
class="card-body text-white">
110 <div
class="row text-center">
111 <span id
="userRecord" class="position-absolute badge rounded-pill badge-warning" hidden
>
112 <?php
echo "Record: "; ?>
116 <i aria
-hidden
="true" class="fa fa-users fa-2x"></i
>
119 <h5 id
="stats_user_total" class="display-4 numberDisplay"></h5
>
120 <h5
class="display-5">Users Online
</h5
>
127 <div
class="col-sm mb-3">
128 <a
class="card frosted-glass-info text-center" href
="<?php echo get_config("base_url
"); ?>channels/">
129 <div
class="card-body text-white">
130 <div
class="row text-center">
133 <i aria
-hidden
="true" class="fa fa-hashtag fa-2x"></i
>
136 <h5 id
="stats_channel_total" class="display-4 numberDisplay"></h5
>
137 <h5
class="display-5">Channels
</h5
>
144 <div
class="col-sm mb-3">
145 <a
class="card frosted-glass-warning text-center" href
="<?php echo get_config("base_url
"); ?>users/">
146 <div
class="card-body text-dark">
147 <div
class="row text-center">
150 <i aria
-hidden
="true" class="fa fa-shield-halved fa-2x"></i
>
153 <h5 id
="stats_oper_total" class="display-4 numberDisplay"></h5
>
154 <h5
class="display-5" style
="margin-top: -3px">Operators
</h5
>
155 <h5 style
="font-size: 10px; margin-top:-12px">View in Users
></h5
>
162 <div
class="col-sm mb-3">
163 <a
class="card frosted-glass-secondary text-center" href
="<?php echo get_config("base_url
"); ?>servers/">
164 <div
class="card-body text-white">
165 <div
class="row text-center">
168 <i aria
-hidden
="true" class="fa fa-network-wired fa-2x"></i
>
171 <h5 id
="stats_server_total" class="display-4 numberDisplay"></h5
>
172 <h5
class="display-5">Servers
</h5
>
181 <div
class="container card-container ml-1">
184 <div
class="col-sm mb-3">
185 <a
class="card frosted-glass-danger text-center" href
="<?php echo get_config("base_url
"); ?>server-bans/">
186 <div
class="card-body text-white">
187 <div
class="row text-center">
190 <i aria
-hidden
="true" class="fa fa-ban fa-2x"></i
>
193 <h5 id
="num_server_bans" class="display-4 numberDisplay"></h5
>
194 <h5
class="display-5">Server Bans
</h5
>
201 <div
class="col-sm mb-3">
202 <a
class="card frosted-glass-secondary text-center" href
="<?php echo get_config("base_url
"); ?>spamfilter.php/">
203 <div
class="card-body text-white">
204 <div
class="row text-center">
207 <i aria
-hidden
="true" class="fa fa-filter fa-2x"></i
>
210 <h5 id
="num_spamfilter_entries" class="display-4 numberDisplay"></h5
>
211 <h5
class="display-5">Spamfilter
</h5
>
218 <div
class="col-sm mb-3">
219 <a
class="card frosted-glass-info text-center" href
="<?php echo get_config("base_url
"); ?>server-bans/ban-exceptions.php">
220 <div
class="card-body text-white">
221 <div
class="row text-center">
224 <i aria
-hidden
="true" class="fa fa-door-open fa-2x"></i
>
227 <h5 id
="num_ban_exceptions" class="display-4 numberDisplay"></h5
>
228 <h5
class="display-5">Server Ban Exceptions
</h5
>
235 <div
class="col-sm mb-3">
236 <a
class="card frosted-glass-success text-center" href
="<?php echo get_config("base_url
"); ?>servers">
237 <div
class="card-body text-white">
238 <div
class="row text-center">
241 <i aria
-hidden
="true" class="fa fa-database fa-2x"></i
>
244 <h5 id
="stats_uline_total" class="display-4 numberDisplay"></h5
>
245 <h5
class="display-5" style
="margin-top: -3px">Services Online
</h5
>
246 <h5 style
="font-size: 10px; margin-top:-12px">View in Servers
></h5
>
257 /* Last time stats were updated */
260 function updateStats(e
)
264 data
= JSON
.parse(e
.data
);
268 stats_tick
= Date
.now()
270 document
.getElementById("userRecord").innerHTML
= "Record: "+data
.user
.record
;
271 document
.getElementById("stats_user_total").innerHTML
= data
.user
.total
;
272 document
.getElementById("stats_user_total").classList
.remove('numberDisplay');
273 document
.getElementById("stats_user_total").classList
.add('numberDisplay');
274 document
.getElementById("stats_channel_total").innerHTML
= data
.channel
.total
;
275 document
.getElementById("stats_oper_total").innerHTML
= data
.user
.oper
;
276 document
.getElementById("stats_server_total").innerHTML
= data
.server
.total
;
277 document
.getElementById("num_server_bans").innerHTML
= data
.server_ban
.server_ban
;
278 document
.getElementById("num_spamfilter_entries").innerHTML
= data
.server_ban
.spamfilter
;
279 document
.getElementById("num_ban_exceptions").innerHTML
= data
.server_ban
.server_ban_exception
;
280 document
.getElementById("stats_uline_total").innerHTML
= data
.user
.ulined +
"/" + data
.server
.ulined
;
282 function checkStatsOutdated()
284 setTimeout(checkStatsOutdated
, 2000);
285 if (Date
.now() - stats_tick
> 10000)
286 document
.getElementById("live_stats").style
.visibility
= 'hidden';
288 setTimeout(checkStatsOutdated
, 2000);
292 if (!!window
.EventSource
) {
293 var source
= new EventSource('api/overview.php');
294 source
.addEventListener('message', updateStats
, false);
298 //setInterval(updateStats, 1000); // Update stats every second
299 // ^ commented out but may want to restart initStats() when connection is lost.
302 window
.addEventListener('resize', function() {
303 var containers
= document
.querySelectorAll('.card-container');
304 var width
= window
.innerWidth
;
307 containers
.forEach((container
) => {
308 container
.removeAttribute('style');
313 containers
.forEach((container
) => {
314 container
.style
.marginLeft
= "40px";
315 container
.style
.marginTop
= "30px";
322 <div
class="container card-container card-container ml-1">
325 <div
class="col-sm mb-3">
326 <a
class="card frosted-glass-success text-center" href
="<?php echo get_config("base_url
"); ?>settings">
327 <div
class="card-body text-white">
328 <div
class="row text-center">
331 <i aria
-hidden
="true" class="fa fa-lock-open fa-2x"></i
>
334 <h5
class="display-4 numberDisplay"><?php
echo $num_of_panel_admins; ?></h5
>
335 <h5
class="display-5">Panel Accounts
</h5
>
342 <div
class="col-sm mb-3">
343 <a
class="card frosted-glass-info text-center" href
="<?php echo get_config("base_url
"); ?>settings/plugins.php">
344 <div
class="card-body text-light">
345 <div
class="row text-center">
348 <i aria
-hidden
="true" class="fa fa-plug fa-2x"></i
>
351 <h5
class="display-4 numberDisplay"><?php
echo count(Plugins
::$list); ?></h5
>
352 <h5
class="display-5">Plugins
</h5
>
363 Hook
::run(HOOKTYPE_OVERVIEW_CARD
, $stats);
365 require_once "inc/footer.php";