mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
b6b7adcbdb
Collect statistics about the usage of our software and hardware to enable us to make things better for you.
82 lines
1.9 KiB
PHP
82 lines
1.9 KiB
PHP
<?php
|
|
|
|
if (!$_SERVER['REQUEST_METHOD'] === 'GET' || empty($_GET['hash'])) {
|
|
usage_error();
|
|
}
|
|
|
|
// NOTE: $hash not sanitized because of the checksum match test.
|
|
$hash = $_GET['hash'];
|
|
$string = str_replace('&hash=' . $hash, '', rawurldecode($_SERVER['QUERY_STRING']));
|
|
|
|
if ($hash != md5($string)) {
|
|
usage_error();
|
|
}
|
|
|
|
|
|
$dbhost = 'localhost';
|
|
$dbname = '';
|
|
$dbpasswd = '';
|
|
$dbuser = '';
|
|
|
|
$db = new mysqli($dbhost, $dbuser, $dbpasswd, $dbname);
|
|
unset($dbhost, $dbuser, $dbpasswd, $dbname);
|
|
|
|
if ($db->connect_error) {
|
|
die();
|
|
}
|
|
|
|
$sql = sprintf("SELECT id, last_date FROM usagetracker WHERE hash = '%s' LIMIT 1",
|
|
$db->real_escape_string($hash)
|
|
);
|
|
|
|
$res = $db->query($sql);
|
|
if ($res->num_rows > 0) {
|
|
// Shouldn't normally be here but happens if GCS settings are reset
|
|
// or if the request come from another source than GCS.
|
|
|
|
$hashUpdate = $res->fetch_assoc();
|
|
if ($hashUpdate['last_date'] < (time() - 3600)) {
|
|
// Update timestamp and connection count.
|
|
$sql = sprintf("UPDATE usagetracker SET last_date = %u, count = count + 1 WHERE id = %u LIMIT 1",
|
|
time(),
|
|
$hashUpdate['id']
|
|
);
|
|
$db->query($sql);
|
|
}
|
|
}
|
|
else {
|
|
// New hash
|
|
$sql = sprintf("INSERT INTO usagetracker (first_date, last_date, ip, data, hash)
|
|
VALUES (%u, %u, '%s', '%s', '%s')",
|
|
time(),
|
|
time(),
|
|
encode_ip($_SERVER['REMOTE_ADDR']),
|
|
$db->real_escape_string($string),
|
|
$db->real_escape_string($_GET['hash'])
|
|
);
|
|
|
|
$db->query($sql);
|
|
}
|
|
|
|
$db->close();
|
|
|
|
|
|
function usage_error()
|
|
{
|
|
//ob_start();
|
|
|
|
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
|
|
header("Status: 404 Not Found");
|
|
|
|
// Matching server 404 output can be added.
|
|
exit();
|
|
}
|
|
|
|
function encode_ip($dotquad_ip)
|
|
{
|
|
$ip_sep = explode('.', $dotquad_ip);
|
|
return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
|
|
}
|
|
|
|
?>
|