<?php
/****
	* Anti-DDOS Script
	* Version 1.0
	* (c) 2012: CokaColaBoy
	*
****/

//DB-Verbindung
$mysqlhost="localhost";
$mysqluser="root";
$mysqlpwd="";
$mysqldb="ddos";

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindung fehlgeschlagen!");
mysql_select_db($mysqldb, $connection);

//Einmalig DB anlegen
//mysql_query("CREATE TABLE `ddos_blacklist` (`ip` varchar (15) NOT NULL)");
//mysql_query("CREATE TABLE `ddos_temp` (`ip` varchar (15) NOT NULL, `zeit` int NOT NULL, `faktor` int NOT NULL)");

//BesucherIP in Variable speichern
$besucherIp = $_SERVER['REMOTE_ADDR'];

//Zeit als Variable speichern
$PHPZeit = time();

//IP in BlackList-DB suchen
$abfrage = "SELECT COUNT(ip) FROM `ddos_blacklist` WHERE `ip` = '$besucherIp'";
$ergebnis = mysql_query($abfrage);
$menge = mysql_fetch_row($ergebnis);
$AbfrageBL = $menge[0];

//Wenn dort vorhanden: Umleitung
if ($AbfrageBL == 0) {
} else {
	header('Location: http://google.com/');
	exit;
}

//IP in Temp-DB suchen
$abfrage = "SELECT COUNT(ip) FROM `ddos_temp` WHERE `ip` = '$besucherIp'";
$ergebnis = mysql_query($abfrage);
$menge = mysql_fetch_row($ergebnis);
$AbfrageTDB = $menge[0];

//IP schon in TempDB vorhanden?
if ($AbfrageTDB == 0) {

	//Noch nicht vorhanden, also Eintrag anlegen
	mysql_query("INSERT INTO `ddos_temp` (`ip`, `zeit`, `faktor`) VALUES ('$besucherIp', '$PHPZeit', 1)");
} 

//IP schon in TempDB vorhanden?
if ($AbfrageTDB == 0) {

	//Noch nicht vorhanden, also Eintrag anlegen
	mysql_query("INSERT INTO `ddos_temp` (`ip`, `zeit`, `faktor`) VALUES ('$besucherIp', '$PHPZeit', 1)");
	
} else {
	
	//Zeit aus DB holen
	$AbfrageDBZeit = "SELECT `zeit` FROM `ddos_temp` WHERE `ip` = '$besucherIp'";
	$ergebnis = mysql_query($AbfrageDBZeit);
    $menge = mysql_fetch_row($ergebnis);
	$DBZeit = $menge[0];
	
	//Aktuelle PHP-Zeit speichern
	$PHPZeit = time();  
	
	//Differenz bestimmen
	$Differenz = $PHPZeit-$DBZeit;
	
	if($Differenz < 2) {
		
		//Faktor aus DB auslesen
		$FaktorDB = "SELECT `faktor` FROM `ddos_temp` WHERE `ip` = '$besucherIp'";
		$ergebnis = mysql_query($FaktorDB);
		$ErgFaktorDatenbank = mysql_fetch_row($ergebnis);
		$Faktor = $ErgFaktorDatenbank[0];

		//Faktor lokal um 1 erhöhen
		$NeuerFaktor = $Faktor + 1;
		
		//Lokalen Faktor in DB schreiben
		mysql_query("UPDATE `ddos_temp` SET `faktor` = '$NeuerFaktor' WHERE `ip` = '$besucherIp'"); 
	}
	
	//Aktuelle PHP-Zeit speichern
	$PHPZeit = time(); 
	mysql_query("UPDATE `ddos_temp` SET `zeit` = '$PHPZeit' WHERE `ip` = '$besucherIp'");

	
	//Faktor überprüfen, ob 20
	if ($NeuerFaktor == 20) {
	
		//IP auf BlackList setzten
		mysql_query("INSERT INTO `ddos_blacklist` (`ip`) VALUES ('$besucherIp')");
		
		//Diesen Eintrag aus TempDB löschen
		mysql_query("DELETE FROM `ddos_temp` WHERE `ip`= '$besucherIp'");
	}
}
?>