Ren-Ren's Fileserver — File Browser
Ren-RensFileserverv1.2 / Ren-RensFileserverv1.2 / rfs-fsrv.mrc
rfs-fsrv.mrc — 29.88 KB — Download this file
; Ren-Ren's Fileserver v1.2
; Copyright© 2001-2003 by Adrian Au. All rights reserved.
; http://adrian.saxtus.gr
; http://www.geocities.com/renx2
; renx2@yahoo.com
;
on 1:unload:{
var %~rfsu = $rfs-def(win)
if (%_rfsunload != 1) unset %rfs*
hfree -w rfs*
if ($dialog(%~rfsu) != $null) dialog -x %~rfsu
}
; <fs>
alias rfs-fson {
if ($hget(rfs-fs,$1) != $null) goto End
if ($readini $rfs-def(ini) fs- $+ $1 ad == $null) { rfs-log $rfs-opt(log,fserror) $+ $rfs-opt(color2) $+ Error: $+ $rfs-opt(color3) $+ Cannot initiate Fserve $1 $+ . No ad specified. | goto End }
var %~rfson3 = $readini $rfs-def(ini) fs- $+ $1 chan
if (%~rfson3 == $null) { rfs-log $rfs-opt(log,fserror) $+ $rfs-opt(color2) $+ Error: $+ $rfs-opt(color3) $+ Cannot initiate Fserve $1 $+ . No target channel(s) specified. | goto End }
var %~rfson2 = $numtok(%~rfson3,32)
unset %~rfson4
while (%~rfson2 > 0) {
if ($timer(rfsad [ $+ [ $1 ] $+ [ $gettok(%~rfson3,%~rfson2,32) ] ] ) != $null) var %~rfson4 = $addtok(%~rfson4,$gettok(%~rfson3,%~rfson2,32),32)
dec %~rfson2 1
}
.timerrfsad $+ $1 $+ * off
if ($hget(rfs-fs) == $null) hmake rfs-fs 5
hadd rfs-fs $1 $readini $rfs-def(ini) fs $1
var %~rfson = $readini $rfs-def(ini) fs- $+ $1 adtimer
var %~rfson2 = $numtok(%~rfson3,32)
while (%~rfson2 > 0) {
if ($gettok(%~rfson,%~rfson2,32) >= $rfs-opt(minadtimer)) {
.timerrfsad $+ $1 $+ $gettok(%~rfson3,%~rfson2,32) 0 $gettok(%~rfson,%~rfson2,32) rfs-adtimer $1 $gettok(%~rfson3,%~rfson2,32)
if ($findtok(%~rfson4,$gettok(%~rfson3,%~rfson2,32),1,32) == $null) && ($me ison $gettok(%~rfson3,%~rfson2,32)) msg $gettok(%~rfson3,%~rfson2,32) $rfs-ad($1)
}
dec %~rfson2 1
}
rfs-sched $1 off
:End
}
; <fs>
alias rfs-qchk {
if ($window(@rfs-q- [ $+ [ $1 ] ] ) == $null) window -h @rfs-q- $+ $1
if ($line(@rfs-q- [ $+ [ $1 ] ] ,0) < 1) && ($exists( [ [ $rfs-opt(dir) ] $+ ] rfs-q- [ $+ [ $1 ] $+ ] .rfs) == $true) loadbuf @rfs-q- $+ $1 " $+ $rfs-opt(dir) $+ rfs-q- $+ $1 $+ .rfs"
}
; <nick> <chan>
alias rfs-list {
if ($hget(rfs-fs) == $null) goto End
var %~rfslist = $hget(rfs-fs,0).item
:A
if (%~rfslist < 1) goto End
var %~rfslist2 = $readini $rfs-def(ini) fs- $+ $hget(rfs-fs,%~rfslist).item chan
if ($findtok(%~rfslist2,$2,1,32) != $null) {
var %~rfslist2 = $readini $rfs-def(ini) fs- $+ $hget(rfs-fs,%~rfslist).item access
if (r isin %~rfslist2) || ((o isin %~rfslist2) && ($1 isop $2)) || ((v isin %~rfslist2) && ($1 isvoice $2)) || ((h isin %~rfslist2) && ($1 ishop $2)) {
var %~rfslist3 = $rfs-ad($hget(rfs-fs,%~rfslist).item)
if (%~rfslist3 != $null) rfs-notice $1 %~rfslist3
}
}
dec %~rfslist 1
goto A
:End
}
; <fs> <txt>
alias rfs-msgchan {
var %~rfsmsgchan = $readini $rfs-def(ini) fs- $+ $1 chan
if (%~rfsmsgchan == all) amsg $2-
else {
var %~rfsmsgchan2 = $numtok(%~rfsmsgchan,32)
while (%~rfsmsgchan2 > 0) {
if ($me ison $gettok(%~rfsmsgchan,%~rfsmsgchan2,32)) msg $gettok(%~rfsmsgchan,%~rfsmsgchan2,32) $2-
dec %~rfsmsgchan2 1
}
}
}
; <fs>
alias rfs-ad {
var %~rfsad = $readini $rfs-def(ini) fs- $+ $1 ad
if (%~rfsad == $null) return
var %~rfsad3 = $readini $rfs-def(ini) fs- $+ $1 trigsep
if (%~rfsad3 == $null) var %~rfsad3 = $rfs-def(trigsep)
var %~rfsad2 = $replace($readini $rfs-def(ini) fs $1,<ctcp>,/ctcp $me,<action>,/me,$chr(160), [ [ $chr(160) ] $+ [ %~rfsad3 ] $+ [ $chr(160) ] ] )
var %~rfsad2 = $replace(%~rfsad2,$chr(160),$chr(32))
var %~rfsad = $replace(%~rfsad,<trigger>,%~rfsad2)
var %~rfsad2 = $1 $readini $rfs-def(ini) fs- $+ $1 prop
if ($numtok(%~rfsad2,32) < 2) var %~rfsad2 = $1 $rfs-opt(prop)
var %~rfsad = $replace(%~rfsad,<maxq>,$rfs-opt(fs,maxq,%~rfsad2),<maxsend>,$rfs-opt(fs,maxsend,%~rfsad2),<maxq-i>,$rfs-opt(fs,maxq-i,%~rfsad2),<maxsend-i>,$rfs-opt(fs,maxsend-i,%~rfsad2),<maxonline>,$rfs-opt(fs,maxonline,%~rfsad2),<mincps>,$rfs-opt(fs,mincps,%~rfsad2),<maxcps>,$rfs-opt(fs,maxcps,%~rfsad2))
rfs-qchk $1
var %~rfsad = $replace(%~rfsad,<queue>,$line(@rfs-q- [ $+ [ $1 ] ] ,0),<freeq>,$calc($rfs-opt(fs,maxq,%~rfsad2) - $line(@rfs-q- [ $+ [ $1 ] ] ,0)))
var %~rfsad3 = $rfs-sendcnt($1,$rfs-opt(fs,maxsend,%~rfsad2),1)
var %~rfsad = $replace(%~rfsad,<send>,$calc($rfs-opt(fs,maxsend,%~rfsad2) - %~rfsad3),<freesend>,%~rfsad3)
var %~rfsad3 = $rfs-onlinecnt($1,$rfs-opt(fs,maxonline,%~rfsad2),1)
var %~rfsad = $replace(%~rfsad,<online>,$calc($rfs-opt(fs,maxonline,%~rfsad2) - %~rfsad3),<freeonline>,%~rfsad3)
var %~rfsad = $replace(%~rfsad,<created>,$rfs-stat($1,1))
var %~rfsad = $replace(%~rfsad,<access>,$rfs-stat($1,access))
var %~rfsad = $replace(%~rfsad,<sent>,$rfs-stat($1,sent))
var %~rfsad = $replace(%~rfsad,<sentb>,$rfs-stat($1,sentb))
var %~rfsad = $replace(%~rfsad,<fail>,$rfs-stat($1,fail))
var %~rfsad = $replace(%~rfsad,<failb>,$rfs-stat($1,failb))
var %~rfsad = $replace(%~rfsad,<recordcps>,$rfs-stat($1,cps))
var %~rfsad = $replace(%~rfsad,<fson>,$rfs-statfsonoff($1,on),<fsoff>,$rfs-statfsonoff($1,off))
var %~rfsad = $replace(%~rfsad,<r>,,<u>,,<b>,,<c>,)
if ($rfs-opt(ad) == 1) return %~rfsad 15» Using $rfs-def(scripts) «
else return %~rfsad
}
; <fs> <channel>
alias rfs-adtimer {
if ($me !ison $2) && ($2 != all) goto End
var %~rfsadtimer = $rfs-ad($1)
if (%~rfsadtimer != $null) {
if ($2 == all) amsg %~rfsadtimer
else msg $2 %~rfsadtimer
}
:End
}
; <nick> <chan or 0> <1 for skip address chk> <trigger>
alias rfs-fs {
if ($hget(rfs-fs) == $null) goto End
var %~rfsfs = $hget(rfs-fs,0).item
:A
if (%~rfsfs < 1) goto End
var %~rfsfs5 = $findtok($hget(rfs-fs,$hget(rfs-fs,%~rfsfs).item),$4-,1,160)
if (%~rfsfs5 == $null) { dec %~rfsfs 1 | goto A }
if ($3 == 0) && ($address($1,5) == $null) {
rfs-whois $1 rfs-fs $1-2 1 $4-
goto End
}
if ($address($1,5) != $null) {
var %~rfsfs8 = $address($1,5)
%rfs-whois> [ $+ [ $rfs-network ] $+ [ $1 ] ] = %~rfsfs8
}
else var %~rfsfs8 = %rfs-whois> [ $+ [ $rfs-network ] $+ [ $1 ] ]
if (%~rfsfs8 != $null) && ($exists($rfs-def(banfile)) == $true) && ($read -s $+ $mask(%~rfsfs8,3) $rfs-def(banfile) != $null) {
if ($rfs-opt(msg,ban) == 1) rfs-notice $1 You are banned from this Fserve.
goto End
}
var %~rfsfs2 = 1
:D
while ($ial($mask(%~rfsfs8,2),%~rfsfs2) != $null) {
if ($fserv($ial($mask(%~rfsfs8,2),%~rfsfs2).nick) != $null) && ($ial($mask(%~rfsfs8,2),%~rfsfs2).nick != $1) {
if ($rfs-opt(msg,clone) == 1) rfs-notice $1 Clone detected.
goto End
}
inc %~rfsfs2 1
}
var %~rfsfs = $hget(rfs-fs,%~rfsfs).item
var %~rfsfs4 = $gettok($readini $rfs-def(ini) fs- [ $+ [ %~rfsfs ] ] access,%~rfsfs5,32)
if ($2 != 0) && ($rfs-access($2,$1,%~rfsfs4) == n) goto End
if ($2 == 0) {
var %~rfsfs6 = $readini $rfs-def(ini) fs- $+ %~rfsfs chan
if (%~rfsfs6 == all) {
var %~rfsfs7 = 1
unset %~rfsfs6
while ($chan(%~rfsfs7) != $null) {
var %~rfsfs6 = $addtok(%~rfsfs6,$chan(%~rfsfs7),32)
inc %~rfsfs7 1
}
}
var %~rfsfs7 = $numtok(%~rfsfs6,32)
:B
while (%~rfsfs7 > 0) {
if ($rfs-access($gettok(%~rfsfs6,%~rfsfs7,32),$1,%~rfsfs4) != n) goto C
dec %~rfsfs7 1
}
goto End
}
:C
var %~rfsfs4 = %~rfsfs $readini $rfs-def(ini) fs- $+ %~rfsfs prop
if ($numtok(%~rfsfs4,32) < 2) var %~rfsfs4 = %~rfsfs $rfs-opt(prop)
if ($rfs-onlinecnt(%~rfsfs,$rfs-opt(fs,maxonline,%~rfsfs4)) < 1) { rfs-notice $1 Fserve ($replace($4-,<ctcp>,/ctcp me,<action>,/me) is currently full. Please try again later. | goto End }
if ($rfs-opt(onchan) == 0) {
var %~rfsfs2 = $rfs-onchan(%~rfsfs,$1,$2)
if ($numtok(%~rfsfs2,32) > 1) {
if ($rfs-opt(msg,onchanaccess) == 1) rfs-notice $1 You must be on one of these channels to access Fserve ($4-): %~rfsfs2
goto End
}
}
var %~rfsfs2 = $readini $rfs-def(ini) fs- $+ %~rfsfs dir $+ %~rfsfs5
if (%~rfsfs2 == $null) || ($exists(%~rfsfs2) != $true) {
rfs-log $rfs-opt(log,fserror) $+ $rfs-opt(color2) $+ Error: $+ $rfs-opt(color3) $+ Fserve failed. %~rfsfs2 does not exist.
goto End
}
if ($file(%~rfsfs2) != $null) {
if ($rfs-opt(fs,ipsend,%~rfsfs4) == 1) rfs-sendonly $gettok(%~rfsfs4,1-10,32) $gettok($mask(%~rfsfs8,2),2,64) $1 %~rfsfs2
else rfs-sendonly $gettok(%~rfsfs4,1-10,32) 0 $1 %~rfsfs2
goto End
}
var %~rfsfs3 = $readini $rfs-def(ini) fs- $+ %~rfsfs welcome $+ %~rfsfs5
if ($exists(%~rfsfs3) != $true) unset %~rfsfs3
else %~rfsfs3 = " $+ %~rfsfs3 $+ "
var %~rfsfs6 = $gettok($readini $rfs-def(ini) fs- [ $+ [ %~rfsfs ] ] maxsize,%~rfsfs5,32)
if (%~rfsfs6 == $null) var %~rfsfs6 = 0
%rfs-fs- [ $+ [ $1 ] ] = %~rfsfs4 %~rfsfs6
fserve $1 $rfs-opt(fs,maxsend-i,$1) " $+ %~rfsfs2 $+ " %~rfsfs3
:End
}
; <fs> <maxq> <maxsend> <maxq-i> <maxsend-i> <maxonline> <mincps> <maxcps> <autoresume> <ratio> <ip> <nick> <path and file>
alias rfs-sendonly {
if ($rfs-sendcnt($1,$3) < 1) || ($rfs-sendcnti($12,$5) < 1) {
rfs-qchk $1
if ($window(@rfs-q- [ $+ [ $1 ] ] ) == $null) window -h @rfs-q- $+ $1
if ($fline(@rfs-q- [ $+ [ $1 ] ] ,$12 *,0) >= $4) { rfs-notice $12 Sorry. Your queue is full. | goto End }
if ($line(@rfs-q- [ $+ [ $1 ] ] ,0) >= $2) { rfs-notice $12 Sorry. The fserve's queue is full. | goto End }
aline @rfs-q- $+ $1 $12 $5 $+ . $+ $7 $+ . $+ $8 $+ . $+ $9 $11 $13-
savebuf @rfs-q- $+ $1 " $+ $rfs-opt(dir) $+ rfs-q- $+ $1 $+ .rfs"
rfs-notice $12 Queued $nopath($13-) into slot $line(@rfs-q- [ $+ [ $1 ] ] ,0)
}
else {
if ($rfs-opt(onchan) == 0) var %~rfssendonly = $rfs-onchan($1,$12,0)
else %~rfssendonly = 0
if ($numtok(%~rfssendonly,32) > 1) rfs-notice $12 You must be on one of these channels to have access to files: %~rfssendonly
else {
rfs-notice $12 Sending $nopath($13-)
%~rfs-send- [ $+ [ $12 ] ] = $readini $rfs-def(ini) fs- $+ $1 chan
rfs-send $1 $5 $7-9 $11-
}
}
:End
}
; <nick>
alias rfs-welcome {
if ($rfs-opt(ratio) == 1) msg = $+ $1 $+ $rfs-opt(color1) $+ « Max Queue: $+ $rfs-opt(color3) $+ $rfs-opt(fs,maxq-i,$1) $+ $rfs-opt(color1) $+ »« Max Send: $+ $rfs-opt(color3) $+ $rfs-opt(fs,maxsend-i,$1) $+ $rfs-opt(color1) $+ »« UL/DL Ratio: $+ $rfs-opt(color3) $+ 1: $+ $rfs-opt(fs,ratio,$1) $+ $rfs-opt(color1) $+ »
else msg = $+ $1 $+ $rfs-opt(color1) $+ « Max Queue: $+ $rfs-opt(color3) $+ $rfs-opt(fs,maxq-i,$1) $+ $rfs-opt(color1) $+ »« Max Send: $+ $rfs-opt(color3) $+ $rfs-opt(fs,maxsend-i,$1) $+ $rfs-opt(color1) $+ »
if ($rfs-opt(fs,autoresume,$1) > 0) {
if ($remove($rfs-opt(autoresumeb),$chr(37)) > 0) {
if ($chr(37) isin $rfs-opt(autoresumeb)) var %~rfswelcome = $rfs-opt(fs,autoresume,$1) times (if less than $rfs-opt(autoresumeb) remaining)
else var %~rfswelcome = $rfs-opt(fs,autoresume,$1) times (if less than $rfs-opt(autoresumeb) Kb remaining)
}
else var %~rfswelcome = $rfs-opt(fs,autoresume,$1) times
}
else var %~rfswelcome = none
if ($rfs-opt(fs,maxcps,$1) == 0) msg = $+ $1 $+ $rfs-opt(color1) $+ « Min CPS: $+ $rfs-opt(color3) $+ $rfs-opt(fs,mincps,$1) Kb/s $+ $rfs-opt(color1) $+ »« Max CPS: $+ $rfs-opt(color3) $+ n/a $+ $rfs-opt(color1) $+ »« Autoresume Tries: $+ $rfs-opt(color3) $+ %~rfswelcome $+ $rfs-opt(color1) $+ »
else msg = $+ $1 $+ $rfs-opt(color1) $+ « Min CPS: $+ $rfs-opt(color3) $+ $rfs-opt(fs,mincps,$1) Kb/s $+ $rfs-opt(color1) $+ »« Max CPS: $+ $rfs-opt(color3) $+ $rfs-opt(fs,maxcps,$1) Kb/s $+ $rfs-opt(color1) $+ »« Autoresume Tries: $+ $rfs-opt(color3) $+ %~rfswelcome $+ $rfs-opt(color1) $+ »
if ($rfs-statfsonoff($rfs-opt(fs,fs,$1),off) != N/A) msg = $+ $1 $+ $rfs-opt(color1) $+ « The Fserve will close in $+ $rfs-opt(color3) $rfs-statfsonoff($rfs-opt(fs,fs,$1),off) $+ $rfs-opt(color1) $+ »
}
; <nick> <command>
alias rfs-lastcom {
if ($findtok(get.clr_queues.dir.ls,$2,46) == $null) && ($calc($uptime(mirc) - $gettok($rfs-opt(fs,lastcom,$1),1,46)) > 60) && ($gettok($rfs-opt(fs,lastcom,$1),3-,46) == $2-) {
var %~rfslastcom = $calc($gettok($rfs-opt(fs,lastcom,$1),2,46) + 1)
if (%~rfslastcom > $rfs-opt(antiidle)) && ($rfs-opt(antiidle) > 0) {
close -f $1
rfs-notice $1 No camping on the Fserve.
}
if ($fserv($1).status == active) msg = $+ $1 $+ $rfs-opt(color2) $+ You've typed the same command $calc(%~rfslastcom + 1) times.
}
else var %~rfslastcom = 0
if ($numtok(%rfs-fs- [ $+ [ $1 ] ],32) < 13) %rfs-fs- [ $+ [ $1 ] ] = $instok(%rfs-fs- [ $+ [ $1 ] ], [ [ $uptime(mirc) ] $+ ] . [ $+ [ %~rfslastcom ] $+ ] . [ $+ [ $2- ] ] ,13,32)
else %rfs-fs- [ $+ [ $1 ] ] = $puttok(%rfs-fs- [ $+ [ $1 ] ], [ [ $uptime(mirc) ] $+ ] . [ $+ [ %~rfslastcom ] $+ ] . [ $+ [ $2- ] ] ,13,32)
}
; <fs> <maxsend-i> <mincps> <maxcps> <autoresume> <ip> <nick> <path and file>
alias rfs-send {
if ($timer(rfscps) == $null) .timerrfscps 0 $rfs-opt(cpschk) rfs-cps
%rfs-send- [ $+ [ $7 ] $+ [ $chr(160) ] $+ [ $replace($8-,$chr(32),$chr(95)) ] ] = $1-6 %~rfs-send- [ $+ [ $7 ] ]
unset %~rfs-send- [ $+ [ $7 ] ]
if ($6 == 0) dcc send -cl $+ $4 $7 " $+ $8- $+ "
else dcc send -cl $+ $4 $6 $+ : $+ $rfs-opt(ipsendport) " $+ $8- $+ "
}
; <fs>
alias rfs-qsend {
if ($findtok(%rfs-q,$1,1,32) != $null) goto End
var %~rfsqsend3 = $1 $readini $rfs-def(ini) fs- $+ $1 prop
if ($numtok(%~rfsqsend3,32) < 2) var %~rfsqsend3 = $1 $rfs-opt(prop)
var %~rfsqsend4 = $rfs-sendcnt($1,$rfs-opt(fs,maxsend,%~rfsqsend3))
if (%~rfsqsend4 < 1) goto End
rfs-qchk $1
var %~rfsqsend2 = 1
while (%~rfsqsend4 > 0) {
:A
var %~rfsqsend = $line(@rfs-q- [ $+ [ $1 ] ] ,%~rfsqsend2)
if (%~rfsqsend == $null) {
if (%~rfsqsend2 > 1) savebuf @rfs-q- $+ $1 " $+ $rfs-opt(dir) $+ rfs-q- $+ $1 $+ .rfs"
else {
.remove " $+ $rfs-opt(dir) $+ rfs-q- $+ $1 $+ .rfs"
if (%~rfsqsend4 == 1) && ($rfs-opt(fsopt,slot,$readini $rfs-def(ini) fs- [ $+ [ $1 ] ] fsopt) == 1) rfs-msgchan $1 $+ $rfs-opt(color1) $+ A send slot has opened on my Fserve.
}
goto End
}
if ($rfs-sendcnti($gettok(%~rfsqsend,1,32),$gettok($gettok(%~rfsqsend,2,32),1,46)) < 1) {
inc %~rfsqsend2 1
goto A
}
if ($file($gettok(%~rfsqsend,4-,32)) == $null) {
rfs-log $rfs-opt(log,fserror) $+ $rfs-opt(color2) $+ Error: $+ $rfs-opt(color3) $+ Send fail ( $+ $gettok(%~rfsqsend,1,32) $+ ). File $gettok(%~rfsqsend,4-,32) does not exist.
dline @rfs-q- $+ $1 %~rfsqsend2
goto A
}
if ($rfs-opt(onchan) == 0) {
var %~rfsqsend5 = $rfs-onchan($1,$gettok(%~rfsqsend,1,32),0)
if ($numtok(%~rfsqsend5,32) > 1) {
if ($rfs-opt(msg,onchanfail) == 1) rfs-notice $gettok(%~rfsqsend,1,32) Send of $nopath($gettok(%~rfsqsend,4-,32)) was removed from queue. You were not on any of these channels of the Fserve: %~rfsqsend5
dline @rfs-q- $+ $1 %~rfsqsend2
goto A
}
}
%~rfs-send- [ $+ [ $gettok(%~rfsqsend,1,32) ] ] = $readini $rfs-def(ini) fs- $+ $1 chan
var %~rfsqsend5 = $gettok(%~rfsqsend,2,32)
if ($rfs-opt(fs,ipsend,%~rfsqsend3) == 1) rfs-send $1 $replace($gettok(%~rfsqsend5,1-4,46),$chr(46),$chr(32)) $gettok(%~rfsqsend,3,32) $gettok(%~rfsqsend,1,32) $gettok(%~rfsqsend,4-,32)
else rfs-send $1 $replace($gettok(%~rfsqsend5,1-4,46),$chr(46),$chr(32)) 0 $gettok(%~rfsqsend,1,32) $gettok(%~rfsqsend,4-,32)
dline @rfs-q- $+ $1 %~rfsqsend2
dec %~rfsqsend4 1
}
var %~rfsqsend = $rfs-opt(dir) $+ rfs-q- $+ $1 $+ .rfs
savebuf @rfs-q- $+ $1 " $+ %~rfsqsend $+ "
if ($file(%~rfsqsend).size < 1) .remove " $+ %~rfsqsend $+ "
:End
}
; <fs>
alias rfs-filecache {
.remove " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc"
var %~rfscache = 1
:A
var %~rfscache2 = $readini $rfs-def(ini) fs- $+ $1 dir $+ %~rfscache
if (%~rfscache2 == $null) goto End
if ($exists(%~rfscache2) != $true) { inc %~rfscache 1 | goto A }
if ($file(%~rfscache2) != $null) {
write " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc" <file> %~rfscache2
inc %~rfscache 1 | goto A
}
var %~rfscache4 = 1
:B
var %~rfscache3 = $finddir(%~rfscache2,*,%~rfscache4)
if (%~rfscache3 == $null) && (%~rfscache4 == 1) var %~rfscache3 = %~rfscache2
if (%~rfscache3 != $null) {
var %~rfscache6 = 1
:C
var %~rfscache5 = $findfile(%~rfscache3,*,%~rfscache6,1)
if (%~rfscache5 != $null) { write " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc" $nopath(%~rfscache5) | inc %~rfscache6 1 | goto C }
write " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc" <path> %~rfscache3
inc %~rfscache4 1 | goto B
}
inc %~rfscache 1 | goto A
:End
rfs-alert 0 Built cache to $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc
}
; <fs> <nick> <findnum> <trigger> <path> <text>
alias rfs-cachefind {
unset %~rfscachef
var %~rfscachef3 = 1
var %~rfscachef2 = $read -l $+ %~rfscachef3 -s<path> " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc"
if (%~rfscachef2 != $null) {
if ($left(%~rfscachef2,$len($5)) == $5) { var %~rfscachef = %~rfscachef3 | var %~rfscachef3 = $readn }
}
if (%~rfscachef == $null) return $3
var %~rfscachef4 = $3
:A
var %~rfscachef2 = $read -l $+ %~rfscachef -w"* $+ $6- $+ *" " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc"
if (%~rfscachef2 != $null) {
var %~rfscachef = $readn
if ($left(%~rfscachef2,6) == <path>) {
var %~rfscachef2 = $remove($mid(%~rfscachef2,7),$5)
if ($6- !isin %~rfscachef2) { inc %~rfscachef 1 | goto A }
}
elseif ($left(%~rfscachef2,6) == <file>) {
var %~rfscachef2 = $nopath($mid(%~rfscachef2,7))
if ($6- !isin %~rfscachef2) { inc %~rfscachef 1 | goto A }
}
else {
var %~rfscachef3 = $read -l $+ %~rfscachef -s<path> " $+ $rfs-opt(dir) $+ fs- $+ $1 $+ .fsc"
var %~rfscachef2 = $remove(%~rfscachef3,$5) $+ \ $+ %~rfscachef2
}
inc %~rfscachef4 1
rfs-msg $2 $+ $rfs-opt(color1) $+ Match %~rfscachef4 (for $6- $+ ): $+ $rfs-opt(color3) %~rfscachef2 ( $+ $4 $+ )
if (%~rfscachef4 >= $rfs-opt(findmax)) { rfs-msg $2 $+ $rfs-opt(color1) $+ Too many matches to display. Use " quotes around phrases to refine search. | return }
inc %~rfscachef 1 | goto A
}
return %~rfscachef4
}
; <nick> <chan> <text>
alias rfs-find {
if ($hget(rfs-find) != $null) hfree rfs-find
hmake rfs-find 10
var %~rfsfind = 1
while ($gettok($3-,%~rfsfind,32) != $null) {
var %~rfsfind10 = $gettok($3-,%~rfsfind,32)
if ($left($gettok($3-,%~rfsfind,32),1) == $chr(34)) { var %~rfsfind2 = 1 | var %~rfsfind10 = $right(%~rfsfind10,$calc($len(%~rfsfind10) - 1)) }
if ($right($gettok($3-,%~rfsfind,32),1) == $chr(34)) { unset %~rfsfind2 | var %~rfsfind10 = %~rfsfind9 $left(%~rfsfind10,$calc($len(%~rfsfind10) - 1)) }
if (%~rfsfind2 == 1) var %~rfsfind9 = %~rfsfind9 %~rfsfind10
else { unset %~rfsfind9 | var %~rfsfind8 = $addtok(%~rfsfind8,%~rfsfind10,160) }
inc %~rfsfind 1
}
if (%~rfsfind9 != $null) var %~rfsfind8 = $addtok(%~rfsfind8,%~rfsfind9,160)
var %~rfsfind = $ini($rfs-def(ini),fs,0)
while (%~rfsfind > 0) {
var %~rfsfind3 = $ini($rfs-def(ini),fs,%~rfsfind)
if ($hget(rfs-fs,%~rfsfind3) != $null) && ($exists( [ [ $rfs-opt(dir) ] $+ ] fs- [ $+ [ %~rfsfind3 ] $+ ] .fsc) == $true) {
var %~rfsfind4 = $rfs-opt(fsopt,find,$readini $rfs-def(ini) fs- [ $+ [ %~rfsfind3 ] ] fsopt)
if (%~rfsfind4 == 1) {
var %~rfsfind2 = $readini $rfs-def(ini) fs- $+ %~rfsfind3 chan
if ($findtok(%~rfsfind2,$2,1,32) != $null) {
var %~rfsfind4 = $readini $rfs-def(ini) fs %~rfsfind3
var %~rfsfind6 = $numtok(%~rfsfind4,160)
while (%~rfsfind6 > 0) {
hadd rfs-find %~rfsfind3 $+ . $+ %~rfsfind6 $readini $rfs-def(ini) fs- $+ %~rfsfind3 dir $+ %~rfsfind6
dec %~rfsfind6 1
}
}
}
}
dec %~rfsfind 1
}
unset %~rfsfind6
var %~rfsfind7 = 0
:B
var %~rfsfind2 = 1
while ($gettok(%~rfsfind8,%~rfsfind2,160) != $null) {
var %~rfsfind = $hget(rfs-find,0).item
while (%~rfsfind > 0) {
var %~rfsfind5 = $gettok($readini $rfs-def(ini) fs $gettok($hget(rfs-find,%~rfsfind).item,1,46),$gettok($hget(rfs-find,%~rfsfind).item,2,46),160)
var %~rfsfind5 = $replace(%~rfsfind5,<ctcp>,/ctcp $me,<action>,/me)
var %~rfsfind10 = $gettok($hget(rfs-find,%~rfsfind).item,1,46)
var %~rfsfind7 = $rfs-cachefind(%~rfsfind10,$1,%~rfsfind7,%~rfsfind5,$hget(rfs-find,$hget(rfs-find,%~rfsfind).item),$gettok(%~rfsfind8,%~rfsfind2,160))
if (%~rfsfind7 == $null) goto End
dec %~rfsfind 1
}
inc %~rfsfind2 1
}
if (%~rfsfind6 == $null) && ($chr(32) isin %~rfsfind8) {
var %~rfsfind8 = $replace(%~rfsfind8,$chr(32),$chr(95))
var %~rfsfind6 = 1
goto B
}
if (%~rfsfind7 == 1) rfs-msg $1 $+ $rfs-opt(color1) $+ Total 1 match found. You can use " quotes around phrases to refine search.
elseif (%~rfsfind7 > 1) rfs-msg $1 $+ $rfs-opt(color1) $+ Total %~rfsfind7 matches found. You can use " quotes around phrases to refine search.
:End
if ($hget(rfs-find) != $null) hfree rfs-find
}
alias rfs-cps {
if ($send(0) < 1) .timerrfscps off
var %~rfscps = 1
while ($send(%~rfscps) != $null) {
var %~rfscps3 = $send(%~rfscps) $+ $chr(160) $+ $replace($send(%~rfscps).path,$chr(32),$chr(95)) $+ $replace($send(%~rfscps).file,$chr(32),$chr(95))
var %~rfscps2 = %rfs-send- [ $+ [ %~rfscps3 ] ]
if (%~rfscps2 != $null) {
if (%rfs-stat-cps- [ $+ [ $gettok(%~rfscps2,1,32) ] ] == $null) %rfs-stat-cps- [ $+ [ $gettok(%~rfscps2,1,32) ] ] = $rfs-stat($gettok(%~rfscps2,1,32),cps)
var %~rfscps4 = $remove($bytes($send(%~rfscps).cps,k),$chr(44))
if (%~rfscps4 > $gettok(%rfs-stat-cps- [ $+ [ $gettok(%~rfscps2,1,32) ] ],1,32)) || (%rfs-stat-cps- [ $+ [ $gettok(%~rfscps2,1,32) ] ] == $null) writeini -n $rfs-def(ini) stat- $+ $gettok(%~rfscps2,1,32) cps %~rfscps4 Kb/s by $send(%~rfscps)
if ($rfs-opt(cpschk) > 0) && (%~rfscps4 < $gettok(%~rfscps2,3,32)) {
if ($rfs-opt(msg,cps) == 1) rfs-notice $send(%~rfscps) Your send was cancelled because the CPS fell below the minimum allowed: $gettok(%~rfscps2,3,32) Kb/s
rfs-qsend $gettok(%~rfscps2,1,32)
}
}
inc %~rfscps 1
}
}
; <fs>
alias rfs-pauseq {
if ($1 == $null) did -o $rfs-def(win) 48 1 Pause Sel. Q&ueue(s)
elseif ($findtok(%rfs-q,$1,1,32) == $null) did -o $rfs-def(win) 48 1 Pause Sel. Q&ueue(s)
else did -o $rfs-def(win) 48 1 Start Sel. Q&ueue(s)
}
; <nick> <chan> <path and file>
alias rfs-part {
var %~rfspartb = $numtok($2,160)
while (%~rfspartb > 0) {
if ($nick ison $gettok($2,%~rfspartb,160)) goto End
dec %~rfspartb 1
}
var %~rfspartb = $send($nick,0)
while (%~rfspartb > 0) {
if ($send($nick,%~rfspartb).path $+ $send($nick,%~rfspartb).file == $3-) { close -s $+ %~rfspartb $nick | goto End }
dec %~rfspartb 1
}
:End
}
alias rfs-quit {
if ($comchan($1,0) < 1) close -s $1
}
alias rfs-timeclose {
rfs-log $rfs-opt(log,fsopen) $+ $rfs-opt(color2) $+ $2- $+ $rfs-opt(color3) $+ $1 $rfs-address($1,5) %~rfsopen3
close -f $1
}
alias rfs-timelimit {
if ($fserv($1).status == active) {
msg = $+ $1 $+ $rfs-opt(color2) $+ Fserve time limit approaching. Connection will be closed in 30 seconds.
.timerrfs-fstl- $+ $1 1 30 rfs-timeclose $1 Fserve time limit reached:
}
}
alias rfs-timeout {
if ($fserv($1).status == active) {
msg = $+ $1 $+ $rfs-opt(color2) $+ Please do not camp! Otherwise, connection will be closed in 30 seconds.
.timerrfs-fs- $+ $1 1 30 rfs-timeclose $1 Possible camping:
}
}
alias rfs-timeout0 {
.timerrfs-fs- $+ $1 1 $rfs-opt(fstimeout) rfs-timeout $1
}
; <fs> <path and file>
alias rfs-filerec {
var %~rfsfilerec = $readini $rfs-opt(dir) $+ rfs-file $+ $1 $+ .ini File $replace($2-,$chr(32),$chr(160))
inc %~rfsfilerec 1
writeini -n " $+ $rfs-opt(dir) $+ rfs-file $+ $1 $+ .ini" File $replace($2-,$chr(32),$chr(160)) %~rfsfilerec
writeini -n " $+ $rfs-opt(dir) $+ rfs-file $+ $1 $+ .ini" Top $replace($2-,$chr(32),$chr(160)) %~rfsfilerec
var %~rfsfilerec = $ini( [ [ $rfs-opt(dir) ] $+ ] rfs-file [ $+ [ $1 ] $+ ] .ini,Top,0)
if (%~rfsfilerec > 10) {
while (%~rfsfilerec > 0) {
var %~rfsfilerec2 = $ini( [ [ $rfs-opt(dir) ] $+ ] rfs-file [ $+ [ $1 ] $+ ] .ini,Top,%~rfsfilerec)
var %~rfsfilerec3 = $readini $rfs-opt(dir) $+ rfs-file $+ $1 $+ .ini Top %~rfsfilerec2
if (%~rfsfilerec4 == $null) || (%~rfsfilerec3 <= $gettok(%~rfsfilerec4,1,32)) var %~rfsfilerec4 = %~rfsfilerec3 %~rfsfilerec2
dec %~rfsfilerec 1
}
remini -n " $+ $rfs-opt(dir) $+ rfs-file $+ $1 $+ .ini" Top $gettok(%~rfsfilerec4,2,32)
}
}
; <fs> <nick> <path>
alias rfs-filerecshow {
var %~rfsfilerecs = $ini( [ [ $rfs-opt(dir) ] $+ ] rfs-file [ $+ [ $1 ] $+ ] .ini,Top,0)
while (%~rfsfilerecs > 0) {
var %~rfsfilerecs3 = $ini( [ [ $rfs-opt(dir) ] $+ ] rfs-file [ $+ [ $1 ] $+ ] .ini,Top,%~rfsfilerecs)
var %~rfsfilerecs2 = $readini $rfs-opt(dir) $+ rfs-file $+ $1 $+ .ini Top %~rfsfilerecs3
var %~rfsfilerecs-a [ $+ [ %~rfsfilerecs ] ] %~rfsfilerecs2
var %~rfsfilerecs-b [ $+ [ %~rfsfilerecs ] ] $replace(%~rfsfilerecs3,$chr(160),$chr(32))
var %~rfsfilerecs4 = $addtok(%~rfsfilerecs4, [ [ %~rfsfilerecs2 ] $+ ] . [ $+ [ %~rfsfilerecs ] ] ,32)
dec %~rfsfilerecs 1
}
var %~rfsfilerecs4 = $sorttok(%~rfsfilerecs4,32,nr)
if ($fserv($2) != $null) var %~rfsfilerecs5 = msg = $+ $2 | else var %~rfsfilerecs5 = msg $2
%~rfsfilerecs5 $+ $rfs-opt(color1) $+ Most popular files:
var %~rfsfilerecs2 = 1
while (%~rfsfilerecs2 < 11) {
var %~rfsfilerecs3 = $gettok(%~rfsfilerecs4,%~rfsfilerecs2,32)
if ($3- == $null) %~rfsfilerecs5 $+ $rfs-opt(color1) %~rfsfilerecs2 $+ ) $+ $rfs-opt(color3) $+ $nopath(%~rfsfilerecs-b [ $+ [ $gettok(%~rfsfilerecs3,2,46) ] ]) ( $+ %~rfsfilerecs-a [ $+ [ $gettok(%~rfsfilerecs3,2,46) ] ] times)
else %~rfsfilerecs5 $+ $rfs-opt(color1) %~rfsfilerecs2 $+ ) $+ $rfs-opt(color3) $+ $remove(%~rfsfilerecs-b [ $+ [ $gettok(%~rfsfilerecs3,2,46) ] ],$3-) ( $+ %~rfsfilerecs-a [ $+ [ $gettok(%~rfsfilerecs3,2,46) ] ] times)
inc %~rfsfilerecs2 1
}
}
; <fs> <0 for off/1 for on> <time>
alias rfs-fstimer {
var %~rfsfstimer = $ctime($asctime(mmm dd yyyy) $3) - $ctime
if (%~rfsfstimer < 60) inc %~rfsfstimer 86400
.timerrfsoff $+ $1 1 %~rfsfstimer rfs-fsoff $1
}
; <fs> <0 or null>
alias rfs-fsoff {
if ($hget(rfs-fs,$1) == $null) goto End
hdel rfs-fs $1
.timerrfsad $+ $1 $+ * off
if ($timer(rfsoff [ $+ [ $1 ] ] ) != $null) .timerrfsoff $+ $1 off
if ($2 != 0) rfs-sched $1 on
elseif ($timer(rfson [ $+ [ $1 ] ] ) != $null) .timerrfson $+ $1 off
if ($rfs-opt(fsoffstopq) == 1) %rfs-q = $addtok(%rfs-q,$1,32)
if ($rfs-opt(msg,fsoff) == 1) {
if ($timer(rfson [ $+ [ $1 ] ] ) != $null) var %~rfsoff3 = (scheduled to be online in $duration($timer(rfson [ $+ [ $1 ] ] ).secs) $+ )
rfs-msgchan $1 $+ $rfs-opt(color1) $+ My Fserve is now offline %~rfsoff3
}
if ($hget(rfs-fs) != $null) && ($hget(rfs-fs,0).item < 1) hfree rfs-fs
:End
}
; <fs> <on/off>
alias rfs-sched {
if ($timer(rfson [ $+ [ $1 ] ] ) != $null) .timerrfson $+ $1 off
if ($timer(rfsoff [ $+ [ $1 ] ] ) != $null) .timerrfsoff $+ $1 off
var %~rfssched = $readini $rfs-def(ini) sched- $+ $1 $2
var %~rfssched2 = $numtok(%~rfssched,32)
var %~rfssched7 = $ctime + 10
while (%~rfssched2 > 0) {
var %~rfssched3 = $gettok(%~rfssched,%~rfssched2,32)
var %~rfssched6 = $ctime($asctime(mmm dd yyyy) $gettok(%~rfssched3,1,62))
var %~rfssched5 = $gettok(%~rfssched3,2,62)
if (%~rfssched5 != $null) {
var %~rfssched4 = $rfs-dayconv($ctime(dddd))
if (%~rfssched5 < %~rfssched4) || ((%~rfssched5 == %~rfssched4) && (%~rfssched6 < %~rfssched7)) inc %~rfssched5 7
var %~rfssched5 = $calc((%~rfssched5 - %~rfssched4) * 86400)
}
else var %~rfssched5 = 0
var %~rfssched4 = %~rfssched6 - %~rfssched7
inc %~rfssched4 %~rfssched5
if (%~rfssched4 < 0) inc %~rfssched4 86400
if (%~rfssched4 < %~rfssched8) || (%~rfssched8 == $null) var %~rfssched8 = %~rfssched4
dec %~rfssched2 1
}
if (%~rfssched8 != $null) .timerrfs $+ $2 $+ $1 1 %~rfssched8 rfs-fs $+ $2 $1
}
; <fs>
alias rfs-savesched {
var %~rfssaves = 1
while ($did(RFSS- [ $+ [ $rfs-network ] ] ,9,%~rfssaves) != $null) {
var %~rfssaves4 = $rfs-dayconv($gettok($did(RFSS- [ $+ [ $rfs-network ] ] ,9,%~rfssaves),2,32))
var %~rfssaves4 = $gettok($did(RFSS- [ $+ [ $rfs-network ] ] ,9,%~rfssaves),3,32) $+ > $+ %~rfssaves4
if ($gettok($did(RFSS- [ $+ [ $rfs-network ] ] ,9,%~rfssaves),4,32) == on) var %~rfssaves2 = $addtok(%~rfssaves2,%~rfssaves4,32)
else var %~rfssaves3 = $addtok(%~rfssaves3,%~rfssaves4,32)
inc %~rfssaves 1
}
if (%~rfssaves2 != $null) writeini -n $rfs-def(ini) sched- $+ $1 on %~rfssaves2
else remini -n $rfs-def(ini) sched- $+ $1 on
if (%~rfssaves3 != $null) writeini -n $rfs-def(ini) sched- $+ $1 off %~rfssaves3
else remini -n $rfs-def(ini) sched- $+ $1 off
if ($ini($rfs-def(ini),sched- [ $+ [ $1 ] ] ,0) < 1) remini -n $rfs-def(ini) sched- $+ $1
if ($hget(rfs-fs,$1) == $null) rfs-sched $1 on
else rfs-sched $1 off
rfs-alert 0 Schedule has been saved for Fserve $1
}
alias rfs-resumecps {
if (%rfs-maxcps == $null) goto A
var %~rfsrescps = 1
while ($get(%~rfsrescps) != $null) {
if ($get(%~rfsrescps).status == active) goto A
inc %~rfsrescps 1
}
.dcc maxcps %rfs-maxcps
unset %rfs-maxcps
:A
var %~rfsrescps = $numtok(%rfs-maxcpsq,32)
while (%~rfsrescps > 0) {
%rfs-q = $remtok(%rfs-q,$gettok(%rfs-maxcpsq,%~rfsrescps,32),1,32)
rfs-qsend $gettok(%rfs-maxcpsq,%~rfsrescps,32)
dec %~rfsrescps 1
}
unset %rfs-maxcpsq
}
; <fs>
alias rfs-saveprof {
remini -n $rfs-def(ini) profile- $+ $1
var %~rfssaveprof = 1
while ($did(RFSP- [ $+ [ $rfs-network ] ] ,1,%~rfssaveprof) != $null) {
writeini -n $rfs-def(ini) profile- $+ $1 %~rfssaveprof $replace($did(RFSP- [ $+ [ $rfs-network ] ] ,1,%~rfssaveprof),$str($chr(160),3),$chr(32))
inc %~rfssaveprof 1
}
}
; End of script