speed_test_mind_2015




{
local startTime [/system clock get time];

:global myurl "http://kenrockwell.com/canon/eos-m/18-55mm-stm/sample-images/IMG_0024.JPG"

/tool fetch url=$myurl  mode=http;



 local endTime [/system clock get time];
# subtract startTime from endTime to get time elapsed
local finalTime ( $endTime - $startTime );
# convert hours to seconds, add to sum
:local sum ( $sum + ( [ :pick $finalTime 0 2 ] * 60 * 60 ));
# convert minutes to seconds, add to sum
:set sum ( $sum + ( [ :pick $finalTime 3 5 ] * 60 ));
# add seconds to sum
:set sum ( $sum + [ :pick $finalTime 6 8 ] );



:local sise [[/file get [/file find name=IMG_0024.JPG] size] /1024] 
 
:local sdonspped ((($sise / $sum ) * 8 ) /1024) 
:local ddow ((($sdonspped *1000) /8) / 1024)

:global speedtest $sdonspped

:log warning  ("My connection Speed ".[:pick $sdonspped 0 1] .".". [:pick $sdonspped 1 3] . " Mbps" )

 
:log error ("My Speed Download  = ". $ddow ." Kbps")

 

}
{

:global myurl
:local result $myurl

:local resultLen [:len $result]
:local startLoc [:find $result "/ " +19]
:set startLoc ($startLoc +7)

:local endLoc [:find $result "/" +21]
:local hww [:pick $result $startLoc  $endLoc ]

:local avgRtt;
:local pin
:local pout
:local pinip [resolve $hww]

/tool flood-ping $pinip  count=10 do={
  :if ($sent = 10) do={
    :set avgRtt $"avg-rtt"
    :set pout $sent
    :set pin $received
  }
}
:local ploss (100 - (($pin * 100) / $pout))

:log warning ("Ping ". $hww. " ==> " .  [:tostr $avgRtt] . " ms " . " ( packets sent = " . $pout . "  packets received = " . $pin . "  packets lose = " . $ploss." )" )
}

:global speedtest
:local y [:len [/queue simple find comment="newmind"]]
:local r  [:len [/ip hotspot host find]]

:if ($r != $y ) do={\

:foreach dd in=[/ip firewall address-list find comment="My _ISP_Speed_Now"] do={

    :local  ndoad $speedtest

/queue simple remove [find comment="newmind"] ;

:local down value=$ndoad;

:local downlo value=(($down / r)*1000);
:local aspeed value=(0."/"."$downlo")

:local hold value=((($down / r) / 2)*1000);
:local ashold value=(0."/"."$hold")

:local max value=((($down / r) / 4)*1000);
:local amax value=(0."/"."$max")

/ip hotspot host
:foreach si in=[ find] do={
:local ip [get $si address]

/queue simple ;\

add burst-limit=$aspeed burst-threshold=$ashold burst-time=0s/20s comment=newmind direction=both disabled=no \
    interface=all limit-at=$amax  max-limit=$amax  name=$ip packet-marks="" parent=none priority=4 \
    queue=default-small/default-small target-addresses=$ip total-queue=default-small;\


}}}