IRcap — File Browser

ircap871-mircscripts_2799 / ircap871-mircscripts_2799 / mod / mail / mail.mrc

mail.mrc — 15.49 KB — Download this file

;IRcap8 3d0297482deda47a00695642ec93126a

menu menubar {
  $s(e-mail)
  .$s(1): mailnotif
  .-
  .$s(2): mandamail 
  .$s(3): run notepad s\log\smail.txt
  .-
  .$m(269): icoe-mail
}


on 1:connect: if ($gettok($readini(%perfil,email,op),1,44) == on) && (!$timer(mail)) { .timerMAIL -oi 1 30 mailnotif -n }
alias MANDAMAIL .load -rs mod\mail\smail.mrc | dmail $1-
alias -l o return $gettok(%mail.o,$1,44)
alias -l S return $hget(mail,$1)

alias MAILNOTIF {
  %mail.o = $readini(%perfil,email,op)
  if (!%tmp.mail.lee1) { 
    if ($o(1) == on) { .timerMAIL -oi 1 $calc($o(2) * 60) mailnotif -n } | else { .timerMAIL off }
  }
  if (v isin $1) { mail.gui | titulamail | return }
  window -c @e-mails | window -c @maills1 | window -hls @maills1

  if (n !isin $1) mail.gui

  %mail.blanca = $replace($readini(%perfil,email,lb),|,)
  %mail.negra = $replace($readini(%perfil,email,ln),|,)
  %mail.pal = $replace($readini(%perfil,email,lp),|,)

  mailcierrasocks
  unset %tmp.cmailn
  %tmp.mail.nn = 0

  if (%tmp.mail.lee1) { sockopen CMAIL1 $gettok(%tmp.mail.lee1,1,32) 110 | sockmark CMAIL1 $gettok(%tmp.mail.lee1,2-3,32) $gettok(%tmp.mail.lee1,1,32) 110 0 1 1 | inc %tmp.mail.nn | unset %tmp.mail.lee1 }
  else {
    var %n = 0 | :L1 | inc %n 1 | var %d = $readini %perfil EMAIL %n | if ($len(%d) > 5) { if ($gettok(%d,4,32) != off) { sockopen CMAIL $+ %n $gettok(%d,1,32) 110 | sockmark CMAIL $+ %n $gettok(%d,2-3,32) $gettok(%d,1,32) 110 0 1 1 | inc %tmp.mail.nn } | goto L1 }
  }
  echo -st $logo  $+ $s(4) ( $+ %tmp.mail.nn $s(5) $+ )...
  .timerMAIL.FORZA -oi 1 60 mail.forza
}

alias mail.gui {
  if (!$1) {
    window -c @mail
    var %a = $readini ircap.ini ww mail
    %mail.skla = 280 150
    guiwin @Mail %a $s(e-mail)
    window -hls @maills1
  }
  var %w = $window(@mail).w , %h = $window(@mail).h
  %mail.ls1 = 10 40 $calc(%w - 40) $int($calc((%h / 14) - 6)) 1 0 mail.click @maills1 arbol
  var %y = $calc(%h - 36) , %x = $calc($window(@mail).w / 2)
  %mail.bt = $calc(%x - 126) %y 100 borramail_1 $s(6) $chr(124) $calc(%x + 10) %y 100 mail.click_0 $s(7)
  guilista @mail mail.ls1 
  guidib @mail
  if (!$1) { window -wa @mail | sss wina }
}

alias redim.@mail {
  guiwin @mail x x $window(@mail).w $window(@mail).h
  mail.gui redim
  titulamail
  if $1 == fin { wmueve2 @mail }
}




alias mail.cierra {
  mailcierrasocks
  unset %tmp.mail.* %mail.*
  window -c @maills1
  window -c @e-mails
  window -c @mail
  window -c @mail-msg
  window -c @mail-m0
}
alias -l mailcierrasocks {
  .timerMailCierra-* off
  sockclose cmail*
  sockclose dmail*
  sockclose leemail*
}


