alias http {
if ($1 == -ssl) { var %ssl = 1 | tokenize 32 $2- }
var %host = $iif($1,$1,www.google.com)
var %sockname = $+(http,$ticks,$rand(1000,9999))
hadd -m %sockname headerfile $+(%sockname,_header.txt)
hadd %sockname datafile $+(%sockname,_data.html)
sockopen $iif(%ssl,-e) %sockname %host $iif(%ssl,443,80)
}
on *:sockopen:http*:{
var %a = sockwrite -n $sockname
var %host = $sock($sockname).addr
var %port = $sock($sockname).port
var %method = GET
var %page = /
%a %method %page HTTP/1.0
%a Host: $+(%host,:,%port)
%a Connection: close
%a $crlf
}
on *:sockread:http*:{
var %header
if (!$hget($sockname,header)) {
sockread %header
while (%header != $null) {
write $hget($sockname,headerfile) %header
sockread %header
}
if ($sockbr) hadd $sockname header 1
}
if ($hget($sockname,header)) {
sockread &read
while ($sockbr) {
bwrite $hget($sockname,datafile) -1 -1 &read
sockread &read
}
}
}
on *:sockclose:http*:{
echo -ag sockerr: $sockerr
echo -ag wsmsg: $sock($sockname).wsmsg
echo -ag header size: $file($hget($sockname,headerfile)).size
echo -ag data size: $file($hget($sockname,datafile)).size
.remove $hget($sockname,headerfile)
.remove $hget($sockname,datafile)
hfree $sockname
}