Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- if(isset($_GET["ip"]) && isset($_GET["key"]) && $_GET["key"] == "BlackDemonZyTandLaurenshup") {
- $ip = $_GET["ip"];
- $port = 25565;
- if(strpos($ip, ":")) {
- $split = explode(":", $ip);
- $ip = $split[0];
- $port = $split[1];
- }
- $targetip = $ip;
- $targetport = $port;
- $records = dns_get_record("_minecraft._tcp.".$ip, DNS_SRV);
- if(!empty($records)) {
- foreach($records as $record) {
- if(isset($record["target"]) && isset($record["port"])) {
- $targetip = $record["target"];
- $targetport = $record["port"];
- }
- }
- }
- // Database things starts here
- $servername = "localhost";
- $username = "BlackDemonZyT";
- $password = "BlackDemonZyTandLaurenshup";
- $conn = new mysqli($servername, $username, $password, "minecraft_widget");
- $select = $conn->query("SELECT * FROM `server_queries` WHERE `ip` = '".$targetip."'");
- if($select->num_rows == 1) { // Already in database
- $row = $select->fetch_array(MYSQLI_ASSOC);
- if(time() >= ($row["last_updated"] + 5)) { // Update required because the 5 seconds have passed
- require_once('minestat.php');
- $ms = new MineStat($targetip, $targetport);
- if($ms->is_online()) {
- $object = new stdClass();
- $object->o = str_replace("\0", '', $ms->get_current_players());
- $object->m = str_replace("\0", '', $ms->get_max_players());
- echo json_encode($object);
- // Found server data, now update the values and add 1 request and register a new query for that client IP
- $conn->query("UPDATE `server_queries` SET `online_players`=".$object->o.",`max_players`=".$object->m.",`last_updated`=".time().",`requests`=".($row["requests"] + 1)." WHERE `ip`='".$targetip."'");
- // Function to get the IP of the requester
- function get_client_ip() {
- $ipaddress = '';
- if (getenv('HTTP_CLIENT_IP'))
- $ipaddress = getenv('HTTP_CLIENT_IP');
- else if(getenv('HTTP_X_FORWARDED_FOR'))
- $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
- else if(getenv('HTTP_X_FORWARDED'))
- $ipaddress = getenv('HTTP_X_FORWARDED');
- else if(getenv('HTTP_FORWARDED_FOR'))
- $ipaddress = getenv('HTTP_FORWARDED_FOR');
- else if(getenv('HTTP_FORWARDED'))
- $ipaddress = getenv('HTTP_FORWARDED');
- else if(getenv('REMOTE_ADDR'))
- $ipaddress = getenv('REMOTE_ADDR');
- else
- $ipaddress = 'UNKNOWN';
- return $ipaddress;
- }
- $ipaddress = get_client_ip();
- $now = today();
- $selected = $conn->query("SELECT * FROM `user_queries` WHERE `ip` = '".$ipaddress."'");
- if($selected->num_rows == 1) { // If requester Already in database
- $row = $selected->fetch_array(MYSQLI_ASSOC);
- $conn->query("UPDATE `user_queries` SET `requests`=".($row["requests"] + 1).",`last_updated`=".$now." WHERE `ip`='".$ipaddress."'");
- echo $conn;
- } else {
- $conn->query("INSERT INTO `user_queries` (`ip`, `last_updated`, `requests`) VALUES ('".$ipaddress."', '".$now."', '1')");
- echo $conn;
- }
- }
- } else { // Return old values, 5 seconds have not passed
- $object = new stdClass();
- $object->o = $row["online_players"];
- $object->m = $row["max_players"];
- echo json_encode($object);
- // Add 1 request
- $conn->query("UPDATE `server_queries` SET `requests`=".($row["requests"] + 1)." WHERE `ip`='".$targetip."'");
- }
- } else { // Not in database
- require_once('minestat.php');
- $ms = new MineStat($targetip, $targetport);
- if($ms->is_online()) {
- $object = new stdClass();
- $object->o = str_replace("\0", '', $ms->get_current_players());
- $object->m = str_replace("\0", '', $ms->get_max_players());
- echo json_encode($object);
- // Found server data, now insert it into the database
- $conn->query("INSERT INTO `server_queries` (`ip`, `online_players`, `max_players`, `last_updated`, `requests`) VALUES ('".$targetip."', '".$object->o."', '".$object->m."', '".time()."', '1')");
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement