Merge branch 'master' into docker
This commit is contained in:
commit
2381ddcf63
7
doc.md
7
doc.md
|
@ -1,7 +1,7 @@
|
||||||
# HTML5 Speedtest
|
# HTML5 Speedtest
|
||||||
|
|
||||||
> by Federico Dossena
|
> by Federico Dossena
|
||||||
> Version 4.5.2, February 9, 2018
|
> Version 4.5.3, February 23, 2018
|
||||||
> [https://github.com/adolfintel/speedtest/](https://github.com/adolfintel/speedtest/)
|
> [https://github.com/adolfintel/speedtest/](https://github.com/adolfintel/speedtest/)
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,6 +217,11 @@ w.postMessage('start '+JSON.stringify(params))
|
||||||
* __Important:__ On Firefox, it is better to run the upload test last
|
* __Important:__ On Firefox, it is better to run the upload test last
|
||||||
* __getIp_ispInfo__: if true, the server will try to get ISP info and pass it along with the IP address. This will add `isp=true` to the request to `url_getIp`. getIP.php accomplishes this using ipinfo.io
|
* __getIp_ispInfo__: if true, the server will try to get ISP info and pass it along with the IP address. This will add `isp=true` to the request to `url_getIp`. getIP.php accomplishes this using ipinfo.io
|
||||||
* Default: `true`
|
* Default: `true`
|
||||||
|
* __getIp_ispInfo_distance__: if true, the server will try to get an estimate of the distance from the client to the speedtest server. This will add a `distance` argument to the request to `url_getIp`. `__getIp_ispInfo__` must be enabled in order for this to work. getIP.php accomplishes this using ipinfo.io
|
||||||
|
* `km`: estimate distance in kilometers
|
||||||
|
* `mi`: estimate distance in miles
|
||||||
|
* not set: do not measure distance
|
||||||
|
* Default: `km`
|
||||||
* __enable_quirks__: enables browser-specific optimizations. These optimizations override some of the default settings. They do not override settings that are explicitly set.
|
* __enable_quirks__: enables browser-specific optimizations. These optimizations override some of the default settings. They do not override settings that are explicitly set.
|
||||||
* Default: `true`
|
* Default: `true`
|
||||||
* __garbagePhp_chunkSize__: size of chunks sent by garbage.php in megabytes
|
* __garbagePhp_chunkSize__: size of chunks sent by garbage.php in megabytes
|
||||||
|
|
56
getIP.php
56
getIP.php
|
@ -11,12 +11,58 @@
|
||||||
$ip=$_SERVER['REMOTE_ADDR'];
|
$ip=$_SERVER['REMOTE_ADDR'];
|
||||||
}
|
}
|
||||||
$ip=preg_replace("/^::ffff:/", "", $ip);
|
$ip=preg_replace("/^::ffff:/", "", $ip);
|
||||||
$isp="";
|
/**
|
||||||
|
* Optimized algorithm from http://www.codexworld.com
|
||||||
|
*
|
||||||
|
* @param float $latitudeFrom
|
||||||
|
* @param float $longitudeFrom
|
||||||
|
* @param float $latitudeTo
|
||||||
|
* @param float $longitudeTo
|
||||||
|
*
|
||||||
|
* @return float [km]
|
||||||
|
*/
|
||||||
|
function distance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo){
|
||||||
|
$rad = M_PI / 180;
|
||||||
|
$theta = $longitudeFrom - $longitudeTo;
|
||||||
|
$dist = sin($latitudeFrom * $rad) * sin($latitudeTo * $rad) + cos($latitudeFrom * $rad) * cos($latitudeTo * $rad) * cos($theta * $rad);
|
||||||
|
return acos($dist) / $rad * 60 * 1.853;
|
||||||
|
}
|
||||||
if(isset($_GET["isp"])){
|
if(isset($_GET["isp"])){
|
||||||
$json = file_get_contents("https://ipinfo.io/".$ip."/json");
|
$isp="";
|
||||||
$details = json_decode($json,true);
|
try{
|
||||||
if(array_key_exists("org",$details)) $isp.=$details["org"]; else $isp.="Unknown ISP";
|
$json = file_get_contents("https://ipinfo.io/".$ip."/json");
|
||||||
if(array_key_exists("country",$details)) $isp.=" (".$details["country"].")";
|
$details = json_decode($json,true);
|
||||||
|
if(array_key_exists("org",$details)) $isp.=$details["org"]; else $isp.="Unknown ISP";
|
||||||
|
if(array_key_exists("country",$details)) $isp.=", ".$details["country"];
|
||||||
|
$clientLoc=NULL; $serverLoc=NULL;
|
||||||
|
if(array_key_exists("loc",$details)) $clientLoc=$details["loc"];
|
||||||
|
if(isset($_GET["distance"])){
|
||||||
|
if($clientLoc){
|
||||||
|
$json = file_get_contents("https://ipinfo.io/json");
|
||||||
|
$details = json_decode($json,true);
|
||||||
|
if(array_key_exists("loc",$details)) $serverLoc=$details["loc"];
|
||||||
|
if($serverLoc){
|
||||||
|
try{
|
||||||
|
$clientLoc=explode(",",$clientLoc);
|
||||||
|
$serverLoc=explode(",",$serverLoc);
|
||||||
|
$dist=distance($clientLoc[0],$clientLoc[1],$serverLoc[0],$serverLoc[1]);
|
||||||
|
if($_GET["distance"]=="mi"){
|
||||||
|
$dist/=1.609344;
|
||||||
|
$dist=round($dist,-1);
|
||||||
|
if($dist<15) $dist="<15";
|
||||||
|
$isp.=" (".$dist." mi)";
|
||||||
|
}else if($_GET["distance"]=="km"){
|
||||||
|
$dist=round($dist,-1);
|
||||||
|
if($dist<20) $dist="<20";
|
||||||
|
$isp.=" (".$dist." km)";
|
||||||
|
}
|
||||||
|
}catch(Exception $e){}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(Exception $ex){
|
||||||
|
$isp="Unknown ISP";
|
||||||
|
}
|
||||||
echo $ip." - ".$isp;
|
echo $ip." - ".$isp;
|
||||||
} else echo $ip;
|
} else echo $ip;
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
HTML5 Speedtest v4.5.2
|
HTML5 Speedtest v4.5.3
|
||||||
by Federico Dossena
|
by Federico Dossena
|
||||||
https://github.com/adolfintel/speedtest/
|
https://github.com/adolfintel/speedtest/
|
||||||
GNU LGPLv3 License
|
GNU LGPLv3 License
|
||||||
|
@ -33,6 +33,7 @@ var settings = {
|
||||||
url_ping: 'empty.php', // path to an empty file, used for ping test. must be relative to this js file
|
url_ping: 'empty.php', // path to an empty file, used for ping test. must be relative to this js file
|
||||||
url_getIp: 'getIP.php', // path to getIP.php relative to this js file, or a similar thing that outputs the client's ip
|
url_getIp: 'getIP.php', // path to getIP.php relative to this js file, or a similar thing that outputs the client's ip
|
||||||
getIp_ispInfo: true, //if set to true, the server will include ISP info with the IP address
|
getIp_ispInfo: true, //if set to true, the server will include ISP info with the IP address
|
||||||
|
getIp_ispInfo_distance: 'km', //km or mi=estimate distance from server in km/mi; set to false to disable distance estimation. getIp_ispInfo must be enabled in order for this to work
|
||||||
xhr_dlMultistream: 10, // number of download streams to use (can be different if enable_quirks is active)
|
xhr_dlMultistream: 10, // number of download streams to use (can be different if enable_quirks is active)
|
||||||
xhr_ulMultistream: 3, // number of upload streams to use (can be different if enable_quirks is active)
|
xhr_ulMultistream: 3, // number of upload streams to use (can be different if enable_quirks is active)
|
||||||
xhr_multistreamDelay: 300, //how much concurrent requests should be delayed
|
xhr_multistreamDelay: 300, //how much concurrent requests should be delayed
|
||||||
|
@ -168,7 +169,7 @@ function getIp (done) {
|
||||||
tlog('getIp failed')
|
tlog('getIp failed')
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
xhr.open('GET', settings.url_getIp + url_sep(settings.url_getIp) + (settings.getIp_ispInfo?"isp=true":"") + 'r=' + Math.random(), true)
|
xhr.open('GET', settings.url_getIp + url_sep(settings.url_getIp) + (settings.getIp_ispInfo?("isp=true"+(settings.getIp_ispInfo_distance?("&distance="+settings.getIp_ispInfo_distance+"&"):"&")):"&") + 'r=' + Math.random(), true)
|
||||||
xhr.send()
|
xhr.send()
|
||||||
}
|
}
|
||||||
// download test, calls done function when it's over
|
// download test, calls done function when it's over
|
||||||
|
|
2
speedtest_worker.min.js
vendored
2
speedtest_worker.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue