index.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. error_reporting(E_ALL);
  3. class db extends mysqli {
  4. private $host = 'localhost';
  5. private $user = 'ban';
  6. private $pass = 'Blubb123-';
  7. private $db = 'ban';
  8. public function __construct() {
  9. @parent::__construct($this->host, $this->user, $this->pass, $this->db);
  10. if($this->connect_errno){
  11. die($this->connect_error);
  12. }
  13. }
  14. }
  15. $ip = trim($_GET['ip']);
  16. $token = trim($_GET['token']);
  17. $action = trim($_GET['action']);
  18. $db = new db();
  19. $db->set_charset('utf8');
  20. function checkToken($token,$db) {
  21. $dbAction = $db->prepare("SELECT description FROM clients WHERE token = ?");
  22. $dbAction->bind_param('s',$token);
  23. $dbAction->execute();
  24. $dbAction->store_result();
  25. $dbAction->bind_result($desc);
  26. $dbAction->fetch();
  27. if ($dbAction->num_rows() == 1){
  28. echo "Client " . $desc;
  29. return true;
  30. }
  31. return false;
  32. }
  33. function checkAdmin($token,$db) {
  34. $dbAction = $db->prepare("SELECT description FROM clients WHERE token = ?");
  35. $dbAction->bind_param('s',$token);
  36. $dbAction->execute();
  37. $dbAction->store_result();
  38. $dbAction->bind_result($desc);
  39. $dbAction->fetch();
  40. if ($dbAction->num_rows() == 1){
  41. if($desc == 'admin') {
  42. return true;
  43. }
  44. }
  45. return false;
  46. }
  47. function set($ip,$db) {
  48. $dbAction = $db->prepare("INSERT IGNORE INTO list VALUES (?)");
  49. $dbAction->bind_param('i',ip2long($ip));
  50. return $dbAction->execute();
  51. }
  52. function islisted($ip,$db) {
  53. $dbAction = $db->prepare("SELECT ip FROM list WHERE ip = ?");
  54. $dbAction->bind_param('i',ip2long($ip));
  55. $dbAction->execute();
  56. $dbAction->store_result();
  57. if($dbAction->num_rows() == 0) {
  58. return false;
  59. }
  60. return true;
  61. }
  62. function delistCount($ip,$db) {
  63. $dbAction = $db->prepare("SELECT count FROM delist WHERE ip = ?");
  64. $dbAction->bind_param('i',ip2long($ip));
  65. $dbAction->execute();
  66. $dbAction->store_result();
  67. $dbAction->bind_result($count);
  68. $dbAction->fetch();
  69. return $count;
  70. }
  71. function delist($ip,$db) {
  72. if(!islisted($ip,$db)) {
  73. return false;
  74. }
  75. //check delisting count
  76. if (delistCount($ip,$db) > 3){
  77. echo "Fatal: ". $ip . " delisted to often!\n";
  78. return false;
  79. }
  80. //delist ip
  81. $dbAction = $db->prepare("DELETE FROM list WHERE ip = ?");
  82. $dbAction->bind_param('i',ip2long($ip));
  83. $dbAction->execute();
  84. //update delist count
  85. $dbAction = $db->prepare("INSERT INTO delist (ip) VALUES (?) ON DUPLICATE KEY UPDATE count = count + 1");
  86. $dbAction->bind_param('i',ip2long($ip));
  87. $dbAction->execute();
  88. return true;
  89. }
  90. switch($action) {
  91. case 'delist':
  92. if(delist($ip,$db)){
  93. echo "$ip delisted\n";
  94. } else {
  95. echo "$ip not delisted\n";
  96. };
  97. break;
  98. case 'blacklist':
  99. break;
  100. case 'whitelist':
  101. break;
  102. default:
  103. if (checkToken($token,$db)){
  104. if(set($ip,$db)){
  105. echo " inserted " . $ip ."\n";
  106. } else {
  107. echo " fehler\n";
  108. };
  109. } else {
  110. echo "Client token " . $token . " not registered\n";
  111. };
  112. }