on 1:sockopen:CMAIL*: titulamail | if $sockerr > 0 { scon -a echo -st $logo $gettok($sock($sockname).mark,1,32) 4 $+ $s(8) $+ :  $sock($sockname).wsmsg | sockclose $sockname | titulamail | return }
on 1:sockclose:CMAIL*: .timerTITULAMAIL -mo 1 200 titulamail

on 1:sockread:CMAIL*: {
  var %a
  sockread %a
  var %p = $gettok($sock($sockname).mark,7,32) , %c = $gettok(%a,1,32) , %m = $gettok($sock($sockname).mark,1,32)

  if -ERR isin %c { scon -a echo -st $logo $gettok($sock($sockname).mark,1,32) 4 $+ $s(8) $+ : %a | sockwrite -tn $sockname quit | sockclose $sockname | titulamail | halt }

  if %p == 5 {
    if ($left(%a,5) == from:) { set %tmp.mail.f. [ $+ [ %m ] ] $strip($gettok(%a,2-,58)) }
    if (reply isin $left(%a,8)) { set %tmp.mail.r. [ $+ [ %m ] ] $strip($gettok(%a,2-,58)) }
    if (return-path isin $$left(%a,12)) { set %tmp.mail.rp. [ $+ [ %m ] ] $strip($gettok(%a,2-,58)) }
    if ($$left(%a,8) == subject:) { set %tmp.mail.s. [ $+ [ %m ] ] $strip($gettok(%a,2-,58)) }
    if ($o(4) == on) { if ([bulk] isin %a) || (filteredbulk isin %a) || (X-Spam-Level: ** isin %a) { set %tmp.mail.sp. [ $+ [ %m ] ] 1 } }
  }
  if %a == . { 
    if ($o(5) == on) { var %n = 1 | :BLA | var %a = $gettok(%mail.blanca,%n,22) | if (%a) { if (%a iswm %tmp.mail.f. [ $+ [ %m ] ]) goto FINFILTRO | inc %n | goto BLA } }
    if ($o(6) == on) { var %n = 1 | :NEG | var %a = $gettok(%mail.negra,%n,22) | if (%a) { if (%a iswm %tmp.mail.f. [ $+ [ %m ] ]) { set %tmp.mail.sp. [ $+ [ %m ] ] 1 | goto FINFILTRO } | inc %n | goto NEG } }
    if ($o(7) == on) { var %n = 1 | :PAL | var %a = $gettok(%mail.pal,%n,22) | if (%a) { if (%a iswm %tmp.mail.s. [ $+ [ %m ] ]) { set %tmp.mail.sp. [ $+ [ %m ] ] 1 | goto FINFILTRO } | inc %n | goto PAL } }
    if ($o(3) == on) { if ($spamalea(3,$gettok($limpia(%tmp.mail.f. [ $+ [ %m ] ]),1,64)) == si) { set %tmp.mail.sp. [ $+ [ %m ] ] 1 } }
    if ($o(3) == on) { if (%tmp.mail.r. [ $+ [ %m ] ]) { if ($limpia(%tmp.mail.f. [ $+ [ %m ] ]) != $limpia(%tmp.mail.r. [ $+ [ %m ] ])) { set %tmp.mail.sp. [ $+ [ %m ] ] 1 } } }
    if ($o(3) == on) { if (%tmp.mail.rp. [ $+ [ %m ] ]) { if ($limpia(%tmp.mail.f. [ $+ [ %m ] ]) != $limpia(%tmp.mail.rp. [ $+ [ %m ] ])) { set %tmp.mail.sp. [ $+ [ %m ] ] 1 } } }

    :FINFILTRO

    $lista(%m,$gettok($sock($sockname).mark,6,32),%tmp.mail.f. [ $+ [ %m ] ] , %tmp.mail.s. [ $+ [ %m ] ],$gettok($sock($sockname).mark,1-4,32) ,%tmp.mail.sp. [ $+ [ %m ] ])

    unset %tmp.mail.f. [ $+ [ %m ] ] %tmp.mail.s. [ $+ [ %m ] ] %tmp.mail.sp. [ $+ [ %m ] ] %tmp.mail.r. [ $+ [ %m ] ] %tmp.mail.rp. [ $+ [ %m ] ]

    var %n = $gettok($sock($sockname).mark,6,32) | inc %n | sockmark $sockname $puttok($sock($sockname).mark,%n,6,32) | if %n > $gettok($sock($sockname).mark,5,32) { smail quit } | else { smail top %n 0 }
  }

  if %c == +OK {
    if %p == 1 { smail user $gettok(%m,1,64) | pmail 2 }
    if %p == 2 { smail pass $decode64($gettok($sock($sockname).mark,2,32),m) | pmail 3 }
    if %p == 3 { smail stat | pmail 4 }
    if %p == 4 { var %n = $gettok(%a,2,32) | if (%n != 0) { sockmark $sockname $puttok($sock($sockname).mark,%n,5,32) | smail top 1 0 | pmail 5 } | else smail quit }
  }
}


