index.php 3.2 KB

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