From 247b9c0e4c10a76e89b5b073f35e01dd58755794 Mon Sep 17 00:00:00 2001 From: dosse91 Date: Thu, 26 Sep 2019 12:28:53 +0200 Subject: [PATCH 1/5] Updated screenshot --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7fc74fa..7d905b9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Works with mobile versions too. * Results sharing (optional) * Multiple Points of Test (optional) -![Screenshot](https://speedtest.fdossena.com/mpot_v5.gif) +![Screenshot](https://speedtest.fdossena.com/mpot_v6.gif) ## Server requirements From a50fcfe56614154ee76c88f8831790df859f8fdd Mon Sep 17 00:00:00 2001 From: dosse91 Date: Sat, 28 Sep 2019 08:22:14 +0200 Subject: [PATCH 2/5] IP addresses can now be redacted automatically from telemetry --- doc.md | 2 ++ results/telemetry.php | 6 ++++++ results/telemetry_settings.php | 1 + 3 files changed, 9 insertions(+) diff --git a/doc.md b/doc.md index d91335e..edfd0ec 100644 --- a/doc.md +++ b/doc.md @@ -101,6 +101,8 @@ To enable ID obfuscation, edit `results/telemetry_settings.php` and set `$enable __Important:__ ID obfuscation currently only works on 64-bit PHP! +While you're editing `results/telemetry_settings.php`, you might want to set `$redact_ip_addresses` to `true`, this way, all IP addresses will be removed from the telemetry for better privacy. This is disabled by default. + ##### Seeing the results A basic front-end for visualizing and searching tests by ID is available in `results/stats.php`. diff --git a/results/telemetry.php b/results/telemetry.php index 7ef0839..b021759 100644 --- a/results/telemetry.php +++ b/results/telemetry.php @@ -13,6 +13,12 @@ $ping=($_POST["ping"]); $jitter=($_POST["jitter"]); $log=($_POST["log"]); +if($redact_ip_addresses){ + $ip="0.0.0.0"; + $ispinfo=preg_replace('/((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?1)){3}/',"0.0.0.0",preg_replace('/(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:(?!$)|$)|\2))(?4){5}((?4){2}|((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?7)){3})/i',"0.0.0.0",$ispinfo)); + $log=preg_replace('/((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?1)){3}/',"0.0.0.0",preg_replace('/(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:(?!$)|$)|\2))(?4){5}((?4){2}|((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?7)){3})/i',"0.0.0.0",$log)); +} + header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0, s-maxage=0'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); diff --git a/results/telemetry_settings.php b/results/telemetry_settings.php index 038bfb8..c4e87a9 100644 --- a/results/telemetry_settings.php +++ b/results/telemetry_settings.php @@ -3,6 +3,7 @@ $db_type="mysql"; //Type of db: "mysql", "sqlite" or "postgresql" $stats_password="PASSWORD"; //password to login to stats.php. Change this!!! $enable_id_obfuscation=false; //if set to true, test IDs will be obfuscated to prevent users from guessing URLs of other tests +$redact_ip_addresses=false; //if set to true, IP addresses will be redacted from IP and ISP info fields, as well as the log // Sqlite3 settings $Sqlite_db_file = "../../speedtest_telemetry.sql"; From 1b059e6cc61b57bda549c4ffcaf57b4526a1f0d6 Mon Sep 17 00:00:00 2001 From: dosse91 Date: Sun, 29 Sep 2019 08:41:26 +0200 Subject: [PATCH 3/5] Improved redact_ip_addresses --- results/telemetry.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/results/telemetry.php b/results/telemetry.php index b021759..3163f54 100644 --- a/results/telemetry.php +++ b/results/telemetry.php @@ -15,8 +15,15 @@ $log=($_POST["log"]); if($redact_ip_addresses){ $ip="0.0.0.0"; - $ispinfo=preg_replace('/((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?1)){3}/',"0.0.0.0",preg_replace('/(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:(?!$)|$)|\2))(?4){5}((?4){2}|((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?7)){3})/i',"0.0.0.0",$ispinfo)); - $log=preg_replace('/((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?1)){3}/',"0.0.0.0",preg_replace('/(((?=(?>.*?(::))(?!.+\3)))\3?|([\dA-F]{1,4}(\3|:(?!$)|$)|\2))(?4){5}((?4){2}|((2[0-4]|1\d|[1-9])?\d|25[0-5])(\.(?7)){3})/i',"0.0.0.0",$log)); + $ipv4_regex='/(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/'; + $ipv6_regex='/(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/'; + $hostname_regex='/"hostname":"([^\\\\"]|\\\\")*"/'; + $ispinfo=preg_replace($ipv4_regex,"0.0.0.0",$ispinfo); + $ispinfo=preg_replace($ipv6_regex,"0.0.0.0",$ispinfo); + $ispinfo=preg_replace($hostname_regex,"\"hostname\":\"REDACTED\"",$ispinfo); + $log=preg_replace($ipv4_regex,"0.0.0.0",$log); + $log=preg_replace($ipv6_regex,"0.0.0.0",$log); + $log=preg_replace($hostname_regex,"\"hostname\":\"REDACTED\"",$log); } header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0, s-maxage=0'); From 0c7ef8e979f8daee9f42606d1c94148ee64ccd45 Mon Sep 17 00:00:00 2001 From: dosse91 Date: Tue, 1 Oct 2019 06:46:22 +0200 Subject: [PATCH 4/5] Fixed query error in newer versions of sqlite and postgre --- results/stats.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/results/stats.php b/results/stats.php index 8ea04b6..834afed 100644 --- a/results/stats.php +++ b/results/stats.php @@ -110,7 +110,7 @@ if($stats_password=="PASSWORD"){ $q->store_result(); $q->bind_result($id,$timestamp,$ip,$ispinfo,$ua,$lang,$dl,$ul,$ping,$jitter,$log,$extra); } else if($db_type=="sqlite"||$db_type=="postgresql"){ - $q=$conn->prepare("select id,timestamp,ip,ispinfo,ua,lang,dl,ul,ping,jitter,log,extra from speedtest_users order by timestamp desc limit 0,100"); + $q=$conn->prepare("select id,timestamp,ip,ispinfo,ua,lang,dl,ul,ping,jitter,log,extra from speedtest_users order by timestamp desc limit 100"); $q->execute(); }else die(); } From c95cfb10be7c523659b6b6b2ff302bc48b7ff2fe Mon Sep 17 00:00:00 2001 From: dosse91 Date: Mon, 7 Oct 2019 07:56:44 +0200 Subject: [PATCH 5/5] Fixed a typo --- speedtest_worker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/speedtest_worker.js b/speedtest_worker.js index ad1e94d..814a2ad 100644 --- a/speedtest_worker.js +++ b/speedtest_worker.js @@ -130,7 +130,7 @@ this.addEventListener("message", function(e) { // ff more precise with 1 upload stream settings.xhr_ulMultistream = 1; } - if (typeof s.xhr_ulMultistream === "undefined") { + if (typeof s.ping_allowPerformanceApi === "undefined") { // ff performance API sucks settings.ping_allowPerformanceApi = false; }