alias -l smail {
  sockwrite -tn $sockname $1-
}
alias -l pmail {
  var %a = $sock($sockname).mark | sockmark $sockname $gettok(%a,1-6,32) $1
}

alias -l limpia {
  if (< isin $1-) return $gettok($gettok(x $1-,1,64),2,60) $+ @ $+ $gettok($gettok(x $1-,2,64),1,62) | else return $gettok($1-,-1,32)
}

alias -l spamalea  var %i = 1, %c | :L1 | var %a = $mid($2-,%i,1) | if (%a) { if (%a !isin aeiou-_1234567890) { inc %c | if (%c == $1) return si } | else { %c = 0 } | inc %i | goto L1 }

alias -l lista {

  var %g = $iif($6 > 0,zpam,$1)
  aline @maills1 %g $+ i $+ $iif($len($4) > 60,$left($4,60) $+ ...,$4) 4:14 $limpia($3) $+  $+ $2 $+  $+ $5 $+  $+ 3 $+ $3 $+  $+ $4
  mailgrupo %g

  refres  
}

alias mailgrupo {
  var %l = $fline(@maills1,$1 $+ g*,1) , %n = $fline(@maills1,$1 $+ i*,0)
  if (%n > 0) { 
    if (%l) rline @maills1 %l $1 $+ g $+ $replace($1,zpam,$s(9)) $+  ( $+ %n $+ )-- $+ $iif($1 == zpam,5,4)
    else aline @maills1 $1 $+ g $+ $replace($1,zpam,$s(9)) $+  ( $+ %n $+ )-- $+ $iif($1 == zpam,5,4)
    return
  }
  if (%l) dline @maills1 %l
}

