]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | require_once "common.php"; | |
3 | require_once "connection.php"; | |
4 | require_once "header.php"; | |
5 | ||
6 | $stats = $rpc->query("stats.get", []); | |
7 | ?> | |
8 | ||
9 | <h2>Network Overview</h2> | |
10 | ||
11 | <?php | |
12 | $array_of_stats = (array)$stats; | |
13 | ||
14 | /* What if someone wants to add their own stats... */ | |
15 | Hook::run(HOOKTYPE_PRE_OVERVIEW_CARD, $array_of_stats); | |
16 | ||
17 | /* This makes sure that a plugin which called the parameter | |
18 | * by reference can add/update the stats for display here. | |
19 | */ | |
20 | $stats = (object) $array_of_stats; | |
21 | ||
22 | $userlist = []; | |
23 | Hook::run(HOOKTYPE_GET_USER_LIST, $userlist); | |
24 | $num_of_panel_admins = count($userlist); | |
25 | ||
26 | ?> | |
27 | <div class="container"> | |
28 | ||
29 | <div class="row mt-3"> | |
30 | <div class="col-sm mb-3"> | |
31 | <div class="card text-center"> | |
32 | <div class="card-header bg-success text-white"> | |
33 | <div class="row"> | |
34 | <div class="col"> | |
35 | <i class="fa fa-users fa-3x"></i><span class="position-absolute badge rounded-pill badge-warning"> | |
36 | <?php echo "Record: ".$stats->user->record; ?> | |
37 | </span> | |
38 | </div> | |
39 | <div class="col"> | |
40 | <h3 id="stats_user_total" class="display-4"><?php echo $stats->user->total; ?></h3> | |
41 | </div> | |
42 | </div> | |
43 | </div> | |
44 | <div class="card-body"> | |
45 | <div class="row"> | |
46 | <div class="col"> | |
47 | <h6>Users Online</h6> | |
48 | </div> | |
49 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>users">View</a></div> | |
50 | </div> | |
51 | </div> | |
52 | </div> | |
53 | ||
54 | ||
55 | </div> | |
56 | <div class="col-sm mb-3"> | |
57 | <div class="card text-center"> | |
58 | <div class="card-header bg-primary text-white"> | |
59 | <div class="row"> | |
60 | <div class="col"> | |
61 | <i class="fa fa-hashtag fa-3x"></i> | |
62 | </div> | |
63 | <div class="col"> | |
64 | <h3 id="stats_channel_total" class="display-4"><?php echo $stats->channel->total; ?></h3> | |
65 | </div> | |
66 | </div> | |
67 | </div> | |
68 | <div class="card-body"> | |
69 | <div class="row"> | |
70 | <div class="col"> | |
71 | <h6>Channels</h6> | |
72 | </div> | |
73 | <div class="col"><a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>channels">View</a></div> | |
74 | </div> | |
75 | </div> | |
76 | </div> | |
77 | </div> | |
78 | <div class="col-sm mb-3"> | |
79 | <div class="card text-center"> | |
80 | <div class="card-header bg-warning"> | |
81 | <div class="row"> | |
82 | <div class="col"> | |
83 | <i class="fa fa-shield-halved fa-3x"></i> | |
84 | </div> | |
85 | <div class="col"> | |
86 | <h3 id="stats_oper_total" class="display-4"><?php echo $stats->user->oper; ?></h3> | |
87 | </div> | |
88 | </div> | |
89 | </div> | |
90 | <div class="card-body"> | |
91 | <div class="row"> | |
92 | <div class="col"> | |
93 | <h6>Opers</h6> | |
94 | </div> | |
95 | <div class="col"><a class="btn btn-primary" href="<?php echo get_config("base_url")."users/?operonly"; ?>">View</a></div> | |
96 | </div> | |
97 | </div> | |
98 | </div> | |
99 | </div> | |
100 | ||
101 | <div class="col-sm mb-3"> | |
102 | <div class="card text-center"> | |
103 | <div class="card-header bg-secondary text-white"> | |
104 | <div class="row"> | |
105 | <div class="col"> | |
106 | <i class="fa fa-network-wired fa-3x"></i> | |
107 | </div> | |
108 | <div class="col"> | |
109 | <h3 id="stats_server_total" class="display-4"><?php echo $stats->server->total; ?></h3> | |
110 | </div> | |
111 | </div> | |
112 | </div> | |
113 | <div class="card-body"> | |
114 | <div class="row"> | |
115 | <div class="col"> | |
116 | <h6>Servers</h6> | |
117 | </div> | |
118 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>servers">View</a></div> | |
119 | </div> | |
120 | </div> | |
121 | </div> | |
122 | </div> | |
123 | </div> | |
124 | </div> | |
125 | <div class="container mt-3"> | |
126 | ||
127 | <div class="row"> | |
128 | <div class="col-sm mb-3"> | |
129 | <div class="card text-center"> | |
130 | <div class="card-header bg-danger text-white"> | |
131 | <div class="row"> | |
132 | <div class="col"> | |
133 | <i class="fa fa-ban fa-3x"></i> | |
134 | </div> | |
135 | <div class="col"> | |
136 | <h3 id="num_server_bans" class="display-4"><?php echo $stats->server_ban->server_ban; ?></h3> | |
137 | </div> | |
138 | </div> | |
139 | </div> | |
140 | <div class="card-body"> | |
141 | <div class="row"> | |
142 | <div class="col"> | |
143 | <h6>Server Bans</h6> | |
144 | </div> | |
145 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>server-bans">View</a></div> | |
146 | </div> | |
147 | </div> | |
148 | </div> | |
149 | </div> | |
150 | <div class="col-sm mb-3"> | |
151 | <div class="card text-center"> | |
152 | <div class="card-header bg-secondary text-white"> | |
153 | <div class="row"> | |
154 | <div class="col"> | |
155 | <i class="fa fa-filter fa-3x"></i> | |
156 | </div> | |
157 | <div class="col"> | |
158 | <h3 id="num_spamfilter_entries" class="display-4"><?php echo $stats->server_ban->spamfilter; ?></h3> | |
159 | </div> | |
160 | </div> | |
161 | </div> | |
162 | <div class="card-body"> | |
163 | <div class="row"> | |
164 | <div class="col"> | |
165 | <h6>Spamfilter</h6> | |
166 | </div> | |
167 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>spamfilter.php">View</a></div> | |
168 | </div> | |
169 | </div> | |
170 | </div> | |
171 | </div> | |
172 | <div class="col-sm mb-3"> | |
173 | <div class="card text-center"> | |
174 | <div class="card-header bg-primary text-white"> | |
175 | <div class="row"> | |
176 | <div class="col"> | |
177 | <i class="fa fa-door-open fa-3x"></i> | |
178 | </div> | |
179 | <div class="col"> | |
180 | <h3 id="num_ban_exceptions" class="display-4"><?php echo $stats->server_ban->server_ban_exception; ?></h3> | |
181 | </div> | |
182 | </div> | |
183 | </div> | |
184 | ||
185 | <div class="card-body"> | |
186 | <div class="row"> | |
187 | <div class="col"> | |
188 | <h6>Server Ban Exceptions</h6> | |
189 | </div> | |
190 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>server-bans/ban-exceptions.php">View</a></div> | |
191 | </div> | |
192 | </div> | |
193 | </div> | |
194 | </div> | |
195 | <?php | |
196 | if ($stats->server->ulined) { | |
197 | $bg = "bg-success"; | |
198 | $tooltip = "Users / Servers"; | |
199 | } | |
200 | else | |
201 | $bg = "bg-warning"; | |
202 | ?> | |
203 | <div class="col-sm mb-3"> | |
204 | <div class="card text-center"> | |
205 | <div class="card-header <?php echo $bg; ?> text-white"> | |
206 | <div class="row"> | |
207 | <div class="col"> | |
208 | <i class="fa fa-database fa-3x"> </i> | |
209 | </div> | |
210 | <div class="col"> | |
211 | <span data-toggle="tooltip" title="<?php echo $tooltip; ?>" style="border-bottom: 1px dotted #000000"> | |
212 | <h3 id="stats_uline_total" class="display-4"><?php echo $stats->user->ulined; ?>/<?php echo $stats->server->ulined; ?></h3> | |
213 | </div> | |
214 | </div> | |
215 | </div> | |
216 | <div class="card-body"> | |
217 | <div class="row"> | |
218 | <div class="col"> | |
219 | <h6>Services Online</h6> | |
220 | </div> | |
221 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url")."users/?servicesonly"; ?>">View</a></div> | |
222 | </div> | |
223 | </div> | |
224 | ||
225 | </div> | |
226 | </div> | |
227 | </div> | |
228 | </div> | |
229 | ||
230 | ||
231 | <script> | |
232 | function updateStats() { | |
233 | var xhttp = new XMLHttpRequest(); | |
234 | xhttp.onreadystatechange = function() { | |
235 | if (this.readyState == 4 && this.status == 200) { | |
236 | var data = JSON.parse(this.responseText); | |
237 | document.getElementById("stats_user_total").innerHTML = data.user.total; | |
238 | document.getElementById("stats_channel_total").innerHTML = data.channel.total; | |
239 | document.getElementById("stats_oper_total").innerHTML = data.user.oper; | |
240 | document.getElementById("stats_server_total").innerHTML = data.server.total; | |
241 | document.getElementById("num_server_bans").innerHTML = data.server_ban.server_ban; | |
242 | document.getElementById("num_spamfilter_entries").innerHTML = data.server_ban.spamfilter; | |
243 | document.getElementById("num_ban_exceptions").innerHTML = data.server_ban.server_ban_exception; | |
244 | document.getElementById("stats_uline_total").innerHTML = data.user.ulined + "/" + data.server.ulined; | |
245 | } | |
246 | }; | |
247 | xhttp.open("GET", "api/overview.php", true); | |
248 | xhttp.send(); | |
249 | } | |
250 | updateStats(); | |
251 | setInterval(updateStats, 1000); // Update stats every second | |
252 | </script> | |
253 | ||
254 | <div class="container mt-3"> | |
255 | ||
256 | <div class="row"> | |
257 | <div class="col-sm-3"> | |
258 | <div class="card text-center"> | |
259 | <div class="card-header bg-success text-white"> | |
260 | <div class="row"> | |
261 | <div class="col"> | |
262 | <i class="fa fa-lock-open fa-3x"></i> | |
263 | </div> | |
264 | <div class="col"> | |
265 | <h3 class="display-4"><?php echo $num_of_panel_admins; ?></h3> | |
266 | </div> | |
267 | </div> | |
268 | </div> | |
269 | <div class="card-body"> | |
270 | <div class="row"> | |
271 | <div class="col"> | |
272 | <h6>Panel Access</h6> | |
273 | </div> | |
274 | <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>settings">View</a></div> | |
275 | </div> | |
276 | </div> | |
277 | </div> | |
278 | </div> | |
279 | </div> | |
280 | </div> | |
281 | <?php | |
282 | ||
283 | Hook::run(HOOKTYPE_OVERVIEW_CARD, $stats); | |
284 | ||
285 | require_once "footer.php"; |