index.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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',ip2long($ip));
  41. return $dbAction->execute();
  42. }
  43. function islisted($ip,$db) {
  44. $dbAction = $db->prepare("SELECT ip FROM list WHERE ip = ?");
  45. $dbAction->bind_param('i',ip2long($ip));
  46. $dbAction->execute();
  47. $dbAction->store_result();
  48. if($dbAction->num_rows() == 0) {
  49. return false;
  50. }
  51. return true;
  52. }
  53. function delistCount($ip,$db) {
  54. $dbAction = $db->prepare("SELECT count FROM delist WHERE ip = ?");
  55. $dbAction->bind_param('i',ip2long($ip));
  56. $dbAction->execute();
  57. $dbAction->store_result();
  58. $dbAction->bind_result($count);
  59. $dbAction->fetch();
  60. return $count;
  61. }
  62. function delist($ip,$db) {
  63. if(!islisted($ip,$db)) {
  64. return false;
  65. }
  66. //check delisting count
  67. if (delistCount($ip,$db) > 3){
  68. echo "Fatal: ". $ip . " delisted to often!\n";
  69. return false;
  70. }
  71. //delist ip
  72. $dbAction = $db->prepare("DELETE FROM list WHERE ip = ?");
  73. $dbAction->bind_param('i',ip2long($ip));
  74. $dbAction->execute();
  75. //update delist count
  76. $dbAction = $db->prepare("INSERT INTO delist (ip) VALUES (?) ON DUPLICATE KEY UPDATE count = count + 1");
  77. $dbAction->bind_param('i',ip2long($ip));
  78. $dbAction->execute();
  79. return true;
  80. }
  81. switch($action) {
  82. case 'delist':
  83. if(delist($ip,$db)){
  84. echo "$ip delisted\n";
  85. } else {
  86. echo "$ip not delisted\n";
  87. };
  88. break;
  89. case 'blacklist':
  90. break;
  91. default:
  92. if (checkToken($token,$db)){
  93. if(set($ip,$db)){
  94. echo " inserted " . $ip ."\n";
  95. } else {
  96. echo " fehler\n";
  97. };
  98. } else {
  99. echo "Client token " . $token . " not registered\n";
  100. };
  101. }