From dc407c0caeaa172dafab0a73bf9b2dea749f8a73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 6 Dec 2014 14:44:21 +0100 Subject: [PATCH] don't add game servers that do not respond to the database fixes #5 --- ping.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/ping.php b/ping.php index 2de76e9..9ce4387 100644 --- a/ping.php +++ b/ping.php @@ -38,7 +38,7 @@ function updatedbinfo($gameinfo) { $query = $db->prepare('DELETE FROM clients WHERE address = :addr'); $query->bindValue(':addr', $gameinfo['address'], PDO::PARAM_STR); $query->execute(); - + $clients = explode(",", $_REQUEST['clients']); foreach ($clients as $client) { @@ -59,27 +59,32 @@ function updatedbinfo($gameinfo) { if(!isset($_REQUEST[$key])) die('field "'.$key.'" is not set'); - try + try { $db = new PDO('sqlite:db/openra.db'); $ip = $_SERVER['REMOTE_ADDR']; $port = $_REQUEST['port']; $addr = $ip.':'.$port; + + // don't get spammed so easily + if (!check_port($ip, $port)) + die('server "'.$addr.'" does not respond'); + $name = urldecode($_REQUEST['name']); $started = ''; $version_arr = explode('@', $_REQUEST['mods']); $game_mod = array_shift($version_arr); $version = implode('@', $version_arr); - + if ($_REQUEST['state'] == 2) { $query = $db->prepare('SELECT * FROM servers WHERE address = :addr'); $query->bindValue(':addr', $addr, PDO::PARAM_STR); $query->execute(); $result = $query->fetchAll(); - foreach ( $result as $row ) + foreach ($result as $row) { if ($row['state'] == 1) { @@ -114,7 +119,7 @@ function updatedbinfo($gameinfo) { $query->bindValue(':addr', $addr, PDO::PARAM_STR); $query->execute(); $result = $query->fetchAll(); - foreach ( $result as $row ) + foreach ($result as $row) { if ($row['started'] == '') break; @@ -177,9 +182,6 @@ function updatedbinfo($gameinfo) { if (isset($_REQUEST['new'])) { - if(!check_port($ip, $port)) - $name = '[down]' . $name; - $games = file_get_contents("games.txt"); file_put_contents("games.txt", $games + 1); }