1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-28 06:24:10 +01:00

GCS: Add backend for usagetracker.

Collect statistics about the usage of our software and hardware
     to enable us to make things better for you.
This commit is contained in:
Roy Bekken 2015-09-16 18:13:50 +02:00
parent 26289e63ae
commit b6b7adcbdb
2 changed files with 143 additions and 0 deletions

View File

@ -0,0 +1,81 @@
<?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]);
}
?>

View File

@ -0,0 +1,62 @@
-- phpMyAdmin SQL Dump
-- version 4.4.14.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Sep 13, 2015 at 03:06 PM
-- Server version: 10.0.20-MariaDB
-- PHP Version: 5.6.13
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `usagetracker`
--
-- --------------------------------------------------------
--
-- Table structure for table `usagetracker`
--
CREATE TABLE IF NOT EXISTS `usagetracker` (
`id` int(11) unsigned NOT NULL,
`first_date` int(11) unsigned NOT NULL,
`last_date` int(11) unsigned NOT NULL,
`ip` varchar(8) COLLATE utf8_bin NOT NULL,
`count` smallint(4) unsigned NOT NULL DEFAULT '1',
`data` varchar(2000) COLLATE utf8_bin NOT NULL,
`hash` varchar(32) COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `usagetracker`
--
ALTER TABLE `usagetracker`
ADD PRIMARY KEY (`id`),
ADD KEY `last_date` (`last_date`),
ADD KEY `hash` (`hash`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `usagetracker`
--
ALTER TABLE `usagetracker`
MODIFY `id` int(11) unsigned NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;