alias titulamail {
  if ($window(@mail)) titula @mail $s(e-mail) ::: $s(5) $+ : %tmp.mail.nn ::: $s(10) $+ : $fline(@maills1,*i*,0) ::: $s(11) $+ : $calc($sock(cmail*,0) + $sock(dmail*,0))
  if ($sock(cmail*,0) == 0) {
    var %s = $fline(@maills1,zpami*,0) , %n = $calc($fline(@maills1,*i*,0) - %s)
    if (%tmp.mail.nn) { unset %tmp.mail.nn | echo -st $logo $s(12) $iif(%n > 0,* %n $s(10) $+ ) $iif(%s > 0,* %s $lower($s(9)) $+ ) }
    raya
    if (%n < 1) && (%s < 1) && (!$window(@mail)) { window -c @maills1 }
    if (%n > 0) && (!$window(@mail)) {
      var %a = $mail.resumen , %i = 1 , %y = 5 , %g = $gettok(%gui.cc,6,44) | %nl = $numtok(%a,22)
      var %ac = $active | if $numtok(%ac,32) > 1 { %ac = " $+ %ac $+ " }
      window -kpBwz +d @e-mails $calc($window(-3).w - 200) $window(@barra).h 200 $calc(15 * %nl + 8) @e-mails
      drawrect -rnf @e-mails $gettok(%gui.cc,1,44) 1 0 0 200 $window(@e-mails).h
      cua @e-mails 3 2 192 $calc($window(@e-mails).h - 6) $gettok(%gui.cc,4,44) $gettok(%gui.cc,5,44) $gettok(%gui.cc,3,44)

      :L1 | var %c = $gettok(%a,%i,22) | if (%c) {
        if ($gettok(%c,1,32) != spam) { 
          drawtext -rcn @e-mails %g Verdana 9 20 %y 300 14 $gettok(%c,2,32) : $gettok(%c,1,32)
          drawpic -cnt @e-mails 65280 4 %y 42 0 14 14 " $+ $mircdirskin\ $+ %skin $+ \miniconos.bmp"
          inc %y 15 
        }
        inc %i | goto L1
      }
      drawline @e-mails
      if ($appactive) { window -a @e-mails | window -a %ac }
      if ($o(8) == on) $cartelito($s(13),$iif(%n > 0,$s(10) $+ : %n) $iif(%s > 0, \  Spam: %s))
      if ($o(9) == on) slocal $o(10)
      .timerMAIL.FORZA off
    }
  }
}

alias mail.forza {
  var %n = 1 | : L1 | var %a = $sock(cmail*,%n) | if (%a) { %a = $sock(cmail*,%n).mark | echo -st $logo $gettok(%a,1,32) 4 $+ $s(8) $+ : $s(14) ( $gettok(%a,3,32) ) | inc %n | goto L1 }
  sockclose cmail* | titulamail
}

menu @e-mails {
  dclick: mailnotif -v | window -c @e-mails
  $s(15): mailnotif -v | window -c @e-mails
  -
  $s(16):mail.cierra
}

alias mail.resumen {
  var %i = 1 , %c | :L1 | var %a = $fline(@maills1,*g*,%i).text | if (%a) { if ($gettok(%a,1,8) != zpam) { %c = $addtok(%c,$strip($remove($gettok(%a,3,8),$chr(40),$chr(41))),22) } | inc %i | goto L1 } | return %c
}


alias MAIL.CLICK {
  if $gettok($1-,2,8) == g { tttip $fin$ | return }
  if $1 == 1 { if ($3) .timerTTTIPmail -m 1 300 tttip $s(17) $+ :  $gettok($gettok($3-,5,8),1,32)  $+ $s(18) $+ : $nexe($gettok($3-,7,8))  $+ $s(19) $+ : $nexe($gettok($3-,8,8)) }
  if $1 == 2 { .timerTTTIPmail off | lee1mail $gettok($3-,5,8) $gettok($3-,4,8) }
  if $1 == 0 { var %a = $sline(@maills1,1) | if (%a) lee1mail $gettok(%a,5,8) $gettok(%a,4,8) }
}

#guimgen.@mail on
menu @guimgen {
  $iif($gettok($sline(@maills1,1),1,8) != zpam && $gettok($sline(@maills1,1),2,8) == i,$s(20)): {
    var %a = $gettok($sline(@maills1,1),1,8)
    rline @maills1 $sline(@maills1,1).ln $puttok($sline(@maills1,1),zpam,1,8)
    mailgrupo zpam
    mailgrupo %a
    refres
  }
  $iif($gettok($sline(@maills1,1),1,8) == zpam && $gettok($sline(@maills1,1),2,8) == i,$s(21)): {
    var %a = $sline(@maills1,1)
    rline @maills1 $sline(@maills1,1).ln $puttok($sline(@maills1,1),$gettok($gettok(%a,5,8),1,32),1,8)
    mailgrupo zpam
    mailgrupo $gettok($gettok(%a,5,8),1,32)
    refres
  }
  -
  $iif($gettok($sline(@maills1,1),2,8) == i,$s(2)): {
    var %a = $limpia($gettok($sline(@maills1,1),7,8))
    mandamail %a
  }
}
#guimgen.@mail end






