SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | define("PORT", 1311);
| |
| 3 | ||
| 4 | - | define("DB_HOST", "sql4.cluster1.easy-hebergement.net");
|
| 4 | + | define("DB_HOST", "XX");
|
| 5 | - | define("DB_USER", "royalanticheat8");
|
| 5 | + | define("DB_USER", "XX");
|
| 6 | - | define("DB_PASS", "JF1FJz71sE");
|
| 6 | + | define("DB_PASS", "XX");
|
| 7 | - | define("DB_NAME", "royalanticheat8");
|
| 7 | + | define("DB_NAME", "XX");
|
| 8 | ||
| 9 | ||
| 10 | /******************************** | |
| 11 | * COMMANDE DISPONIBLE POUR LE CLIENT : | |
| 12 | * 'CHECK_STEAM_ID%STEAM_X:X:XXXXX' | |
| 13 | * -> CHECK SI LE CLIENT EST BAN. SI OUI, ON RETOURNE "BAN", SINON "NOTBAN" | |
| 14 | * 'ADD_TO_BANLIST%STEAM_X:X:XXXXX%IP.IP.IP.IP' | |
| 15 | * -> AJOUTE UN MEC EN BAN LISTE, RETOURNE DANS TOUS LES CAS "OK" | |
| 16 | ***********************************/ | |
| 17 | ||
| 18 | $socket = stream_socket_server("udp://0.0.0.0:".PORT, $errno, $errstr, STREAM_SERVER_BIND);
| |
| 19 | if (!$socket) {
| |
| 20 | die("$errstr ($errno)");
| |
| 21 | } | |
| 22 | ||
| 23 | logMessage("Démarrage du script");
| |
| 24 | _printtoscreen("Starting...");
| |
| 25 | do {
| |
| 26 | $pkt = stream_socket_recvfrom($socket, 1024, 0, $peer); | |
| 27 | $pkt = trim($pkt); | |
| 28 | _printtoscreen("Reçu de $peer : $pkt");
| |
| 29 | ||
| 30 | if(strpos($pkt, "CHECK_STEAM_ID%") !== FALSE) | |
| 31 | {
| |
| 32 | $steam_id = substr($pkt,strlen("CHECK_STEAM_ID%"));
| |
| 33 | _printtoscreen("Recherche du Steam ID dans la base : ". $steam_id);
| |
| 34 | $ISBAN = IsSteamIDBan($steam_id); | |
| 35 | ||
| 36 | if($ISBAN === TRUE) | |
| 37 | {
| |
| 38 | _printtoscreen("Steam ID ".$steam_id." present dans la banlist");
| |
| 39 | logMessage("Steam ID ".$steam_id." present dans la banlist");
| |
| 40 | stream_socket_sendto($socket, "".$steam_id." BAN", 0, $peer); //Changement, renvoie $STEAMID BAN | |
| 41 | } | |
| 42 | else | |
| 43 | {
| |
| 44 | _printtoscreen("Steam ID ".$steam_id." non present dans la banlist");
| |
| 45 | stream_socket_sendto($socket, "".$steam_id." NOTBAN", 0, $peer); //Changement, renvoie $STEAMID NOTBAN | |
| 46 | } | |
| 47 | } | |
| 48 | elseif(strpos($pkt,"ADD_TO_BANLIST%") !== FALSE) | |
| 49 | {
| |
| 50 | $content = substr($pkt,strlen("ADD_TO_BANLIST%"));
| |
| 51 | $parts = explode('%',$content);
| |
| 52 | $steam_id = $parts[0]; | |
| 53 | $ip = $parts[1]; | |
| 54 | ||
| 55 | _printtoscreen("Ajout du Steam ID ".$steam_id." lié à l'IP ".$ip);
| |
| 56 | logMessage("Ajout du Steam ID ".$steam_id." lié à l'IP ".$ip);
| |
| 57 | ||
| 58 | AddToBanList($steam_id, $ip); | |
| 59 | ||
| 60 | stream_socket_sendto($socket, "OK", 0, $peer); | |
| 61 | } | |
| 62 | else | |
| 63 | {
| |
| 64 | _printtoscreen("Commande inconnnue");
| |
| 65 | } | |
| 66 | ||
| 67 | ||
| 68 | ||
| 69 | } while ($pkt !== false); | |
| 70 | ||
| 71 | ||
| 72 | ||
| 73 | ||
| 74 | function IsSteamIDBan($steam_ID) | |
| 75 | {
| |
| 76 | try{
| |
| 77 | $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; | |
| 78 | $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
| |
| 79 | ||
| 80 | $requete = $pdo->prepare('SELECT COUNT(*) AS Nombre FROM banlist WHERE steamid = :steamid');
| |
| 81 | $requete->bindValue(':steamid', $steam_ID);
| |
| 82 | $requete->execute(); | |
| 83 | ||
| 84 | $donnees = $requete->fetch(); | |
| 85 | $nombre = $donnees['Nombre']; | |
| 86 | ||
| 87 | $requete->closeCursor(); | |
| 88 | ||
| 89 | if($nombre < 1){
| |
| 90 | return false; | |
| 91 | } | |
| 92 | else{
| |
| 93 | return true; | |
| 94 | } | |
| 95 | } | |
| 96 | catch(Exception $e){
| |
| 97 | $message = $e->getMessage(); | |
| 98 | _printtoscreen($message); | |
| 99 | return false; | |
| 100 | } | |
| 101 | } | |
| 102 | ||
| 103 | function AddToBanList($steam_id,$ip) | |
| 104 | {
| |
| 105 | try{
| |
| 106 | $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; | |
| 107 | $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS);
| |
| 108 | ||
| 109 | $requete = $pdo->prepare('INSERT INTO banlist SET
| |
| 110 | steamid = :steamid, | |
| 111 | ip = :ip'); | |
| 112 | $requete->bindValue(':steamid', $steam_id);
| |
| 113 | $requete->bindValue(':ip', $ip);
| |
| 114 | $requete->execute(); | |
| 115 | } | |
| 116 | catch(Exception $e){
| |
| 117 | $errorcode = $e->getCode(); | |
| 118 | if($errorcode != 23000){ // 23000 = doublon SQL. On ne va pas logguer betement les erreurs de doublon pour economiser du cpu
| |
| 119 | $message = $e->getMessage(); | |
| 120 | _printtoscreen($message); | |
| 121 | logMessage($message); | |
| 122 | } | |
| 123 | } | |
| 124 | } | |
| 125 | ||
| 126 | function _printtoscreen($message) | |
| 127 | {
| |
| 128 | echo date("Y-m-d H:i:s"),"\t",$message,"\n";
| |
| 129 | } | |
| 130 | ||
| 131 | function logMessage($message){
| |
| 132 | $handle = fopen("/home/teol/banlist/logs/logs.txt", "a+");
| |
| 133 | $date = date("Y-m-d H:i:s");
| |
| 134 | fwrite($handle, "$date - $message\r\n"); | |
| 135 | fwrite($handle, "===============\r\n"); | |
| 136 | fclose($handle); | |
| 137 | } |