Output from getIP (IP and ISP info) is now stored in the results database

This commit is contained in:
adolfintel 2018-08-05 08:12:07 +02:00
parent c17d58a614
commit cfbbfa3e58
7 changed files with 21 additions and 24 deletions

4
doc.md
View file

@ -330,7 +330,7 @@ If you see a table called `speedtest_users`, empty, you did it right.
### Configuring `telemetry.php` ### Configuring `telemetry.php`
Open telemetry_settings.php with notepad or a similar text editor. Open telemetry_settings.php with notepad or a similar text editor.
Set your preferred database, ``$db_type="mysql";``, ``$db_type="sqlite";``, ``$db_type="postgresql";`` or or ``$db_type="csv";`` Set your preferred database, ``$db_type="mysql";``, ``$db_type="sqlite";``, ``$db_type="postgresql";`` or ``$db_type="csv";``
If you choose to use Sqlite3, you must set the path to your database file: If you choose to use Sqlite3, you must set the path to your database file:
```php ```php
$Sqlite_db_file = "../telemetry.sql"; $Sqlite_db_file = "../telemetry.sql";
@ -363,7 +363,7 @@ __Note__: CSV currently only supports basic telemetry, the log will not be saved
Edit your test page; where you start the worker, you need to specify the `telemetry_level`. Edit your test page; where you start the worker, you need to specify the `telemetry_level`.
There are 3 levels: There are 3 levels:
* `none`: telemetry is disabled (default) * `none`: telemetry is disabled (default)
* `basic`: telemetry collects IP, User Agent, Preferred language, Test results * `basic`: telemetry collects IP, ISP info, User Agent, Preferred language, Test results
* `full`: same as above, but also collects a log (10-150 Kb each, not recommended) * `full`: same as above, but also collects a log (10-150 Kb each, not recommended)
Example: Example:

View file