alias borramail {
  if ($1 == 1) { pregunta $s(22) $+ borramail zpamnoop | return }
  mailcierrasocks

  var %n = 1 , %l | :L1
  var %a = $fline(@maills1,$1 $+ i*,%n).text
  if (%a) {
    var %e = $gettok($gettok(%a,5,8),1,32)
    if (!$findtok(%l,%e,32)) { 
      %l = $addtok(%l,%e,32) | sockopen DMAIL. $+ %e $gettok($gettok(%a,5,8),3-4,32)
      sockmark DMAIL. $+ %e user_ $+ $gettok($gettok(%a,5,8),1,32) pass_ $+ $decode64($gettok($gettok(%a,5,8),2,32),m) *
    }
    inc %n | goto L1
  }
}

on 1:sockopen:DMAIL*: titulamail | if $sockerr > 0 { scon -a echo -st $logo $gettok($sock($sockname).mark,1,32) 4 $+ $s(8) $+ : $sock($sockname).wsmsg | sockclose $sockname | .timerTITULAMAIL -o 1 1 titulamail | return }
on 1:sockclose:DMAIL*: .timerTITULAMAIL -o 1 1 titulamail

on 1:sockread:DMAIL*: {
  var %a
  sockread %a
  var %m = $sock($sockname).mark , %c = $gettok(%a,1,32)

  if %c == +OK {
    var %k = $gettok(%m,1,32)
    if (%k == *) {
      var %b = $fline(@maills1,zpami** $+ $gettok($sockname,2-,46) *,1)
      if (%b) { var %t = $line(@maills1,%b) | sockwrite -tn $sockname dele $gettok(%t,4,8) | titulamail | dline @maills1 %b | refres }
      else { sockwrite -tn $sockname quit | mailgrupo zpam | refres }
      return
    }  
    if (user_* iswm %k) { sockwrite -tn $sockname user $gettok($gettok(%k,2-,95),1,64) | goto D1 }
    if (pass_* iswm %k) { sockwrite -tn $sockname pass $gettok(%k,2-,95) }
    :D1
    sockmark $sockname $gettok(%m,2-,32)
  }
}

alias -l refres {
  if $window(@mail) { guilista @mail mail.ls1  | drawline @mail }
}



alias lee1mail {
  if (!$5) return
  if (!$sock(LEEMAIL- $+ $1)) {
    sockopen LEEMAIL- $+ $1 $3 $4
    sockmark LEEMAIL- $+ $1 user_ $+ $1 pass_ $+ $decode64($2,m) retr_ $+ $5
  }
  else { sockmark LEEMAIL- $+ $1 retr_ $+ $5 | sockwrite -tn LEEMAIL- $+ $1 stat }
  .timerMailCierra- $+ $1 1 25 sockclose LEEMAIL- $+ $1

  unset %tmp.mail.leemen %tmp.mail.100
  window -c @mail-m0 | window -lh @mail-m0
  if (!$window(@mail-msg)) { var %a = $readini ircap.ini ww mailmsg | window @mail-msg %a } 
  clear @mail-msg | echo @mail-msg $s(23) $1 ...
}

on 1:sockopen:LEEMAIL-*: if $sockerr > 0 { scon -a echo -st $logo $removecs($sockname,LEEMAIL-) 4 $+ $s(8) $+ :  $sock($sockname).wsmsg | sockclose $sockname | return }

