1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
on *:load: { hadd -m ImageBrowser RootDir $sdir($scriptdir,Select image browser's root directory.) }
on *:socklisten:IB-Server: {
var %i = 1
while ($sock(IB- $+ %i)) inc %i
sockaccept IB- $+ %i
if ($exists($+($scriptdir,IB-,%i,.tmp))) .remove $qt($+($scriptdir,IB-,%i,.tmp))
}
on *:sockread:IB-*: {
var %tmp, %file
while (1) {
sockread %tmp
if ($sockerr) return
if (!$sockbr) break
if ($gettok(%tmp,1,32) == GET) var %file = $right($regsubex($replace($gettok(%tmp,2,32),+,$chr(32)),/%([0-9A-F]{2})/ig,$chr($base(\t,16,10))),-1)
}
var %% = sockwrite -n $sockname
if (%file == /SendScript) return $SendScript($sockname)
elseif ((!%file) || (. !isin %file)) return $DisplayFiles($sockname,%file)
elseif (!$exists($hget(ImageBrowser,RootDir) $+ %file)) {
echo -ag File not found: $hget(ImageBrowser,RootDir) $+ %file
%% HTTP/1.x 404 Not Found
%% Content-Type: text/html
%% Date: $asctime(ddd $+ $chr(44) dd mmm yyyy hh:nn:ss) $gettok($asctime(zzz),-1,32)
%% Server: ImageBrowser/1.0 (AlbieScript) mIRC/ $+ $version
%%
sockclose $sockname
return
}
else var %file = $hget(ImageBrowser,RootDir) $+ %file
%% HTTP/1.x 200 OK
%% Date: $asctime(ddd $+ $chr(44) dd mmm yyyy hh:nn:ss) $gettok($asctime(zzz),-1,32)
%% Server: ImageBrowser/1.0 (AlbieScript) mIRC/ $+ $version
%% Last-Modified: $asctime($file(%file).mtime,ddd $+ $chr(44) dd mmm yyyy hh:nn:ss) $gettok($asctime($file(%file).mtime,zzz),-1,32)
%% Content-Length: $file(%file).size
%% Content-Type: image/jpeg
%%
var %size = $iif($file(%file).size < $calc(16384-$sock($sockname).sq),$v1,$v2)
bread $qt(%file) 0 %size &data
sockwrite -b $sockname %size &data
sockmark $sockname %size %file
}
on *:sockwrite:IB-*: {
if ($sock($sockname).mark) var %size = $gettok($v1,1,32), %file = $gettok($v1,2-,32)
else { sockclose $sockname | return }
var %left = $file(%file).size - %size
var %read = $iif(%left < $calc(16384-$sock($sockname).sq),$v1,$v2)
if (%left == 0) { if (!$sock($sockname).sq) sockclose $sockname | return }
bread $qt(%file) $calc(%size - 1) %read &data
sockwrite -b $sockname %read &data
sockmark $sockname $calc(%size + %read) %file
}
alias -l DisplayFiles {
var %% = sockwrite -n $1
%% <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
%% <html>
%% <head><title>File browser</title></head>
%% <body>
%% <h1>Index of / $+ $2- </h1>
%% <table>
%% <tr><td> </td><td>Name</td><td>Last modified</td><td>Size</td><td>Description</td></tr>
%% <tr><td colspan='6'><hr></td></tr>
%% <tr><td colspan='6'> </td></tr>
%% <tr><td><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/ $+ $deltok(/ $+ $2-,-1,47) $+ ">Parent Directory</a></td><td>27-Feb-2007 21:36</td><td>-</td></tr>
/*
<IMG SRC="/icons/folder.gif" ALT="[DIR]"> <A HREF="_private/">_private/</A> 23-Feb-2007 11:21 -
%% <IMG SRC="/icons/folder.gif" ALT="[DIR]"> <A HREF="cgi-bin/">cgi-bin/</A> 23-Feb-2007 11:21 -
%% <IMG SRC="/icons/folder.gif" ALT="[DIR]"> <A HREF="images/">images/</A> 23-Feb-2007 11:21 -
%% <IMG SRC="/icons/text.gif" ALT="[TXT]"> <A HREF="postinfo.html">postinfo.html</A> 23-Feb-2007 11:21 2k
%% <IMG SRC="/icons/folder.gif" ALT="[DIR]"> <A HREF="suspended.page/">suspended.page/</A> 24-Feb-2007 00:32 -
%% <IMG SRC="/icons/unknown.gif" ALT="[ ]"> <A HREF="test.php">test.php</A> 27-Feb-2007 14:00 0k
*/
%% <tr><td colspan='6'><hr></td></tr>
%% </table>
%% <address>ImageBrowser/1.0 (AlbieScript) mIRC/ $+ $version Server</address>
%% To download <a href='/GetScript'>click here</a>.
%% </body></html>
}
|