index.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. error_reporting(E_ALL);
  3. $ip = trim($_GET['ip']);
  4. $token = trim($_GET['token']);
  5. $action = trim($_GET['action']);
  6. $db = new mysqli('localhost', 'ban', 'Blubb123-', 'ban');
  7. if ($db->connect_errno){
  8. die($db->connect_error);
  9. }
  10. $db->set_charset('utf8');
  11. function checkToken($token,$db) {
  12. $dbAction = $db->prepare("SELECT description FROM clients WHERE token = ?");
  13. $dbAction->bind_param('s',$token);
  14. $dbAction->execute();
  15. $dbAction->store_result();
  16. $dbAction->bind_result($desc);
  17. $dbAction->fetch();
  18. if ($dbAction->num_rows() == 1){
  19. echo "Client $desc";
  20. return true;
  21. }
  22. return false;
  23. }
  24. function checkAdmin($token,$db) {
  25. $dbAction = $db->prepare("SELECT description FROM clients WHERE token = ?");
  26. $dbAction->bind_param('s',$token);
  27. $dbAction->execute();
  28. $dbAction->store_result();
  29. $dbAction->bind_result($desc);
  30. $dbAction->fetch();
  31. if ($dbAction->num_rows() == 1){
  32. if($desc == 'admin') {
  33. return true;
  34. }
  35. }
  36. return false;
  37. }
  38. function set($ip,$db) {
  39. $dbAction = $db->prepare("INSERT IGNORE INTO list VALUES (?)");
  40. $dbAction->bind_param('i',$ip);
  41. return $dbAction->execute();
  42. }
  43. function delist($ip,$db) {
  44. $dbAction = $db->prepare("INSERT INTO delist ('ip') VALUES (?) ON DUPLICATE KEY count = count + 1");
  45. $dbAction->bind_param('i',$ip);
  46. $dbAction->execute();
  47. $dbAction = $db->prepare("SELECT count FROM delist WHERE ip = ?");
  48. $dbAction->bind_param('i',$ip);
  49. $dbAction->execute();
  50. $dbAction->store_result();
  51. $dbAction->bind_result($count);
  52. $dbAction->fetch();
  53. if ($count > 3){
  54. echo "Fehler, ". long2ip($ip) . " wurde zu oft delistet";
  55. return false;
  56. }
  57. $dbAction = $db->prepare("DELETE FROM list WHERE ip = ?");
  58. $dbAction->bind_param('i',$ip);
  59. $dbAction->execute();
  60. echo long2ip($ip) . " wurde delistet";
  61. return true;
  62. }
  63. switch($action) {
  64. case 'delist':
  65. if (checkAdmin($token,$db)){
  66. if(delist(ip2long($ip),$db)){
  67. echo "$ip delisted" . PHP_EOL;
  68. } else {
  69. echo "$ip not delisted" . PHP_EOL;
  70. };
  71. } else {
  72. echo "Admin token $token not registered" . PHP_EOL;
  73. };
  74. break;
  75. case 'blacklist':
  76. break;
  77. default:
  78. if (checkToken($token,$db)){
  79. if(set(ip2long($ip),$db)){
  80. echo " inserted $ip" . PHP_EOL;
  81. } else {
  82. echo " fehler" . PHP_EOL;
  83. };
  84. } else {
  85. echo "Client token $token not registered" . PHP_EOL;
  86. };
  87. }