@ -442,7 +442,7 @@ function pingTest (done) {
if (i < settings.count_ping) doPing(); else done() // more pings to do? if (i < settings.count_ping) doPing(); else done() // more pings to do?
} }
}.bind(this) }.bind(this)
// sent xhr // send xhr
xhr[0].open('GET', settings.url_ping + url_sep(settings.url_ping) + 'r=' + Math.random(), true) // random string to prevent caching xhr[0].open('GET', settings.url_ping + url_sep(settings.url_ping) + 'r=' + Math.random(), true) // random string to prevent caching
xhr[0].send() xhr[0].send()
}.bind(this) }.bind(this)
@ -457,14 +457,15 @@ function sendTelemetry(){
xhr.open('POST', settings.url_telemetry+url_sep(settings.url_telemetry)+"r="+Math.random(), true); xhr.open('POST', settings.url_telemetry+url_sep(settings.url_telemetry)+"r="+Math.random(), true);
try{ try{
var fd = new FormData() var fd = new FormData()
fd.append('dl', dlStatus) fd.append('ispinfo', clientIp) //clientIp also contains ISP info
fd.append('dl', dlStatus)
fd.append('ul', ulStatus) fd.append('ul', ulStatus)
fd.append('ping', pingStatus) fd.append('ping', pingStatus)
fd.append('jitter', jitterStatus) fd.append('jitter', jitterStatus)
fd.append('log', settings.telemetry_level>1?log:"") fd.append('log', settings.telemetry_level>1?log:"")
xhr.send(fd) xhr.send(fd)
}catch(ex){ }catch(ex){
var postData = 'dl='+encodeURIComponent(dlStatus)+'&ul='+encodeURIComponent(ulStatus)+'&ping='+encodeURIComponent(pingStatus)+'&jitter='+encodeURIComponent(jitterStatus)+'&log='+encodeURIComponent(settings.telemetry_level>1?log:'') var postData = 'ispinfo='+encodeURIComponent(clientIp)+'dl='+encodeURIComponent(dlStatus)+'&ul='+encodeURIComponent(ulStatus)+'&ping='+encodeURIComponent(pingStatus)+'&jitter='+encodeURIComponent(jitterStatus)+'&log='+encodeURIComponent(settings.telemetry_level>1?log:'')
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xhr.send(postData) xhr.send(postData)
} }

File diff suppressed because one or more lines are too long

View file

@ -2,6 +2,7 @@
include_once('telemetry_settings.php'); include_once('telemetry_settings.php');
$ip=($_SERVER['REMOTE_ADDR']); $ip=($_SERVER['REMOTE_ADDR']);
$ispinfo=($_POST["ispinfo"]);
$ua=($_SERVER['HTTP_USER_AGENT']); $ua=($_SERVER['HTTP_USER_AGENT']);
$lang=""; if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $lang=($_SERVER['HTTP_ACCEPT_LANGUAGE']); $lang=""; if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) $lang=($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$dl=($_POST["dl"]); $dl=($_POST["dl"]);
@ -12,8 +13,8 @@ $log=($_POST["log"]);
if($db_type=="mysql"){ if($db_type=="mysql"){
$conn = new mysqli($MySql_hostname, $MySql_username, $MySql_password, $MySql_databasename) or die("1"); $conn = new mysqli($MySql_hostname, $MySql_username, $MySql_password, $MySql_databasename) or die("1");
$stmt = $conn->prepare("INSERT INTO speedtest_users (ip,ua,lang,dl,ul,ping,jitter,log) VALUES (?,?,?,?,?,?,?,?)") or die("2"); $stmt = $conn->prepare("INSERT INTO speedtest_users (ip,ispinfo,ua,lang,dl,ul,ping,jitter,log) VALUES (?,?,?,?,?,?,?,?,?)") or die("2");
$stmt->bind_param("ssssssss",$ip,$ua,$lang,$dl,$ul,$ping,$jitter,$log) or die("3"); $stmt->bind_param("sssssssss",$ip,$ispinfo,$ua,$lang,$dl,$ul,$ping,$jitter,$log) or die("3");
$stmt->execute() or die("4"); $stmt->execute() or die("4");
$stmt->close() or die("5"); $stmt->close() or die("5");
$conn->close() or die("6"); $conn->close() or die("6");
@ -23,6 +24,7 @@ if($db_type=="mysql"){
$conn->exec(" $conn->exec("
CREATE TABLE IF NOT EXISTS `speedtest_users` ( CREATE TABLE IF NOT EXISTS `speedtest_users` (
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`ispinfo` text,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip` text NOT NULL, `ip` text NOT NULL,
`ua` text NOT NULL, `ua` text NOT NULL,
@ -34,8 +36,8 @@ if($db_type=="mysql"){
`log` longtext `log` longtext
); );
"); ");
$stmt = $conn->prepare("INSERT INTO speedtest_users (ip,ua,lang,dl,ul,ping,jitter,log) VALUES (?,?,?,?,?,?,?,?)") or die("2"); $stmt = $conn->prepare("INSERT INTO speedtest_users (ip,ispinfo,ua,lang,dl,ul,ping,jitter,log) VALUES (?,?,?,?,?,?,?,?,?)") or die("2");
$stmt->execute(array($ip,$ua,$lang,$dl,$ul,$ping,$jitter,$log)) or die("3"); $stmt->execute(array($ip,$ispinfo,$ua,$lang,$dl,$ul,$ping,$jitter,$log)) or die("3");
$conn = null; $conn = null;
}elseif($db_type=="postgresql"){ }elseif($db_type=="postgresql"){
// Prepare connection parameters for db connection // Prepare connection parameters for db connection
@ -45,8 +47,8 @@ if($db_type=="mysql"){
$conn_password = "password=$PostgreSql_password"; $conn_password = "password=$PostgreSql_password";
// Create db connection // Create db connection
$conn = new PDO("pgsql:$conn_host;$conn_db;$conn_user;$conn_password") or die("1"); $conn = new PDO("pgsql:$conn_host;$conn_db;$conn_user;$conn_password") or die("1");
$stmt = $conn->prepare("INSERT INTO speedtest_users (ip,ua,lang,dl,ul,ping,jitter,log) VALUES (?,?,?,?,?,?,?,?)") or die("2"); $stmt = $conn->prepare("INSERT INTO speedtest_users (ip,ispinfo,ua,lang,dl,ul,ping,jitter,log) VALUES (?,?,?,?,?,?,?,?,?)") or die("2");
$stmt->execute(array($ip,$ua,$lang,$dl,$ul,$ping,$jitter,$log)) or die("3"); $stmt->execute(array($ip,$ispinfo,$ua,$lang,$dl,$ul,$ping,$jitter,$log)) or die("3");
$conn = null; $conn = null;
} }
elseif($db_type=="csv"){ elseif($db_type=="csv"){
@ -55,6 +57,7 @@ elseif($db_type=="csv"){
$date = date('Y-m-d H:i:s'); $date = date('Y-m-d H:i:s');
$str = '"' . $date . '",'; $str = '"' . $date . '",';
$str .= '"' . $ip . '",'; $str .= '"' . $ip . '",';
$str .= '"' . $ispinfo . '",';
$str .= '"' . $ua . '",'; $str .= '"' . $ua . '",';
$str .= '"' . $dl . '",'; $str .= '"' . $dl . '",';
$str .= '"' . $ul . '",'; $str .= '"' . $ul . '",';
@ -63,11 +66,11 @@ elseif($db_type=="csv"){
// Set header if this is a new file // Set header if this is a new file
if (!file_exists($Csv_File)) { if (!file_exists($Csv_File)) {
$header = '"date","ip","ua","download","upload","ping","jitter"' . "\n"; $header = '"date","ip","ispinfo","ua","download","upload","ping","jitter"' . "\n";
file_put_contents($Csv_File, $header, FILE_APPEND); file_put_contents($Csv_File, $header, FILE_APPEND);
} }
// Writting line to file // Write line to file
file_put_contents($Csv_File, $str, FILE_APPEND); file_put_contents($Csv_File, $str, FILE_APPEND);
} }
?> ?>

View file

@ -1,12 +1,3 @@
-- phpMyAdmin SQL Dump
-- version 4.7.0
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Aug 24, 2017 at 02:16 PM
-- Server version: 10.1.25-MariaDB
-- PHP Version: 7.1.7
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0; SET AUTOCOMMIT = 0;
START TRANSACTION; START TRANSACTION;
@ -32,6 +23,7 @@ CREATE TABLE `speedtest_users` (
`id` int(11) NOT NULL, `id` int(11) NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip` text NOT NULL, `ip` text NOT NULL,
`ispinfo` text,
`ua` text NOT NULL, `ua` text NOT NULL,
`lang` text NOT NULL, `lang` text NOT NULL,
`dl` text, `dl` text,

View file

@ -42,6 +42,7 @@ CREATE TABLE speedtest_users (
id integer NOT NULL, id integer NOT NULL,
"timestamp" timestamp without time zone DEFAULT now() NOT NULL, "timestamp" timestamp without time zone DEFAULT now() NOT NULL,
ip text NOT NULL, ip text NOT NULL,
ispinfo text,
ua text NOT NULL, ua text NOT NULL,
lang text NOT NULL, lang text NOT NULL,
dl text, dl text,

View file

@ -1,6 +1,6 @@
<?php <?php
$db_type="mysql"; //Type of db: "mysql", "sqlite" or "postgresql" or "csv" $db_type="mysql"; //Type of db: "mysql", "sqlite", "postgresql" or "csv"
// Sqlite3 settings // Sqlite3 settings
$Sqlite_db_file = "../telemetry.sql"; $Sqlite_db_file = "../telemetry.sql";