HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Thu, 07 Nov 2024 00:19:36 GMT
Content-Type: text/html
Content-Length: 6931
Last-Modified: Mon, 18 Jul 2022 10:29:56 GMT
Connection: close
ETag: "62d53624-1b13"
Accept-Ranges: bytes
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no" />
<meta charset="UTF-8" />
<link rel="shortcut icon" href="favicon.ico">
<script type="text/javascript" src="speedtest.js"></script>
<script type="text/javascript">
function I(i){return document.getElementById(i);}
//INITIALIZE SPEEDTEST
var s=new Speedtest(); //create speedtest object
var meterBk=/Trident.*rv:(\d+\.\d+)/i.test(navigator.userAgent)?"#EAEAEA":"#80808040";
var dlColor="#6060AA",
ulColor="#616161";
var progColor=meterBk;
//CODE FOR GAUGES
function drawMeter(c,amount,bk,fg,progress,prog){
var ctx=c.getContext("2d");
var dp=window.devicePixelRatio||1;
var cw=c.clientWidth*dp, ch=c.clientHeight*dp;
var sizScale=ch*0.0055;
if(c.width==cw&&c.height==ch){
ctx.clearRect(0,0,cw,ch);
}else{
c.width=cw;
c.height=ch;
}
ctx.beginPath();
ctx.strokeStyle=bk;
ctx.lineWidth=12*sizScale;
ctx.arc(c.width/2,c.height-58*sizScale,c.height/1.8-ctx.lineWidth,-Math.PI*1.1,Math.PI*0.1);
ctx.stroke();
ctx.beginPath();
ctx.strokeStyle=fg;
ctx.lineWidth=12*sizScale;
ctx.arc(c.width/2,c.height-58*sizScale,c.height/1.8-ctx.lineWidth,-Math.PI*1.1,amount*Math.PI*1.2-Math.PI*1.1);
ctx.stroke();
if(typeof progress !== "undefined"){
ctx.fillStyle=prog;
ctx.fillRect(c.width*0.3,c.height-16*sizScale,c.width*0.4*progress,4*sizScale);
}
}
function mbpsToAmount(s){
return 1-(1/(Math.pow(1.3,Math.sqrt(s))));
}
function format(d){
d=Number(d);
if(d<10) return d.toFixed(2);
if(d<100) return d.toFixed(1);
return d.toFixed(0);
}
//UI CODE
var uiData=null;
function startStop(){
if(s.getState()==3){
//speedtest is running, abort
s.abort();
data=null;
I("startStopBtn").className="";
initUI();
}else{
//test is not running, begin
I("startStopBtn").className="running";
s.onupdate=function(data){
uiData=data;
};
s.onend=function(aborted){
I("startStopBtn").className="";
updateUI(true);
};
s.start();
}
}
//this function reads the data sent back by the test and updates the UI
function updateUI(forced){
if(!forced&&s.getState()!=3) return;
if(uiData==null) return;
var status=uiData.testState;
I("ip").textContent=uiData.clientIp;
I("dlText").textContent=(status==1&&uiData.dlStatus==0)?"...":format(uiData.dlStatus);
drawMeter(I("dlMeter"),mbpsToAmount(Number(uiData.dlStatus*(status==1?oscillate():1))),meterBk,dlColor,Number(uiData.dlProgress),progColor);
I("ulText").textContent=(status==3&&uiData.ulStatus==0)?"...":format(uiData.ulStatus);
drawMeter(I("ulMeter"),mbpsToAmount(Number(uiData.ulStatus*(status==3?oscillate():1))),meterBk,ulColor,Number(uiData.ulProgress),progColor);
I("pingText").textContent=format(uiData.pingStatus);
I("jitText").textContent=format(uiData.jitterStatus);
}
function oscillate(){
return 1+0.02*Math.sin(Date.now()/100);
}
//update the UI every frame
window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||(function(callback,element){setTimeout(callback,1000/60);});
function frame(){
requestAnimationFrame(frame);
updateUI();
}
frame(); //start frame loop
//function to (re)initialize UI
function initUI(){
drawMeter(I("dlMeter"),0,meterBk,dlColor,0);
drawMeter(I("ulMeter"),0,meterBk,ulColor,0);
I("dlText").textContent="";
I("ulText").textContent="";
I("pingText").textContent="";
I("jitText").textContent="";
I("ip").textContent="";
}
</script>
<style type="text/css">
html,body{
border:none; padding:0; margin:0;
background:#FFFFFF;
color:#202020;
}
body{
text-align:center;
font-family:"Roboto",sans-serif;
}
h1{
color:#404040;
}
#startStopBtn{
display:inline-block;
margin:0 auto;
color:#6060AA;
background-color:rgba(0,0,0,0);
border:0.15em solid #6060FF;
border-radius:0.3em;
transition:all 0.3s;
box-sizing:border-box;
width:8em; height:3em;
line-height:2.7em;
cursor:pointer;
box-shadow: 0 0 0 rgba(0,0,0,0.1), inset 0 0 0 rgba(0,0,0,0.1);
}
#startStopBtn:hover{
box-shadow: 0 0 2em rgba(0,0,0,0.1), inset 0 0 1em rgba(0,0,0,0.1);
}
#startStopBtn.running{
background-color:#FF3030;
border-color:#FF6060;
color:#FFFFFF;
}
#startStopBtn:before{
content:"Start";
}
#startStopBtn.running:before{
content:"Abort";
}
#test{
margin-top:2em;
margin-bottom:12em;
}
div.testArea{
display:inline-block;
width:16em;
height:12.5em;
position:relative;
box-sizing:border-box;
}
div.testArea2{
display:inline-block;
width:14em;
height:7em;
position:relative;
box-sizing:border-box;
text-align:center;
}
div.testArea div.testName{
position:absolute;
top:0.1em; left:0;
width:100%;
font-size:1.4em;
z-index:9;
}
div.testArea2 div.testName{
display:block;
text-align:center;
font-size:1.4em;
}
div.testArea div.meterText{
position:absolute;
bottom:1.55em; left:0;
width:100%;
font-size:2.5em;
z-index:9;
}
div.testArea2 div.meterText{
display:inline-block;
font-size:2.5em;
}
div.meterText:empty:before{
content:"0.00";
}
div.testArea div.unit{
position:absolute;
bottom:2em; left:0;
width:100%;
z-index:9;
}
div.testArea2 div.unit{
display:inline-block;
}
div.testArea canvas{
position:absolute;
top:0; left:0; width:100%; height:100%;
z-index:1;
}
div.testGroup{
display:block;
margin: 0 auto;
}
@media all and (max-width:40em){
body{
font-size:0.8em;
}
}
</style>
<title>SmokeTunnel Speedtest</title>
</head>
<body>
<h1><img src="smoke.png" alt="Smoke VPN tunnel speedtest">mokeTunnel Speedtest</h1>
<div id="testWrapper">
<div id="startStopBtn" onclick="startStop()"></div>
<div id="test">
<div class="testGroup">
<div class="testArea2">
<div class="testName">Ping</div>
<div id="pingText" class="meterText" style="color:#AA6060"></div>
<div class="unit">ms</div>
</div>
<div class="testArea2">
<div class="testName">Jitter</div>
<div id="jitText" class="meterText" style="color:#AA6060"></div>
<div class="unit">ms</div>
</div>
</div>
<div class="testGroup">
<div class="testArea">
<div class="testName">Download</div>
<canvas id="dlMeter" class="meter"></canvas>
<div id="dlText" class="meterText"></div>
<div class="unit">Mbps</div>
</div>
<div class="testArea">
<div class="testName">Upload</div>
<canvas id="ulMeter" class="meter"></canvas>
<div id="ulText" class="meterText"></div>
<div class="unit">Mbps</div>
</div>
</div>
<div id="ipArea">
<span id="ip"></span>
</div>
</div>
<a href="https://www.smoketunnel.com/">This speedtest is provided by SmokeTunnel</a>
</div>
<h1>Opensource project by Liberspeed</h1>
<script type="text/javascript">setTimeout(function(){initUI()},100);</script>
</body>
</html>
{
"@category" : "datascan",
"@timestamp" : "2024-11-07T00:19:36.000Z",
"alternativeip" : [
"149.202.87.45",
"51.255.117.91",
"51.255.117.92",
"51.255.117.93",
"51.255.117.95"
],
"app" : {
"extract" : {
"domain" : [
"smoketunnel.com"
],
"hostname" : [
"www.smoketunnel.com"
],
"url" : [
"https://www.smoketunnel.com/"
]
},
"http" : {
"bodymd5" : "8634f80deaa3a7b9dc5a19cc887f08b7",
"bodymmh3" : -1169732701,
"header" : [
{
"value" : "Mon, 18 Jul 2022 10:29:56 GMT",
"name" : "Last-Modified"
},
{
"name" : "ETag",
"value" : "62d53624-1b13"
}
],
"headermd5" : "7cc11d7c7254197fc3d4afdc95bd6b09",
"headermmh3" : 1284591163,
"title" : "SmokeTunnel Speedtest"
},
"length" : 7175
},
"asn" : "AS16276",
"basicconstraints" : "critical",
"ca" : "false",
"country" : "FR",
"cpe" : "<enterprise field>: cpe",
"cpecount" : "<enterprise field>: cpecount",
"data" : "HTTP/1.1 200 OK\r\nServer: nginx/1.18.0 (Ubuntu)\r\nDate: Thu, 07 Nov 2024 00:19:36 GMT\r\nContent-Type: text/html\r\nContent-Length: 6931\r\nLast-Modified: Mon, 18 Jul 2022 10:29:56 GMT\r\nConnection: close\r\nETag: \"62d53624-1b13\"\r\nAccept-Ranges: bytes\r\n\r\n<!DOCTYPE html>\n<html>\n<head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no\" />\n<meta charset=\"UTF-8\" />\n<link rel=\"shortcut icon\" href=\"favicon.ico\">\n<script type=\"text/javascript\" src=\"speedtest.js\"></script>\n<script type=\"text/javascript\">\nfunction I(i){return document.getElementById(i);}\n//INITIALIZE SPEEDTEST\nvar s=new Speedtest(); //create speedtest object\n\nvar meterBk=/Trident.*rv:(\\d+\\.\\d+)/i.test(navigator.userAgent)?\"#EAEAEA\":\"#80808040\";\nvar dlColor=\"#6060AA\",\n\tulColor=\"#616161\";\nvar progColor=meterBk;\n\n//CODE FOR GAUGES\nfunction drawMeter(c,amount,bk,fg,progress,prog){\n\tvar ctx=c.getContext(\"2d\");\n\tvar dp=window.devicePixelRatio||1;\n\tvar cw=c.clientWidth*dp, ch=c.clientHeight*dp;\n\tvar sizScale=ch*0.0055;\n\tif(c.width==cw&&c.height==ch){\n\t\tctx.clearRect(0,0,cw,ch);\n\t}else{\n\t\tc.width=cw;\n\t\tc.height=ch;\n\t}\n\tctx.beginPath();\n\tctx.strokeStyle=bk;\n\tctx.lineWidth=12*sizScale;\n\tctx.arc(c.width/2,c.height-58*sizScale,c.height/1.8-ctx.lineWidth,-Math.PI*1.1,Math.PI*0.1);\n\tctx.stroke();\n\tctx.beginPath();\n\tctx.strokeStyle=fg;\n\tctx.lineWidth=12*sizScale;\n\tctx.arc(c.width/2,c.height-58*sizScale,c.height/1.8-ctx.lineWidth,-Math.PI*1.1,amount*Math.PI*1.2-Math.PI*1.1);\n\tctx.stroke();\n\tif(typeof progress !== \"undefined\"){\n\t\tctx.fillStyle=prog;\n\t\tctx.fillRect(c.width*0.3,c.height-16*sizScale,c.width*0.4*progress,4*sizScale);\n\t}\n}\nfunction mbpsToAmount(s){\n\treturn 1-(1/(Math.pow(1.3,Math.sqrt(s))));\n}\nfunction format(d){\n d=Number(d);\n if(d<10) return d.toFixed(2);\n if(d<100) return d.toFixed(1);\n return d.toFixed(0);\n}\n\n//UI CODE\nvar uiData=null;\nfunction startStop(){\n if(s.getState()==3){\n\t\t//speedtest is running, abort\n\t\ts.abort();\n\t\tdata=null;\n\t\tI(\"startStopBtn\").className=\"\";\n\t\tinitUI();\n\t}else{\n\t\t//test is not running, begin\n\t\tI(\"startStopBtn\").className=\"running\";\n\t\ts.onupdate=function(data){\n uiData=data;\n\t\t};\n\t\ts.onend=function(aborted){\n I(\"startStopBtn\").className=\"\";\n updateUI(true);\n\t\t};\n\t\ts.start();\n\t}\n}\n//this function reads the data sent back by the test and updates the UI\nfunction updateUI(forced){\n\tif(!forced&&s.getState()!=3) return;\n\tif(uiData==null) return;\n\tvar status=uiData.testState;\n\tI(\"ip\").textContent=uiData.clientIp;\n\tI(\"dlText\").textContent=(status==1&&uiData.dlStatus==0)?\"...\":format(uiData.dlStatus);\n\tdrawMeter(I(\"dlMeter\"),mbpsToAmount(Number(uiData.dlStatus*(status==1?oscillate():1))),meterBk,dlColor,Number(uiData.dlProgress),progColor);\n\tI(\"ulText\").textContent=(status==3&&uiData.ulStatus==0)?\"...\":format(uiData.ulStatus);\n\tdrawMeter(I(\"ulMeter\"),mbpsToAmount(Number(uiData.ulStatus*(status==3?oscillate():1))),meterBk,ulColor,Number(uiData.ulProgress),progColor);\n\tI(\"pingText\").textContent=format(uiData.pingStatus);\n\tI(\"jitText\").textContent=format(uiData.jitterStatus);\n}\nfunction oscillate(){\n\treturn 1+0.02*Math.sin(Date.now()/100);\n}\n//update the UI every frame\nwindow.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||(function(callback,element){setTimeout(callback,1000/60);});\nfunction frame(){\n\trequestAnimationFrame(frame);\n\tupdateUI();\n}\nframe(); //start frame loop\n//function to (re)initialize UI\nfunction initUI(){\n\tdrawMeter(I(\"dlMeter\"),0,meterBk,dlColor,0);\n\tdrawMeter(I(\"ulMeter\"),0,meterBk,ulColor,0);\n\tI(\"dlText\").textContent=\"\";\n\tI(\"ulText\").textContent=\"\";\n\tI(\"pingText\").textContent=\"\";\n\tI(\"jitText\").textContent=\"\";\n\tI(\"ip\").textContent=\"\";\n}\n</script>\n<style type=\"text/css\">\n\thtml,body{\n\t\tborder:none; padding:0; margin:0;\n\t\tbackground:#FFFFFF;\n\t\tcolor:#202020;\n\t}\n\tbody{\n\t\ttext-align:center;\n\t\tfont-family:\"Roboto\",sans-serif;\n\t}\n\th1{\n\t\tcolor:#404040;\n\t}\n\t#startStopBtn{\n\t\tdisplay:inline-block;\n\t\tmargin:0 auto;\n\t\tcolor:#6060AA;\n\t\tbackground-color:rgba(0,0,0,0);\n\t\tborder:0.15em solid #6060FF;\n\t\tborder-radius:0.3em;\n\t\ttransition:all 0.3s;\n\t\tbox-sizing:border-box;\n\t\twidth:8em; height:3em;\n\t\tline-height:2.7em;\n\t\tcursor:pointer;\n\t\tbox-shadow: 0 0 0 rgba(0,0,0,0.1), inset 0 0 0 rgba(0,0,0,0.1);\n\t}\n\t#startStopBtn:hover{\n\t\tbox-shadow: 0 0 2em rgba(0,0,0,0.1), inset 0 0 1em rgba(0,0,0,0.1);\n\t}\n\t#startStopBtn.running{\n\t\tbackground-color:#FF3030;\n\t\tborder-color:#FF6060;\n\t\tcolor:#FFFFFF;\n\t}\n\t#startStopBtn:before{\n\t\tcontent:\"Start\";\n\t}\n\t#startStopBtn.running:before{\n\t\tcontent:\"Abort\";\n\t}\n\t#test{\n\t\tmargin-top:2em;\n\t\tmargin-bottom:12em;\n\t}\n\tdiv.testArea{\n\t\tdisplay:inline-block;\n\t\twidth:16em;\n\t\theight:12.5em;\n\t\tposition:relative;\n\t\tbox-sizing:border-box;\n\t}\n\tdiv.testArea2{\n\t\tdisplay:inline-block;\n\t\twidth:14em;\n\t\theight:7em;\n\t\tposition:relative;\n\t\tbox-sizing:border-box;\n\t\ttext-align:center;\n\t}\n\tdiv.testArea div.testName{\n\t\tposition:absolute;\n\t\ttop:0.1em; left:0;\n\t\twidth:100%;\n\t\tfont-size:1.4em;\n\t\tz-index:9;\n\t}\n\tdiv.testArea2 div.testName{\n display:block;\n text-align:center;\n font-size:1.4em;\n\t}\n\tdiv.testArea div.meterText{\n\t\tposition:absolute;\n\t\tbottom:1.55em; left:0;\n\t\twidth:100%;\n\t\tfont-size:2.5em;\n\t\tz-index:9;\n\t}\n\tdiv.testArea2 div.meterText{\n display:inline-block;\n font-size:2.5em;\n\t}\n\tdiv.meterText:empty:before{\n\t\tcontent:\"0.00\";\n\t}\n\tdiv.testArea div.unit{\n\t\tposition:absolute;\n\t\tbottom:2em; left:0;\n\t\twidth:100%;\n\t\tz-index:9;\n\t}\n\tdiv.testArea2 div.unit{\n\t\tdisplay:inline-block;\n\t}\n\tdiv.testArea canvas{\n\t\tposition:absolute;\n\t\ttop:0; left:0; width:100%; height:100%;\n\t\tz-index:1;\n\t}\n\tdiv.testGroup{\n\t\tdisplay:block;\n margin: 0 auto;\n\t}\n\t@media all and (max-width:40em){\n\t\tbody{\n\t\t\tfont-size:0.8em;\n\t\t}\n\t}\n</style>\n<title>SmokeTunnel Speedtest</title>\n</head>\n<body>\n<h1><img src=\"smoke.png\" alt=\"Smoke VPN tunnel speedtest\">mokeTunnel Speedtest</h1>\n<div id=\"testWrapper\">\n\t<div id=\"startStopBtn\" onclick=\"startStop()\"></div>\n\t<div id=\"test\">\n <div class=\"testGroup\">\n\t\t\t<div class=\"testArea2\">\n\t\t\t\t<div class=\"testName\">Ping</div>\n\t\t\t\t<div id=\"pingText\" class=\"meterText\" style=\"color:#AA6060\"></div>\n\t\t\t\t<div class=\"unit\">ms</div>\n\t\t\t</div>\n\t\t\t<div class=\"testArea2\">\n\t\t\t\t<div class=\"testName\">Jitter</div>\n\t\t\t\t<div id=\"jitText\" class=\"meterText\" style=\"color:#AA6060\"></div>\n\t\t\t\t<div class=\"unit\">ms</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"testGroup\">\n\t\t\t<div class=\"testArea\">\n\t\t\t\t<div class=\"testName\">Download</div>\n\t\t\t\t<canvas id=\"dlMeter\" class=\"meter\"></canvas>\n\t\t\t\t<div id=\"dlText\" class=\"meterText\"></div>\n\t\t\t\t<div class=\"unit\">Mbps</div>\n\t\t\t</div>\n\t\t\t<div class=\"testArea\">\n\t\t\t\t<div class=\"testName\">Upload</div>\n\t\t\t\t<canvas id=\"ulMeter\" class=\"meter\"></canvas>\n\t\t\t\t<div id=\"ulText\" class=\"meterText\"></div>\n\t\t\t\t<div class=\"unit\">Mbps</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"ipArea\">\n\t\t\t<span id=\"ip\"></span>\n\t\t</div>\n\t</div>\n\t<a href=\"https://www.smoketunnel.com/\">This speedtest is provided by SmokeTunnel</a>\n</div>\n<h1>Opensource project by Liberspeed</h1>\n<script type=\"text/javascript\">setTimeout(function(){initUI()},100);</script>\n</body>\n</html>\n",
"datamd5" : "7028d98bb007dc3b1a3f8cd5a5833525",
"datammh3" : -922485454,
"device" : {
"class" : "<enterprise field>: device.class"
},
"domain" : [
"ip-51-255-117.eu",
"waselpro.com"
],
"extkeyusage" : [
"serverAuth",
"clientAuth"
],
"fingerprint" : {
"md5" : "6f90a3a599becaf633a7fbaefc151886",
"sha1" : "6c85cdd60b8c32fec4d3bcfd2e6539d206cfa591",
"sha256" : "a3490d0994877a828430fff795fffbb586f5a6863673f0cc9a62d42e24ec23ba"
},
"geolocus" : {
"asn" : "AS16276",
"continent" : "EU",
"continentname" : "Europe",
"country" : "FR",
"countryname" : "France",
"domain" : [
"ovh.net"
],
"isineu" : "true",
"latitude" : "46.227638",
"location" : "46.227638,2.213749",
"longitude" : "2.213749",
"netname" : "FR-OVH-20150522",
"organization" : "OVH SAS",
"subnet" : "51.254.0.0/15"
},
"host" : [
"fr",
"ip94",
"speedtest"
],
"hostname" : [
"fr.eu.waselpro.com",
"ip94.ip-51-255-117.eu",
"speedtest.fr.eu.waselpro.com"
],
"ip" : "51.255.117.94",
"ipv6" : "false",
"issuer" : {
"commonname" : "R10",
"country" : "US",
"organization" : "Let's Encrypt"
},
"keyusage" : [
"digitalSignature",
"keyEncipherment"
],
"latitude" : "48.8582",
"location" : "48.8582,2.3387",
"longitude" : "2.3387",
"node" : {
"country" : "<enterprise field>: node.country",
"groupid" : "<enterprise field>: node.groupid",
"id" : "<enterprise field>: node.id",
"physicalcountry" : "<enterprise field>: node.physicalcountry"
},
"organization" : "OVH SAS",
"os" : "Linux",
"osdistribution" : "Ubuntu",
"osvendor" : "Linux",
"port" : 9402,
"product" : "Nginx",
"productvendor" : "F5",
"productversion" : "1.18.0",
"protocol" : "http",
"protocolversion" : "1.1",
"publickey" : {
"algorithm" : "rsaEncryption",
"length" : 2048
},
"reason" : "OK",
"reverse" : [
"ip94.ip-51-255-117.eu"
],
"seen_date" : "2024-11-07",
"serial" : "03:ed:d7:fd:15:c1:5f:ce:1e:e6:96:19:8d:65:64:4f:74:86",
"signature" : {
"algorithm" : "sha256WithRSAEncryption"
},
"source" : "datascan",
"status" : 200,
"subdomains" : [
"eu.waselpro.com",
"fr.eu.waselpro.com"
],
"subject" : {
"altname" : [
"fr.eu.waselpro.com",
"speedtest.fr.eu.waselpro.com"
],
"commonname" : "fr.eu.waselpro.com"
},
"subnet" : "51.254.0.0/15",
"tag" : "<enterprise field>: tag",
"tld" : [
"com",
"eu"
],
"tls" : "true",
"transport" : "tcp",
"url" : "/",
"validity" : {
"notafter" : "2025-01-22T08:41:11Z",
"notbefore" : "2024-10-24T08:41:12Z"
},
"version" : "v3",
"wildcard" : "false"
}