View difference between Paste ID: qbfYHvjs and TuPFSc70
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
}