on 1:sockread:LEEMAIL-*: {
  var %s
  sockread %s
  if -ERR isin %s { echo -s $sockname 4 $+ $s(8) $+ : %s | sockclose $sockname | halt }
  if ($len($remove(%s,$chr(32))) < 1) aline @mail-m0  | else aline @mail-m0 %s
  inc %tmp.mail.100

  if ($gettok(%s,1,32) == +OK) {
    var %k = $gettok($sock($sockname).mark,1,32)
    if (user_* iswm %k) { sockwrite -tn $sockname user $gettok($gettok(%k,2-,95),1,64) | goto D1 }
    if (pass_* iswm %k) { sockwrite -tn $sockname pass $gettok(%k,2-,95) }
    if (retr_* iswm %k) { sockwrite -tn $sockname retr $gettok(%k,2-,95) }
    :D1
    sockmark $sockname $gettok($sock($sockname).mark,2-,32)
    return
  }

  if (Content-Disposition: inline; isin %s) || (Content-Type: text/htmlo; isin %s) || (Content-Disposition: attachment; isin %s) { aline @mail-m0  | aline @mail-m0  $+ $s(24) | sockclose $sockname | sacamail }
  if %tmp.mail.100 > 200 { aline @mail-m0  $+ $s(25) | sockclose $sockname | sacamail }
  if (%s == .) { sacamail | return }
}

alias sacamail {
  %tmp.mail.mos = $1-
  unset %tmp.mail.lsep
  clear @mail-msg
  unset %tmp.mail.leemen %tmp.mail.raya | if (-c isin $1) { %tmp.mail.leemen = 1 }
  var %l = 1 | :L1
  var %s = $line(@mail-m0,%l) | if (%s) {
    if (---- isin %s) && (-c !isin $1) { unset %tmp.mail.leemen }

    if (%tmp.mail.leemen) { if (-c isin $1) echo @mail-msg %s | else { var %t = $sinhtml(%s)) | if (%t) { echo @mail-msg %t | unset %tmp.mail.lsep = 1 } | else { if (!%tmp.mail.lsep) { echo @mail-msg  | %tmp.mail.lsep = 1 } } } }
    else {
      var %c = $gettok(%s,1,32) , %k = echo @mail-msg
      if (%s == ) { %tmp.mail.leemen = 1 | if (!%tmp.mail.raya) { aline @mail-msg $str(-= ,111) | %tmp.mail.raya = 1 } }
      if ( %c == From:) { %k  $+ $s(18) $+ : $gettok(%s,2-999,32) }
      if (%c == To:) { %k  $+ $s(26) $+ : $gettok(%s,2-999,32) }
      if (%c == Date:) { %k  $+ $s(27) $+ : $gettok(%s,2-999,32) }
      if (%c == Subject:) { %k  $+ $s(19) $+ : $gettok(%s,2-999,32) }
    }
    inc %l | goto L1
  }
}

menu @mail-msg {
  $iif(%tmp.mail.mos != -c,$s(28)): sacamail -c
  $iif(%tmp.mail.mos == -c,$s(29)): sacamail
  -
  $s(30): writeini ircap.ini ww mailmsg $window(@mail-msg).x $window(@mail-msg).y $window(@mail-msg).w $window(@mail-msg).h  $window(@mail-msg).font  $window(@mail-msg).fontsize
}

alias icoe-mail {
  f3 setvarios
  var %a = $findtok($gettok(%setup.pñ1,5-,32),e-mail,1,22)
  %setup.pñ1 = $puttok(%setup.pñ1,%a,3,32)
  setvarios2 %a
}

alias mail.unload {
  .timermail* off
  mail.cierra
  hfree mail
  unload -rs mail.mrc
}


on 1:START: { 
  var %a = $readini(%perfil,email,op)
  if (!%a) { writeini %perfil email op off,60,off,off,off,off,off,off,off,- }

  .hmake -s mail | hload mail "lng\ $+ %idioma $+ \mail.lnh"
}
on 1:SIGNAL:idioma: if ($1 != $2) { hload mail "lng\ $+ %idioma $+ \mail.lnh" }

;EOF