auth.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. $data = false;
  3. function getBannedUsers($string){
  4. if (strpos($string, ',') !== false) {
  5. $banned = explode(",", $string);
  6. }else{
  7. $banned = array($string);
  8. }
  9. return $banned;
  10. }
  11. function getWhitelist($string){
  12. if (strpos($string, ',') !== false) {
  13. $whitelist = explode(",", $string);
  14. }else{
  15. $whitelist = array($string);
  16. }
  17. foreach($whitelist as &$ip){
  18. $ip = is_numeric(substr($ip, 0, 1)) ? $ip : gethostbyname($ip);
  19. }
  20. return $whitelist;
  21. }
  22. if (isset($_GET['ban'])) : $ban = strtoupper($_GET['ban']); else : $ban = ""; endif;
  23. if (isset($_GET['whitelist'])) : $whitelist = strtoupper($_GET['whitelist']); else : $whitelist = ""; endif;
  24. $currentIP = $_SERVER['REMOTE_ADDR'];
  25. require_once("user.php");
  26. $USER = new User("registration_callback");
  27. if (isset($_GET['admin'])) :
  28. if($USER->authenticated && $USER->role == "admin" && !in_array(strtoupper($USER->username), getBannedUsers($ban))) :
  29. exit(http_response_code(200));
  30. else :
  31. exit(http_response_code(401));
  32. endif;
  33. elseif (isset($_GET['user'])) :
  34. if($USER->authenticated && !in_array(strtoupper($USER->username), getBannedUsers($ban))) :
  35. exit(http_response_code(200));
  36. else :
  37. exit(http_response_code(401));
  38. endif;
  39. elseif (isset($_GET['whitelist'])) :
  40. if(in_array($currentIP, getWhitelist($whitelist))) :
  41. exit(http_response_code(200));
  42. else :
  43. exit(http_response_code(401));
  44. endif;
  45. elseif (!isset($_GET['user']) && !isset($_GET['admin']) && !isset($_GET['whitelist'])) :
  46. exit(http_response_code(401));
  47. endif;
  48. ?>