;type /fstats to use
alias fstats download hyperboards.hyperboards.com /index.cgi
alias download {
var %socket $+(dl,$chr(46),$nopath($2))
if (!$sock(%socket)) {
sockopen %socket $1 80
sockmark %socket HEAD $1 $2
;echo $color(info) -s * Beginning download.
}
else { echo $color(info) -s * Socket already in use. }
}
alias percent return $+($round($calc((100 / $2) * $1),2),%)
on *:SOCKOPEN:dl.*:{
if ($sockerr) { echo $color(info) -s * Error: $sock($sockname).wsmsg | return }
hadd -m ticks $sockname $ticks
var %file = $nopath($gettok($sock($sockname).mark,3,32)), %fullfile = $+(",$mircdir,%file,"), %sckr = sockwrite -n $sockname, %^ = $gettok($sock($sockname).mark,3,32)
;echo $color(info) -s * Creating file and contacting host...
write -c %fullfile
%sckr GET $iif(left(%^,1) != $chr(47),$chr(47) $+ %^,%^) HTTP/1.0
%sckr HOST: $gettok($sock($sockname).mark,2,32)
%sckr ACCEPT: *.*
%sckr $crlf
}
on *:SOCKREAD:dl.*:{
if ($sockerr) {
echo $color(info) -s * Error: $sock($sockname).wsmsg
return
}
var %a
:begin
if ($gettok($sock($sockname).mark,1,32) == head) { sockread %a }
else { sockread &b }
if ($sockbr) {
tokenize 32 $sock($sockname).mark
if ($1 == HEAD) {
if (%a) {
if ($gettok(%a,1,32) == Content-Length:) { var %totsize = $gettok(%a,2,32) }
}
else {
;echo $color(info) -s * Starting download... (Total size: $bytes(%totsize).suf $+ )
sockmark $sockname GET $2- %totsize
}
}
elseif ($1 == GET) {
; Downloading ...
var %file = $+(",$mircdir,$nopath($3),"), %cursize = $file(%file).size
var %totsize = $gettok($sock($sockname).mark,4,32)
;echo $color(info) -s * Downloaded ... $bytes(%cursize).suf ( $+ $percent(%cursize,%totsize) $+ )
bwrite %file -1 &b
}
goto begin
}
}
on *:SOCKCLOSE:dl.*:{
var %ticks = $calc(($ticks - $hget(ticks,$sockname)) /1000)
;echo $color(info) -s * Download of $nopath($gettok($sock($sockname).mark,3,32)) completed in %ticks seconds.
.timer 1 1 .rename index.cgi fstats.txt
.timer 1 2 fstats2
}
alias fstats2 {
if ($read(fstats.txt, w, *Total Members:*)) { /set %tm }
elseif ($read(fstats.txt, w, *Newest Member:*)) { /set %nm }
elseif ($read(fstats.txt, w, *Total Topics:*)) { /set %tt }
elseif ($read(fstats.txt, w, *Total Posts:*)) { /set %tp }
elseif ($read(fstats.txt, w, *Online:*)) { /set %om }
elseif ($read(fstats.txt, w, *Last Updated Topic:*)) { /set %lut }
else { /echo nothing found! }
/msg $chan Total Members: %tm $+ , Newest member: %nm $+ , Total; Topics: %tt $+ , Total Posts: %tp $+ , Online: %om $+ .
/msg $chan Last Updated Topic: %lut $+ .
.remove fstats.txt
}
menu * {
Forum-Stats:fstats
}