index.php 3.2 KB

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