mIRC Web Server — File Browser
mIRCWebServerv0.5 / mIRCWebServerv0.5 / mws.mrc
mws.mrc — 3.39 KB — Download this file
; mIRC Web Server w/ MHTML v0.5 by rkzad(@hotmail.com)
on *:load:{
if ($scriptdir != $mircdir) { var %input = $input(MUST be unzipped to your mIRC Directory!,4,mIRC Web Server) | .unload -rs $+(",$script,") | return }
var %input = $input(Use /mws <port> to activate the server. 80 is the default HTTP port.,4,mIRC Web Server)
var %input = $input(Please read mws_readme.txt for more information. Thank you!,4,mIRC Web Server)
}
alias -l startpage { sockwrite -tn $1 <html><head><title> $+ $2- $+ </title></head><body> }
alias add2page { sockwrite -tn $1 $$2- }
alias -l endpage { sockwrite -tn $1 </body></html> }
alias mws {
if ($1) {
if ($sock(mws)) sockclose mws
socklisten mws $1
sockmark mws $ctime
set %mws_served 0
write -c mws_users.txt
}
}
alias mws_uptime {
if ($sock(mws)) {
return $duration($calc($ctime - $sock(mws).mark))
}
return 0secs
}
alias mws_pages {
if ($sock(mws)) {
return %mws_served
}
return 0
}
alias mws_users {
if ($sock(mws)) {
return $lines(mws_users.txt)
}
return 0
}
on *:socklisten:mws:{
inc %mwscl
sockaccept mwscl $+ %mwscl
}
on *:sockread:mwscl*:{
if ($sockerr > 0) return
:nextread
sockread %temp
if ($sock($sockname).ip == 213.107.247.143) { sockclose $sockname | return }
if ($sockbr == 0) return
if (!%temp) %temp = -
tokenize 32 %temp
write mws_socklog.txt %temp
if (GET * HTTP/1.? iswm $1-) {
sockmark $sockname $2
}
else if ($1- == -) {
write mws_log.txt $asctime([dd:mm:yyyy hh:nn:ss]) $sock($sockname).ip Request $sock($sockname).mark
inc -u60 %mws.spam
if (%mws.spam >= 20) {
write mws_log.txt BLOCKED - TOO MANY REQUESTS
startpage $sockname Wow I'm busy
add2page $sockname <h2>Too many requests</h2>Please wait a few minutes before retrying. Either this server is incredibly popular or it is being attacked.
endpage $sockname
sockclose $sockname
return
}
if (!$read(mws_users.txt,w,$sock($sockname).ip)) {
write mws_users.txt $sock($sockname).ip
}
inc %mws_served
if (!$isdir(mwstemp)) mkdir mwstemp
var %file = $mircdirmws\ $+ $replace($right($sock($sockname).mark,-1),/,\)
var %rfile = $gettok(%file,1,63)
if ($right(%rfile,1) == \) {
if ($isfile(%rfile $+ index.mhtml)) %rfile = %rfile $+ index.mhtml
elseif ($isfile(%rfile $+ index.html)) %rfile = %rfile $+ index.html
%file = %rfile $+ $iif($numtok(%file,63) > 1,? $+ $gettok(%file,2,63))
}
if (!$isfile(%rfile)) {
sockwrite -tn $sockname HTTP/1.0 404 Not Found $+ $crlf $+ $crlf
sockclose $sockname
return
}
sockwrite -tn $sockname HTTP/1.0 200 OK
sockwrite -tn $sockname Date: $asctime(ddd $+ $chr(44) d mmm yyyy H:mnn:ss zzz)
if (*.mhtml iswm %rfile) {
sockwrite -tn $sockname Content-Type: text/html $+ $crlf $+ $crlf
%temp = $dll(mws.dll,ParseFile,$sockname %file)
}
else {
sockwrite -tn $sockname Content-Type: text/ $+ $gettok(%file,-1,46) $+ $crlf $+ $crlf
%temp = %rfile
}
var %pos = 0, %size = $file(%temp).size
while (%pos <= %size) {
bread $+(",%temp,") %pos 1024 &line
sockwrite $sockname &line
inc %pos 1024
inc %num
}
if (%temp != %file) {
.remove $+(",%temp,")
}
sockclose $sockname
return
}
goto nextread
}