]>
jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - api/search.php
9b78452e86728b221148c2cb895aca8049883e14
3 require_once('common_api.php');
8 if (!$_GET || !isset($_GET['search']))
10 echo json_encode(["error" => "No search query"]);
13 $search_term = $_GET['search'];
14 $users = $rpc->user()->getAll();
15 $chans = $rpc->channel()->getAll(2);
16 $logs = $rpc->log()->getAll();
17 $servers = $rpc->server()->getAll();
18 $server_bans = $rpc->serverban()->getAll();
19 $excepts = $rpc->serverbanexception()->getAll();
20 $spamfilter = $rpc->spamfilter()->getAll();
21 $name_bans = $rpc->nameban()->getAll();
27 "channel_invites" => [],
28 "channel_excepts" => [],
36 function strcasestr($haystack, $needle) : bool
38 $needle = strtolower($needle);
39 $haystack = strtolower($haystack);
40 $needle = preg_quote($needle, '/');
41 $needle = str_replace('\*', '.*', $needle);
42 $pattern = '/.*' . $needle . '.*' . '/';
44 return preg_match($pattern, $haystack) === 1;
46 foreach ($users as $u)
48 if (strcasestr($u->name
,$search_term))
54 $search_results['users'][] = $o;
56 if (strcasestr($u->details
,$search_term))
60 $o->data
= $u->details
;
61 $o->label
= "userhost";
62 $search_results['users'][] = $o;
64 if (strcasestr($u->user
->realname
,$search_term))
68 $o->data
= $u->user
->realname
;
70 $search_results['users'][] = $o;
72 if (@strcasestr($u->user
->account
,$search_term))
76 $o->data
= $u->account
;
77 $o->label
= "account";
78 $search_results['users'][] = $o;
82 error_log("It's set");
83 if (@strcasestr($u->geoip
->asn
,$search_term))
87 $o->data
= $u->geoip
->asn
;
89 $search_results['users'][] = $o;
91 if (@strcasestr($u->geoip
->asname
,$search_term))
95 $o->data
= $u->geoip
->asname
;
96 $o->label
= "ASN Name";
97 $search_results['users'][] = $o;
99 if (@strcasestr($u->geoip
->country_code
,$search_term))
103 $o->data
= $u->geoip
->country_code
;
104 $o->label
= "Country Code";
105 $search_results['users'][] = $o;
109 error_log(json_encode($u));
112 foreach ($chans as $c)
114 if (strcasestr($c->name
,$search_term))
116 $c->label
= "channel name";
117 $search_results['channels'][] = $c;
119 if (isset($c->topic
) && strcasestr($c->topic
,$search_term))
121 $c->label
= "channel topic";
122 $search_results['channels'][] = $c;
126 foreach ($c->bans
as $i)
128 if (!strcasestr($i->name
, $search_term))
132 $new->name
= $c->name
;
133 $new->topic
= $i->name
;
134 $new->label
= "ban (+b)";
135 $search_results['channels'][] = $new;
136 error_log("$new->label for $i->name");
139 if (isset($c->ban_exemptions
))
141 foreach ($c->ban_exemptions
as $i)
143 if (!strcasestr($i->name
, $search_term))
147 $new->name
= $c->name
;
148 $new->topic
= $i->name
;
149 $new->label
= "exempt (+e)";
150 $search_results['channels'][] = $new;
151 error_log("$new->label for $i->name");
154 if (isset($c->invite_exceptions
))
156 foreach ($c->invite_exceptions
as $i)
158 if (!strcasestr($i->name
, $search_term))
162 $new->name
= $c->name
;
163 $new->topic
= $i->name
;
164 $new->label
= "invite (+I)";
165 $search_results['channels'][] = $new;
169 foreach ($logs as $l)
170 if (strcasestr($l->msg
,$search_term))
171 $search_results['logs'][] = $l;
173 foreach ($servers as $s)
174 if (strcasestr($s->name
, $search_term))
175 $search_results['servers'][] = $s;
177 foreach ($server_bans as $ban)
180 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
183 $o->label
= $ban->type_string
;
184 $o->name
= $ban->name
;
185 $o->data
= $ban->reason
;
186 $search_results['server_bans'][] = $o;
188 elseif (strstr($ban->name
,$search_term))
191 $o->label
= $ban->type_string
;
192 $o->name
= "<code>$ban->name</code>";
193 $o->data
= $ban->reason
;
194 $search_results['server_bans'][] = $o;
197 elseif (strcasestr($ban->reason
,$search_term))
200 $o->label
= $ban->type_string
." reason";
201 $o->name
= "<code>$ban->name</code>";
202 $o->data
= $ban->reason
;
203 $search_results['server_bans'][] = $o;
207 foreach ($excepts as $ban)
209 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
212 $o->label
= $ban->type_string
;
213 $o->name
= $ban->name
;
214 $o->data
= $ban->reason
;
215 $search_results['excepts'][] = $o;
217 elseif (strstr($ban->name
,$search_term))
220 $o->label
= $ban->type_string
;
221 $o->name
= "<code>$ban->name</code>";
222 $o->data
= $ban->reason
;
223 $search_results['excepts'][] = $o;
225 elseif (strcasestr($ban->reason
,$search_term))
228 $o->label
= $ban->type_string
." reason";
229 $o->name
= $ban->name
;
230 $o->data
= $ban->reason
;
231 $search_results['excepts'][] = $o;
236 foreach ($name_bans as $ban)
238 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
241 $o->label
= $ban->type_string
;
242 $o->name
= $ban->name
;
243 $o->data
= $ban->reason
;
244 $search_results['name_bans'][] = $o;
246 elseif (strstr($ban->name
,$search_term))
249 $o->label
= $ban->type_string
;
250 $o->name
= "<code>$ban->name</code>";
251 $o->data
= $ban->reason
;
252 $search_results['name_bans'][] = $o;
254 elseif (strcasestr($ban->reason
,$search_term))
257 $o->label
= $ban->type_string
." reason";
258 $o->name
= $ban->name
;
259 $o->data
= $ban->reason
;
260 $search_results['name_bans'][] = $o;
264 foreach ($spamfilter as $ban)
266 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
269 $o->label
= $ban->type_string
;
270 $o->name
= $ban->name
;
271 $o->data
= $ban->reason
;
272 $search_results['spamfilter'][] = $o;
274 elseif (strstr($ban->name
,$search_term))
277 $o->label
= $ban->type_string
;
278 $o->name
= "<code>$ban->name</code>";
279 $o->data
= $ban->reason
;
280 $search_results['spamfilter'][] = $o;
282 elseif (strcasestr($ban->reason
,$search_term))
285 $o->label
= $ban->type_string
." reason";
286 $o->name
= $ban->name
;
287 $o->data
= $ban->reason
;
288 $search_results['spamfilter'][] = $o;
294 echo json_encode($search_results);