IRcap — File Browser
ircap871-mircscripts_2799 / ircap871-mircscripts_2799 / mod / Fserver / fserver.mrc
fserver.mrc — 12.22 KB — Download this file
;IRcap8 17d3ec2c90f96a1b283059c7c811538e
;===================================
; Servidor de archivos V2.0
;===================================
alias FS-serv {
goto $1
:on
%fs.o = $readini(%perfil,fserver,o) | if (!%fs.o) { %fs.o = 4,ctcp,off,15,off,off,jpg mpg zip,off,on }
fspillatriggers
.enable #fs-serv | .disable #fsoye.msg #fsoye.ctcp | if $o(2) == msg .enable #fsoye.msg | else .enable #fsoye.ctcp
fs.logsesion *** $s(63) : $date ***
if $o(8) == on { .timerFSanuncia -io 0 $calc($o(4) * 60) FS-serv anuncia | goto anuncia }
unset %tmp.fsflod.*
return
:off
close -f | unset %fs.trig | .disable #fs-serv #fsoye.msg #fsoye.ctcp | .timerFSanuncia off | fs.logsesion *** $s(64) : $date *** | if (3 setdcc2 !isin %setup.pñ1) window -c @fs.logsesion | return
:anuncia
if (!%fs.trig) || (!$server) return
hfree -w fstemp*
if ($o(2) == ctcp) { var %ma = /ctcp $me }
hmake fstemp1 | var %i = 1 | while ($chan(%i)) {
var %n = 1 , %b | :L2 | var %a = $readini(%perfil,Fserver,T $+ %n) | if (%a) {
if ($gettok(%a,6,32) == on) { var %c = $gettok(%a,5,32) | if (%c == *) || ($findtok(%c,$chan(%i),1,44)) { %b = $addtok(%b,$gettok(%a,1,32),22) } }
inc %n | goto L2
}
hadd fstemp1 $chan(%i) %b
inc %i
}
hmake fstemp2 | var %i = 1 | :L3
var %a = $hget(fstemp1,%i).item | if (%a) {
var %b = $hget(fstemp1,%i).data , %c = $hget(fstemp2,%b)
hadd fstemp2 %b $addtok(%c,%a,44)
inc %i | goto L3
}
var %i = 1 | while ($hget(fstemp2,%i).item) {
var %m = $fsbanner($ifmatch)
if ($hget(fstemp2,%i).data) qc .msg $hget(fstemp2,%i).data %m
var %n = 1 | while ($gettok($hget(fstemp2,%i).data,%n,44)) {
var %d = $ifmatch
var %a = $mi^nick
if ($isalias(tma.say)) { $tma.say(%tma.tab,%d,%a,%nick^comp,%m) }
else { echo $color(own) -tli $+ %tma.tab %d %a %m }
inc %n
}
inc %i
}
hfree -w fstemp*
}
alias fspillatriggers unset %fs.trig | var %i = 1 | :L1 | var %a = $readini(%perfil,Fserver,T $+ %i) | if (%a) { if ($gettok(%a,6,32) == on) { %fs.trig = $addtok(%fs.trig,$gettok(%a,1,32),22) } | inc %i | goto L1 }
alias -l o return $gettok(%fs.o,$1,44)
#FSOYE.msg off
on 1:TEXT:!list:*: fs.list
on 1:TEXT:*:*: var %t = $replace($1-,$chr(32),…) | if ($findtok(%fs.trig,%t,1,22)) FStrigger %t $nick T $target
#FSOYE.msg end
#FSOYE.ctcp off
ctcp 1:*: var %t = $replace($1-,$chr(32),…) | if ($findtok(%fs.trig,%t,1,22)) FStrigger %t $nick C $target
#FSOYE.ctcp end
#FS-serv off
on 1:TEXT:!list:*: fs.list
on 1:open:!: {
if ($o(6) == on) {
var %n = 1 , %ip = $fserv($nick).ip | :L1 | var %a = $fserv(%n).ip | if (%a) {
if (%a == %ip) && ($fserv(%n) != $nick) { window -c = $+ $nick | qc notice $nick $qemsg($s(65) $fserv(%n)) | return }
inc %n | goto L1
}
}
msg =$nick $qemsg( IRcap %ircapv $s(66))
$fs.llenausr
FS.logsesion $nick ( $+ $fserv($nick).ip $+ ) $s(67)
halt
}
on 1:close:!: unset %tmp.fserver. [ $+ [ $nick ] ] %tmp.fserver.t. [ $+ [ $nick ] ] | if ($isalias(fs.llenausr)) .timerFS -io 1 1 fs.llenausr | FS.logsesion $nick $s(68)
on 1:SERV:read *: halt
on 1:SERV:get *: {
var %f = $cd $+ \ $+ $2-
FS.logsesion $nick $s(69) $2-
if (!$exists(%f)) halt
if (%dcc.onos == on) { if ($tipoext($2-,%dcc.nos)) { msg =$nick $qemsg($mg(dccno)) | halt } }
var %t = $o(7) | if (%t) && (%t != *) { if (!$findtok(%t,$gettok($2-,-1,46),1,32)) { msg =$nick $qemsg($mg(dccno)) | halt } }
dccola $nick $longfn(%f)
halt
}
alias fsflood {
if ($o(9) == off) return
if (%tmp.fsflod. [ $+ [ $ip ] ] >= 20) {
if (%tmp.fsflod. [ $+ [ $ip ] ] < 100) { set -u20 %tmp.fsflod. [ $+ [ $ip ] ] 100 | msg = $+ $nick $qemsg($s(70)) | .timerFSflod $+ $nick -io 1 20 msg = $+ $nick $qemsg($s(71)) }
halt
}
inc -u20 %tmp.fsflod. [ $+ [ $ip ] ] $1
}
on 1:SERV:*: {
fsflood 1 general
var %m = .msg =$nick | if ($findtok(dir help stats queues clr_queue clr_queues who say ayuda salir estado cola borrarcola borrartodo msg usuarios find busca top10,$1,1,32)) { var %c = $readini %perfil fserver com | goto $1 } | return
:ayuda
:help
fsflood 10
%m $qemsg( $+ $s(72))
%m cd <dir> ... $s(73)
%m dir ... $s(74)
%m get <file/fichero> ... $s(75)
if (stats on isin %c) %m stats / estado ... $s(76)
if (queues on isin %c) %m queues / cola ... $s(77)
if (clr_queue on isin %c) %m clr_queue / borrarcola <N> ... $s(78)
if (clr_queue on isin %c) %m clr_queues / borrartodo ... $s(79)
if (who on isin %c) %m who / usuarios ... $s(80)
if (say on isin %c) %m say / msg <txt> ... $s(81)
if (find on isin %c) %m find / busca <txt> ... $s(82)
if (top10 on isin %c) %m top10 ... $s(83)
%m help / ayuda ... $s(84)
%m exit / salir ... $s(85)
halt
:cola
:queues
fsflood 5
if (queues on isin %c) {
%m $qemsg($s(86))
dccola -stat $nick
}
halt
:borrarcola
:borrartodo
:clr_queues
:clr_queue
fsflood 5
if (queue on isin %c) {
dccola -bor $nick $2
}
halt
:usuarios
:who
fsflood 5
if (who on isin %c) {
%m $qemsg( $+ $s(87))
var %n = 1 | while ($fserv(%n)) { %m $ifmatch | inc %n }
%m $qemsg($s(88) $+ : $fserv(0) $calc($o(1) - $fserv(0)) $s(89))
}
halt
:msg
:say
if (say on isin %c) {
var %n = 1 | while ($fserv(%n)) {
if ($ifmatch != $nick) msg = $+ $ifmatch < $+ $nick $+ > $2-
inc %n
}
halt
}
:estado
:stats
fsflood 8
if (stats on isin %c) {
%m $qemsg(Stats)
var %r = $round($calc($readini(%perfil,dccstats,record) / 1024),1) kB/s -> $readini(%perfil,dccstats,campeon) | sendstat
%m --• $s(51) $+ : $send(0) $+ / $+ %fsn
%m --• $s(52) $+ : $gettok($result,1,32)
%m --• $s(53) $+ : $gettok($result,2,32)
%m --• $s(54) $+ : $nonull($line(@dccola,0)) $+ / $+ %dcque.max
%m --• $s(55) $+ : $gettok($result,3-9,32)
%m --• $s(56) $+ : $readini(%perfil,dccstats,send) ( $+ $bytes($readini(%perfil,dccstats,bsend)).suf $+ )
%m --• $s(57) $+ : %r
%m --• $s(58) $+ : $readini(%perfil,DCCstats,logins)
%m --• $s(8) $+ : $fserv(0) $+ / $+ $o(1))
}
halt
:salir
window -c = $+ $nick
halt
:busca
:find
fsflood 7
if (find on isin %c) {
var %t = * $+ $replace($2-,_,?,$chr(32),?,$chr(40),?,$chr(41),?,-,?) $+ * | %n = 1 | :Lfind | var %a = $findfile($cd,%t,%n) | if (%a) {
%m -> $remove(%a,$cd) | inc %n | if (%n <= 10) goto Lfind
}
var %a = $findfile($cd,%t,0) | %m $s(88) $calc(%n - 1) $s(90) | if %a > 10 %m $calc(%a - 10) $s(91)
}
halt
:top10
fsflood 10
if (top10 on isin %c) FStop10 %tmp.fserver. [ $+ [ $nick ] ] $nick $2
halt
:dir
fsflood 1 dir
return
}
alias FStrigger {
if $fserv($nick,0) > 0 return
if $fserv(0) >= $o(1) { qc notice $nick $qemsg($s(92)) | return }
var %n = 1 , %b | :L1 | var %f = $readini(%perfil,Fserver,T $+ %n) | if (%f) && ($gettok(%f,1,32) == $1) {
if $3 == T {
if ($target !isin $gettok(%f,5,32)) && ($gettok(%f,5,32) != *) return
if (o isin $gettok(%f,4,32)) && ($nick isop $target) { var %ok = ok }
if (v isin $gettok(%f,4,32)) && ($nick isvoice $target) { var %ok = ok }
if (* isin $gettok(%f,4,32)) { var %ok = ok }
if (%ok != ok) return
}
if $3 == C {
if (* isin $gettok(%f,5,32)) { var %ok = ok }
var %c = 1 | :L2 | var %cc = $comchan($nick,%c)
if (%cc) {
if (%cc isin $gettok(%f,5,32)) {
var %ok
if (o isin $gettok(%f,4,32)) && ($nick isop %cc) { var %ok = ok }
if (v isin $gettok(%f,4,32)) && ($nick isvoice %cc) { var %ok = ok }
if (* isin $gettok(%f,4,32)) { var %ok = ok }
}
inc %c | goto L2
}
if (%ok != ok) return
}
var %n = 1 , %b | :L3 | var %a = $readini(%perfil,Fserver,B $+ %n) | if (%a) { if ($gettok(%a,1,32) iswm $address($nick,5)) { qc notice $nick $qemsg($s(93) ( $gettok(%a,3-,32) ) ) | return } | inc %n | goto L3 }
fserve $nick 99 $gettok(%f,2,32) $iif($exists($gettok(%f,3,32)),$gettok(%f,3,32))
set %tmp.fserver. [ $+ [ $nick ] ] $gettok(%f,1,32)
set %tmp.fserver.t. [ $+ [ $nick ] ] $ctime
var %a = $readini(%perfil,DCCstats,logins) | inc %a | wrini %perfil DCCstats logins %a
return
}
inc %n | goto L1
}
alias FSbanner {
var %r = $round($calc($readini(%perfil,dccstats,record) / 1024),1) kB/s -> $readini(%perfil,dccstats,campeon) $+ | sendstat
var %a = $replace(%fsbanner,<SLOT>,$gettok($result,2,32),<QUE>,$nonull($line(@dccola,0)) $+ / $+ %dcque.max,<CPS>,$gettok($result,1,32),<PROX>,$gettok($result,3-9,32),<RECORD>,%r,<LOGINS>,$readini(%perfil,DCCstats,logins),<USERS>,$fserv(0) $+ / $+ $o(1),<FICH>,$readini(%perfil,dccstats,send),<BYTES>,$bytes($readini(%perfil,dccstats,bsend)).suf)
if ($1) {
if $o(2) == ctcp { var %t = /ctcp $me $replace($1-,$chr(22), & /ctcp $me $+ $chr(32)) }
else { var %t = $replace($1-,$chr(22), & ) }
%a = $replace(%a,<TRIG>,%t,…,$chr(32))
}
return %a
}
on 1:filesent:*: {
var %f = $shortfn($filename) , %t = %tmp.fserver. [ $+ [ $nick ] ] , %a = $readini(s\log\fservertop10.log,%t,%f)
if (%t) { inc %a | writeini s\log\fservertop10.log %t %f %a }
}
alias FSbannerx1 {
var %n = 1 , %t | :L1 | var %f = $readini(%perfil,Fserver,T $+ %n) | if (%f) {
if ($2 isin $gettok(%f,5,32)) || (* isin $gettok(%f,5,32)) && ($gettok(%f,6,32) == on) { %t = %t $gettok(%f,1,32) }
inc %n | goto L1
}
if (%t) { qc notice $1 $fsbanner($replace(%t,$chr(32),)) }
}
alias FSamsg var %n = 1 | while ($fserv(%n)) { msg = $+ $ifmatch $1- | inc %n }
alias -l fs.list {
if $o(3) != on return
teflod | teflod
fsbannerx1 $nick $chan
}
#FS-serv end
alias FStop10 {
hmake top10
hload -i top10 s\log\fservertop10.log $1
window -hls @FStop10
var %n = 1 | while ($hget(top10,%n).item) { aline @fstop10 $left(000000,$calc(6 - $len($hget(top10,%n).data))) $+ $hget(top10,%n).data $hget(top10,%n).data $ifmatch | inc %n }
hfree top10
var %t = $3 | if (!%t) { %t = 10 }
if $2 != *setup* {
if %t > 30 { %t = 30 }
.msg = $+ $2 $qemsg(Top %t $replace($1,…,$chr(32)) )
var %n = 1 , %w = $line(@FStop10,0) | :L1 | var %l = $line(@fstop10,$calc(%w - %n + 1)) | if (%n <= %w) {
.msg = $+ $2 $+ %n $+ .- $nopath($longfn($gettok(%l,3,32))) ( $+ $gettok(%l,2,32) d.)
inc %n | if (%n <= %t) goto L1
}
}
if $2 == *setup* {
var %n = 1 , %w = $line(@FStop10,0) | :L1 | var %l = $line(@fstop10,$calc(%w - %n + 1)) | if (%n <= %w) {
aline @hash2 %n $+ $chr(8) $+ $nopath($longfn($gettok(%l,3,32))) ( $+ $gettok(%l,2,32) d.)
inc %n | if (%n <= %t) goto L1
}
}
window -c @fstop10
}
alias FS.logsesion {
if (!$window(@fs.logsesion)) { window -hl @fs.logsesion }
if ($1) { aline @fs.logsesion $timestamp $1- | if $o(5) == on write " $+ $logdir $+ F.server.log" $timestamp $1- }
if (1 Fservertab isin %setup.pñ2) {
if ($gettok(%setup.ls2,5,32) >= $calc($line(@fs.logsesion,0) - 9)) { %setup.ls2 = $puttok(%setup.ls2,$line(@fs.logsesion,0),5,32) }
guilista @setup setup.ls2 | drawline @setup }
}
menu menubar {
fserver: icofserver
}
alias icofserver {
f3 setdcc
var %a = $findtok($gettok(%setup.pñ1,5-,32),fserver,1,22)
%setup.pñ1 = $puttok(%setup.pñ1,%a,3,32)
setdcc2 %a
}
on 1:START: {
%fs.o = $readini(%perfil,fserver,o) | if (!%fs.o) { %fs.o = 4,ctcp,off,15,off,off,jpg mpg zip,off,on }
if (!$readini(%perfil,fserver,com)) { writeini %perfil fserver com find off,stats off,queues off,clr_queue off,who off,say off,top10 off }
.hmake -s fserver | hload fserver "lng\ $+ %idioma $+ \fserver.lnh" | if $group(#fs-serv) == on .timerFS -io 1 10 fs-serv on
if (!%fsbanner) { %fsbanner = 0,4 1,0 FServer 15,15 1,0 <TRIG> 15,15 1,0 $s(8) $+ : <USERS> 15,15 1,0 $s(58) $+ : <LOGINS> 4,4 }
}
alias -l S return $hget(fserver,$1)
on 1:SIGNAL:idioma: if ($1 != $2) { hload fserver "lng\ $+ %idioma $+ \fserver.lnh" }
alias Fserver.UNLOAD {
unset %fs.trig %fs.o | .disable #fs-serv #fsoye.msg #fsoye.ctcp | .timerFSanuncia off | window -c @fs.logsesion
hfree fserver | unload -rs mod\fserver\fserver.mrc
}
;EOF