· 5 years ago · Mar 23, 2020, 09:42 PM
1
2$magirc->slim->get('/checknick/{nick}', function($req, $res, $args) use($magirc) {
3 return $res->withJson($magirc->service->nickCheck($args['nick']));
4});
5
6$magirc->slim->get('/channels/{chan}/users/count', function($req, $res, $args) use($magirc) {
7 echo count($magirc->service->getChannelUsers($args['chan']));
8});
9
10// External API Login
11$magirc->slim->post('/rlogin', function($req, $res, $args) use ($magirc) {
12 return $res->withJson($magirc->service->rlogin($_POST['username'], $_POST['password']));
13});
14
15$magirc->slim->get('/glogin/{username}/{password}', function($req, $res, $args) use ($magirc) {
16 return $res->withJson($magirc->service->rlogin($args['username'], $args['password']));
17});
18
19// Handle POST login/logout
20$magirc->slim->post('/login', function($req, $res, $args) use ($magirc) {
21 if ($magirc->service->login($_POST['username'], $_POST['password'])) {
22 return $res->withStatus(301)->withHeader('Location', BASE_URL.'/');
23 } else {
24 return $res->withStatus(301)->withHeader('Location', BASE_URL.'/login');
25 }
26});
27$magirc->slim->post('/ajaxlogin', function($req, $res, $args) use ($magirc) {;
28 echo json_encode($magirc->service->login($_POST['username'], $_POST['password']));
29 return $res->withHeader('Content-Type', 'application/json');
30});
31
32$magirc->slim->get('/logout', function($req, $res, $args) use ($magirc) {
33 // Unset session variables
34 if (isset($_SESSION["nick"]))
35 unset($_SESSION["nick"]);
36 // Delete the session cookie
37 if (ini_get("session.use_cookies")) {
38 $params = session_get_cookie_params();
39 setcookie(session_name(), '', time() - 42000,
40 $params["path"], $params["domain"],
41 $params["secure"], $params["httponly"]
42 );
43 }
44 // Destroy the session
45 session_destroy();
46 sleep(1);
47 // Redirect to login screen
48
49 return $res->withStatus(301)->withHeader('Location', BASE_URL)->withAddedHeader('Cache-Control', 'no-cache, no-store, must-revalidate')->withAddedHeader('Pragma', 'no-cache');
50 //return $res->withRedirect(BASE_URL, 301);
51});
52
53// Handle POST nsconfirm with Anope XMLRPC and captcha
54
55$magirc->slim->post('/nsconfirm', function($req, $res, $args) use ($magirc) {
56
57 $email;$comment;$captcha;
58 if(isset($_POST['account'])){
59 $account=$_POST['account'];
60 }if(isset($_POST['code'])){
61 $code=$_POST['code'];
62 }if(isset($_POST['g-recaptcha-response'])){
63 $captcha=$_POST['g-recaptcha-response'];
64 }
65 if(!$captcha){
66 //echo '<h2>Please check the the captcha form.</h2>';
67 return $res->withStatus(301)->withHeader('Location', BASE_URL.'/nsconfirm/'.$account.'/'.$code.'/form');
68
69 }
70 $secretKey = "6LcVlTUUAAAAAFTynIbQufKysXHTQ_rMH8NcPHsq";
71 $ip = $_SERVER['REMOTE_ADDR'];
72 $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
73 $responseKeys = json_decode($response,true);
74 if(intval($responseKeys["success"]) !== 1) {
75 echo '<h2>You are spammer ! Get the @$%K out</h2>';
76 return $res->withStatus(301)->withHeader('Location', BASE_URL.'/nsconfirm/'.$account.'/'.$code.'/form');
77
78 } else {
79 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
80 $ret = $xmlrpc->DoCommand('NickServ', $account, 'CONFIRM '.$code);
81 if ($ret && $ret["result"] == "Success") {
82 return $ret["return"];
83 } else {
84 return NULL;
85 }
86 }
87
88});
89
90
91$magirc->slim->post('/nsconfirmemail', function($req, $res, $args) use ($magirc) {
92 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
93
94 $account = $_SESSION["nick"];
95
96 $email;$comment;$captcha;
97 if(isset($_POST['code'])){
98 $code=$_POST['code'];
99 }if(isset($_POST['g-recaptcha-response'])){
100 $captcha=$_POST['g-recaptcha-response'];
101 }
102 if(!$captcha){
103 //echo '<h2>Please check the the captcha form.</h2>';
104 return $res->withStatus(301)->withHeader('Location', BASE_URL.'/nsconfirm/'.$account.'/'.$code.'/form');
105
106 }
107 $secretKey = "6LcVlTUUAAAAAFTynIbQufKysXHTQ_rMH8NcPHsq";
108 $ip = $_SERVER['REMOTE_ADDR'];
109 $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
110 $responseKeys = json_decode($response,true);
111 if(intval($responseKeys["success"]) !== 1) {
112 echo '<h2>You are spammer ! Get the @$%K out</h2>';
113 return $res->withStatus(301)->withHeader('Location', BASE_URL.'/nsconfirmemail/'.$account.'/'.$code.'/form');
114
115 } else {
116 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
117 $ret = $xmlrpc->DoCommand('NickServ', $account, 'CONFIRM '.$code);
118 if ($ret && $ret["result"] == "Success") {
119 return $ret["return"];
120 } else {
121 return NULL;
122 }
123 }
124
125});
126
127
128$magirc->slim->post('/ajaxnsconfirm', function($req, $res, $args) use ($magirc) {
129
130 $email;$comment;$captcha;
131 if(isset($_POST['account'])){
132 $account=$_POST['account'];
133 }if(isset($_POST['code'])){
134 $code=$_POST['code'];
135 }if(isset($_POST['g-recaptcha-response'])){
136 $captcha=$_POST['g-recaptcha-response'];
137 }
138 if(!$captcha){
139 echo json_encode('Please check the the captcha form.');
140 return $res->withHeader('Content-Type', 'application/json');
141 }
142 $secretKey = "6LcVlTUUAAAAAFTynIbQufKysXHTQ_rMH8NcPHsq";
143 $ip = $_SERVER['REMOTE_ADDR'];
144 $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
145 $responseKeys = json_decode($response,true);
146 if(intval($responseKeys["success"]) !== 1) {
147 echo json_encode('You are spammer ! Get the @$%K out');
148 return $res->withHeader('Content-Type', 'application/json');
149 } else {
150 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
151 $ret = $xmlrpc->DoCommand('NickServ', $account, 'CONFIRM '.$code);
152 if ($ret && $ret["result"] == "Success") {
153 echo json_encode($ret["return"]);
154 return $res->withHeader('Content-Type', 'application/json');
155 } else {
156 return NULL;
157 }
158 }
159
160});
161
162$magirc->slim->post('/ajaxnsconfirmemail', function($req, $res, $args) use ($magirc) {
163 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
164
165 $account = $_SESSION["nick"];
166
167 $email;$comment;$captcha;
168 if(isset($_POST['code'])){
169 $code=$_POST['code'];
170 }if(isset($_POST['g-recaptcha-response'])){
171 $captcha=$_POST['g-recaptcha-response'];
172 }
173 if(!$captcha){
174 echo json_encode('Please check the the captcha form.');
175 return $res->withHeader('Content-Type', 'application/json');
176 }
177 $secretKey = "6LcVlTUUAAAAAFTynIbQufKysXHTQ_rMH8NcPHsq";
178 $ip = $_SERVER['REMOTE_ADDR'];
179 $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
180 $responseKeys = json_decode($response,true);
181 if(intval($responseKeys["success"]) !== 1) {
182 echo json_encode('You are spammer ! Get the @$%K out');
183 return $res->withHeader('Content-Type', 'application/json');
184 } else {
185 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
186 $ret = $xmlrpc->DoCommand('NickServ', $account, 'CONFIRM '.$code);
187 if ($ret && $ret["result"] == "Success") {
188 echo json_encode($ret["return"]);
189 return $res->withHeader('Content-Type', 'application/json');
190 } else {
191 return NULL;
192 }
193 }
194
195});
196
197$magirc->slim->post('/ajaxnsregister', function($req, $res, $args) use ($magirc) {
198
199 $email;$comment;$captcha;
200 if(isset($_POST['account'])){
201 $account=$_POST['account'];
202 }if(isset($_POST['password'])){
203 $password=$_POST['password'];
204 }if(isset($_POST['email'])){
205 $email=$_POST['email'];
206 }
207 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
208 $ret = $xmlrpc->DoUser($account);
209 if ($ret) {
210 if (sizeof($ret) == 1) {
211 $reg = $xmlrpc->DoCommand('NickServ', $account, 'REGISTER '.$password. ' '.$email);
212 if ($reg && $reg["result"] == "Success") {
213 echo json_encode($reg["return"]);
214 return $res->withHeader('Content-Type', 'application/json');
215 } else {
216 return NULL;
217 }
218 }
219 } else {
220 return NULL;
221 }
222});
223
224$magirc->slim->post('/ajaxnsresetpass', function($req, $res, $args) use ($magirc) {
225
226 $email;$comment;$captcha;
227 if(isset($_POST['account'])){
228 $account=$_POST['account'];
229 }if(isset($_POST['password'])){
230 $password=$_POST['password'];
231 }if(isset($_POST['email'])){
232 $email=$_POST['email'];
233 }
234 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
235
236 $ret = $xmlrpc->DoCommand('NickServ', $account, 'RESETPASS '.$account. ' '.$email);
237 if ($ret && $ret["result"] == "Success") {
238 echo json_encode($ret["return"]);
239 return $res->withHeader('Content-Type', 'application/json');
240 } else {
241 return NULL;
242 }
243});
244
245$magirc->slim->post('/ajaxnsconfirmreset', function($req, $res, $args) use ($magirc) {
246
247
248 if(isset($_POST['account'])){
249 $account=$_POST['account'];
250 }if(isset($_POST['code'])){
251 $code=$_POST['code'];
252 }if(isset($_POST['password'])){
253 $password=$_POST['password'];
254 }
255
256
257 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
258 $ret = $xmlrpc->DoCommand('NickServ', $account, 'CONFIRM '.$account.' '.$code);
259 if ($ret && $ret["result"] == "Success") {
260 if (preg_match('/^Adesso sei identificato per il tuo nick(.*)/' , $ret["return"])) {
261
262 $ret = $xmlrpc->DoCommand('NickServ', $account, 'SET PASSWORD '.$password);
263 if ($ret && $ret["result"] == "Success") {
264 echo json_encode($ret["return"]);
265 return $res->withHeader('Content-Type', 'application/json');
266 } else {
267 return NULL;
268 }
269
270 } else {
271 echo json_encode($ret["return"]);
272 return $res->withHeader('Content-Type', 'application/json');
273 }
274 echo json_encode($ret["return"]);
275 return $res->withHeader('Content-Type', 'application/json');
276 } else {
277 return NULL;
278 }
279
280
281});
282
283$magirc->slim->post('/ajaxnssetpass', function($req, $res, $args) use ($magirc) {
284 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
285
286 $account = $_SESSION["nick"];
287 $password;
288 if(isset($_POST['password'])){
289 $password=$_POST['password'];
290 }
291
292 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
293
294 $ret = $xmlrpc->DoCommand('NickServ', $account, 'SET PASSWORD '.$password);
295 if ($ret && $ret["result"] == "Success") {
296 echo json_encode($ret["return"]);
297 return $res->withHeader('Content-Type', 'application/json');
298 } else {
299 return NULL;
300 }
301});
302
303$magirc->slim->get('/ajaxnsglist', function($req, $res, $args) use ($magirc) {
304 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
305
306 $account = $_SESSION["nick"];
307
308 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
309
310 $group = $xmlrpc->DoCommand('NickServ', $account, 'GLIST '.$account);
311 if ($group && $group["result"] == "Success") {
312 $object = (explode('
',$group["return"]));
313 $display = trim(strstr(strrchr(implode(' ', array_slice($object,0,1)),' '), ':', true));
314 $slice = array_slice($object,2,-2);
315 if (count($slice) > 0) {
316 $aliases = [];
317 $id = 0;
318 foreach($slice as $data) {
319 $nick = trim(strstr($data, ' ', true));
320 $expire = trim(strstr($data, ' ', false));
321 if ($expire == 'does not expire') {
322 $expire = $expire;
323 } else {
324 $expire = trim(strstr($expire, '(', true));
325 }
326 $id++;
327 $aliases[] = [ 'id' => $id, 'nick' => $nick, 'expire' => $expire, 'display' => ($nick == $display?true:false)];
328 }
329 return $res->withJson(['data' => $aliases]);
330 } else {
331 return NULL;
332 }
333 }
334
335});
336
337$magirc->slim->get('/ajaxnsinfo', function($req, $res, $args) use ($magirc) {
338 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
339 $account = $_SESSION["nick"];
340 return $res->withJson($magirc->service->getAccount($account));
341});
342
343$magirc->slim->get('/test', function($req, $res, $args) use ($magirc) {
344 //if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
345 return $res->withJson($magirc->service->CheckAccountStats("Antani"));
346});
347
348$magirc->slim->post('/ajaxnsdrop', function($req, $res, $args) use ($magirc) {
349 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
350
351 $account = $_SESSION["nick"];
352 $password;
353
354 if(isset($_POST['password'])){
355 $password=$_POST['password'];
356 }
357
358 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
359 $check = $xmlrpc->checkAuthentication($account, $password);
360 if ($check == $account) {
361 $group = $xmlrpc->DoCommand('NickServ', $account, 'GLIST '.$account);
362 if ($group && $group["result"] == "Success") {
363 $object = (explode('
',$group["return"]));
364 $slice = array_slice($object,2,-2);
365 $numalias = count($slice);
366 if ($numalias > 1) {
367 echo json_encode('Risultano presenti '.$numalias.' alias registrati. <a href="/account">Elimina tutti gli alias</a> prima di procedere con la cancellazione dell\'account!');
368 return $res->withHeader('Content-Type', 'application/json');
369 } else {
370 $ret = $xmlrpc->DoCommand('NickServ', $account, 'DROP '.$account);
371 if ($ret && $ret["result"] == "Success") {
372 echo json_encode($ret["return"]);
373 return $res->withHeader('Content-Type', 'application/json');
374
375 } else {
376 return NULL;
377 }
378 }
379 }
380
381 } else {
382 echo json_encode('Password Errata!'.$check["return"]);
383 return $res->withHeader('Content-Type', 'application/json');
384 }
385
386
387});
388
389$magirc->slim->post('/ajaxaliasdrop', function($req, $res, $args) use ($magirc) {
390 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
391
392 $account = $_SESSION["nick"];
393 $alias;
394 if(isset($_POST['alias'])){
395 $alias=$_POST['alias'];
396 }
397
398 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
399
400
401 $ret = $xmlrpc->DoCommand('NickServ', $account, 'DROP '.$alias);
402 if ($ret && $ret["result"] == "Success") {
403 echo json_encode($ret["return"]);
404 return $res->withHeader('Content-Type', 'application/json');
405
406 } else {
407 return NULL;
408 }
409
410});
411
412
413$magirc->slim->post('/ajaxnsgroup', function($req, $res, $args) use ($magirc) {
414 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
415
416 $account = $_SESSION["nick"];
417 $alias;
418 if(isset($_POST['alias'])){
419 $alias=$_POST['alias'];
420 }if(isset($_POST['password'])){
421 $password=$_POST['password'];
422 }
423
424 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
425
426
427 $check = $xmlrpc->DoUser($alias);
428 if ($check) {
429 if (sizeof($check) == 1) {
430
431 $ret = $xmlrpc->DoCommand('NickServ', $alias, 'GROUP '.$account.' '.$password);
432 if ($ret && $ret["result"] == "Success") {
433 echo json_encode($ret["return"]);
434 return $res->withHeader('Content-Type', 'application/json');
435 } else {
436 return NULL;
437 }
438
439 } else {
440 echo json_encode('Non puoi aggiungere un alias di un nick connesso a IRC dal pannello!');
441 return $res->withHeader('Content-Type', 'application/json');
442 }
443 } else {
444 echo json_encode('Non puoi aggiungere un alias di un nick connesso a IRC dal pannello!');
445 return $res->withHeader('Content-Type', 'application/json');
446 }
447
448});
449
450$magirc->slim->post('/ajaxnssetdisplay', function($req, $res, $args) use ($magirc) {
451 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
452
453 $account = $_SESSION["nick"];
454 $alias;
455 if(isset($_POST['alias'])){
456 $alias=$_POST['alias'];
457 }
458
459 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
460
461 $ret = $xmlrpc->DoCommand('NickServ', $account, 'SET DISPLAY '.$alias);
462 if ($ret && $ret["result"] == "Success") {
463 echo json_encode($ret["return"]);
464 return $res->withHeader('Content-Type', 'application/json');
465 } else {
466 return NULL;
467 }
468});
469
470$magirc->slim->post('/ajaxnssetemail', function($req, $res, $args) use ($magirc) {
471 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
472
473 $account = $_SESSION["nick"];
474 $alias;
475 if(isset($_POST['email'])){
476 $email=$_POST['email'];
477 }
478
479 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
480
481 $ret = $xmlrpc->DoCommand('NickServ', $account, 'SET EMAIL '.$email);
482 if ($ret && $ret["result"] == "Success") {
483 echo json_encode($ret["return"]);
484 return $res->withHeader('Content-Type', 'application/json');
485 } else {
486 return NULL;
487 }
488});
489
490$magirc->slim->post('/ajaxnsset', function($req, $res, $args) use ($magirc) {
491 if (is_null($_SESSION["uid"])) { $magirc->slim->halt(403, "HTTP 403 Access Denied"); }
492
493 $account = $_SESSION["nick"];
494 $alias;
495 if(isset($_POST['option'])){
496 $option=$_POST['option'];
497 }if(isset($_POST['param'])){
498 $param=$_POST['param'];
499 }
500
501 $xmlrpc = new AnopeXMLRPC("https://network.chaat.fr/xmlrpc");
502
503 $ret = $xmlrpc->DoCommand('NickServ', $account, 'SET '.$option.' '.$param);
504 if ($ret && $ret["result"] == "Success") {
505 echo json_encode($ret["return"]);
506 return $res->withHeader('Content-Type', 'application/json');
507 } else {
508 return NULL;
509 }
510});