andre 4 years ago
parent
commit
0d49bfeab2
1 changed files with 61 additions and 9 deletions
  1. 61 9
      index.php

+ 61 - 9
index.php

@@ -2,6 +2,7 @@
 error_reporting(E_ALL);
 $ip = trim($_GET['ip']);
 $token = trim($_GET['token']);
+$action = trim($_GET['action']);
 $db = new mysqli('localhost', 'ban', 'Blubb123-', 'ban');
 if ($db->connect_errno){
     die($db->connect_error);
@@ -22,18 +23,69 @@ function checkToken($token,$db) {
     return false;
 }
 
+function checkAdmin($token,$db) {
+    $dbAction = $db->prepare("SELECT description FROM clients WHERE token = ?");
+    $dbAction->bind_param('s',$token);
+    $dbAction->execute();
+    $dbAction->store_result();
+    $dbAction->bind_result($desc);
+    $dbAction->fetch();
+    if ($dbAction->num_rows() == 1){
+        if($desc == 'admin') {
+            return true;
+        }
+    }
+    return false;
+}
+
 function set($ip,$db) {
     $dbAction = $db->prepare("INSERT IGNORE INTO list VALUES (?)");
     $dbAction->bind_param('i',$ip);
     return $dbAction->execute();
 }
 
-if (checkToken($token,$db)){
-    if(set(ip2long($ip),$db)){
-        echo " inserted $ip" . PHP_EOL;
-    } else {
-        echo " fehler" . PHP_EOL;
-    };
-} else {
-    echo "Client $token not registered" . PHP_EOL;
-};
+function delist($ip,$db) {
+    $dbAction = $db->prepare("INSERT INTO delist ('ip') VALUES (?) ON DUPLICATE KEY count = count + 1");
+    $dbAction->bind_param('i',$ip);
+    $dbAction->execute();
+    $dbAction = $db->prepare("SELECT count FROM delist WHERE ip = ?");
+    $dbAction->bind_param('i',$ip);
+    $dbAction->execute();
+    $dbAction->store_result();
+    $dbAction->bind_result($count);
+    $dbAction->fetch();
+    if ($count > 3){
+        echo "Fehler, ". long2ip($ip) . " wurde zu oft delistet";
+        return false;
+    }
+    $dbAction = $db->prepare("DELETE FROM list WHERE ip = ?");
+    $dbAction->bind_param('i',$ip);
+    $dbAction->execute();
+    echo long2ip($ip) . " wurde delistet";
+    return true;
+}
+switch($action) {
+    case 'delist':
+        if (checkAdmin($token,$db)){
+            if(delist(ip2long($ip),$db)){
+                echo "$ip delisted" . PHP_EOL;
+            } else {
+                echo "$ip not delisted" . PHP_EOL;
+            };
+        } else {
+            echo "Admin token $token not registered" . PHP_EOL;
+        };
+        break;
+    case 'blacklist':
+        break;
+    default:
+        if (checkToken($token,$db)){
+            if(set(ip2long($ip),$db)){
+                echo " inserted $ip" . PHP_EOL;
+            } else {
+                echo " fehler" . PHP_EOL;
+            };
+        } else {
+            echo "Client token $token not registered" . PHP_EOL;
+        };
+}