|
|
<?php |
|
|
|
|
|
ob_start(); |
|
|
require_once 'MySQL_funcs.php'; |
|
|
require 'MySQL_config.php'; |
|
|
ob_end_clean(); |
|
|
|
|
|
session_start(); |
|
|
|
|
|
$content = getStandaloneFile('dynmap_config.json'); |
|
|
if (isset($content)) { |
|
|
$config = json_decode($content, true); |
|
|
$msginterval = $config['webchat-interval']; |
|
|
} else { |
|
|
$msginterval = 2000; |
|
|
} |
|
|
|
|
|
if (isset($_SESSION['lastchat'])) { |
|
|
$lastchat = $_SESSION['lastchat']; |
|
|
} else { |
|
|
$lastchat = 0; |
|
|
} |
|
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $lastchat < time()) { |
|
|
$micro = microtime(true); |
|
|
$timestamp = round($micro * 1000.0); |
|
|
|
|
|
$data = json_decode(trim(file_get_contents('php://input'))); |
|
|
$data->timestamp = $timestamp; |
|
|
$data->ip = $_SERVER['REMOTE_ADDR']; |
|
|
if (isset($_SESSION['userid'])) { |
|
|
$uid = $_SESSION['userid']; |
|
|
if (strcmp($uid, '-guest-')) { |
|
|
$data->userid = $uid; |
|
|
} |
|
|
} |
|
|
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { |
|
|
$proxy = array_map('trim', explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); |
|
|
$data->ip = $proxy[0]; |
|
|
} |
|
|
$content = getStandaloneFile('dynmap_webchat.json'); |
|
|
$gotold = false; |
|
|
if (isset($content)) { |
|
|
$old_messages = json_decode($content, true); |
|
|
$gotold = true; |
|
|
} |
|
|
|
|
|
if (!empty($old_messages)) { |
|
|
foreach ($old_messages as $message) { |
|
|
if (($timestamp - $config['updaterate'] - 10000) < $message['timestamp']) { |
|
|
$new_messages[] = $message; |
|
|
} |
|
|
} |
|
|
} |
|
|
$new_messages[] = $data; |
|
|
|
|
|
if ($gotold) { |
|
|
updateStandaloneFile('dynmap_webchat.json', json_encode($new_messages)); |
|
|
} else { |
|
|
insertStandaloneFile('dynmap_webchat.json', json_encode($new_messages)); |
|
|
} |
|
|
|
|
|
$_SESSION['lastchat'] = time() + $msginterval; |
|
|
echo "{ \"error\" : \"none\" }"; |
|
|
} elseif ($_SERVER['REQUEST_METHOD'] == 'POST' && $lastchat > time()) { |
|
|
header('HTTP/1.1 403 Forbidden'); |
|
|
} else { |
|
|
echo "{ \"error\" : \"none\" }"; |
|
|
} |
|
|
cleanupDb(); |
|
|
|