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