aIRC — File Browser

aIRCv0.8.69 / aIRCv0.8.69 / script / servers.mrc

servers.mrc — 6.04 KB — Download this file

;/**********************************************************************
; *
; * aIRC
; * Servers List
; *
; **********************************************************************/

alias _servers.dialog {
  var %ifile = $_mini(files,servers),%ofile = $_usrdir(snets.ini),%line
  if (%ifile == $null) { %ifile = servers.ini }
  if ($_not($isfile(%ifile))) {
    error.a Servers INI file not found. $iif(%ifile != $null,$^'(%ifile))
    return
  }
  if ($isfile(%ofile)) {
    %line = $read -nl1 %ofile
    if (;* !iswm %line) || ($remove(%line,;) != $crc($_mini(files,servers))) { _servers.netr Updating servers index file... }
  }
  else { _servers.netr Creating servers index file... }
  _dialog -m _servers _servers
}
dialog _servers {
  size -1 -1 255 120
  option dbu
  title "Servers"

  box "&Network",1,5 5 85 112
  list 2,10 15 75 83
  button "",3,10 100 75 12,hide

  box "&Server",11,95 5 155 112
  list 12,100 15 100 83
  text "",13,100 102 100 12,center
  text "&Port:",14,205 15 20 10
  combo 15,205 25 40 100,drop

  button "&Connect",400,205 43 40 15
  button "&IRC Sock",401,205 63 40 15,ok
  button "Cancel",405,205 83 40 15,cancel

  text "",402,100 100 100 12,hide
}
ON *:DIALOG:_servers:*:*:{
  if ($devent == init) {
    _mdx.init $_icofile(server.ico)
    _dummy $_lang.loaddialog($dname,$dname,00086969,main.lang,$scriptdir)
    _servers.dinit
  }
  elseif ($devent == sclick) {
    if ($did = 2) { _servers.dsclick2 }
    elseif ($did == 3) {
      var %win = @__serversrsd3,%file = $_usrdir(sstatus.mrc),%s = $did(2,$did(2,1).sel)
      if (%s != $null) {
        _openwins %win
        loadbuf -tnets %win $"(%file)
        if ($fline(%win,%s,0)) { _servers.sstatus 0 %s }
        else { _servers.sstatus 1 %s }
        _servers.dsclick2
        close -@ %win
      }
    }
    elseif ($did == 12) {
      var %i = 1,%n,%p,%win = @__serversrs,%file = $_mini(files,servers),%net = $did(2,$did(2,1).sel),%desc = $did(12,$did(12,1).sel),%server,%line,%ports
      close -@ %win
      window -hs %win
      filter -fw %file %win *= $+ %desc $+ SERVER:*
      if ($line(%win,1) != $null) {
        %line = $gettok($ifmatch,2-,61)
        %server = $gettok(%line,$calc($findtok(%line,$wildtok(%line,*SERVER,1,58),1,58) + 1),58)
        %ports = $_range($removecs($wildtok(%line,*GROUP,$wildtok(%line,*GROUP,0,58),58),GROUP),20)
        did -o $dname 13 1 %server
        did -o $dname 402 1 %server
        did -r $dname 15
        %n = $numtok(%ports,44)
        while (%i <= %n) {
          %p = $gettok(%ports,%i,44)
          if (%p == 6667) || ((%p == 7000) && (*.dal.net iswm %server)) { did -ac $dname 15 %p }
          else { did -a $dname 15 %p }
          inc %i
        }
        if ($did(15,0).sel == 0) { did -c $dname 15 1 }
      }
      close -@ %win
    }
    elseif ($did == 400) || ($did == 401) {
      if ($did(402) == $null) { halt }
      elseif ($_not($_ishost($did(402)))) { error.a $did(402) is an invalid host }
      else { $iif($did == 400,server,irc) $did(402) $iif($_isint($did(15)),$did(15)) }
      _quickunload _servers $script
    }
    elseif ($did == 405) { _quickunload _servers $script }
  }
  elseif ($devent == dclick) {
    if ($did == 12) { dialog -k $dname }
  }
  did $iif($did(402) != $null,-e,-b) $dname 400
  if ($did(402) != $null) && ($_irc.addonver) { did -e $dname 401 }
  else { did -b $dname 401 }
}
alias _servers.dinit {
  did -r $dname 2,12,13,402,15
  var %win = @__serversinit,%currnet = %.network,%i
  close -@ %win
  window -hs %win
  loadbuf 2-9999 %win $_usrdir(snets.ini)
  _win2dialog %win $dname 2 *
  clear %win
  if (%currnet == $null) { %currnet = $gettok($_mini(mirc,host),$calc($findtok($_mini(mirc,host),$wildtok($_mini(mirc,host),*group,$wildtok($_mini(mirc,host),*group,0,58),58),58) + 1),58) }
  if (%currnet != $null) {
    %i = $did($dname,2).lines
    if ($didwm($dname,2,%currnet,1)) {
      did -c $dname 2 $ifmatch
      _servers.dsclick2
    }
  }
  close -@ %win
}
alias _servers.dsclick2 {
  did -r $dname 12
  var %i,%n,%win = @__serversr,%win2 = @__serversr2,%win3 = @__serversr3,%file = $_mini(files,servers),%s = $did(2,$did(2,1).sel)
  _openwins %win %win2 %win3
  _servers.f *=Random & %s server*
  _servers.f *GROUP: $+ %s
  _win2dialog %win3 $dname 12 random *
  clear %win2
  filter -wwx %win3 %win2 random *
  clear %win3
  filter -ww %win2 %win3 *
  _win2dialog %win3 $dname 12 * random *
  clear %win2
  filter -wwx %win3 %win2 * random *
  clear %win3
  filter -ww %win2 %win3 *
  _win2dialog %win2 $dname 12 *
  clear %win
  %file = $_usrdir(sstatus.mrc)
  loadbuf -tnets %win $"(%file)
  if ($fline(%win,%s,0)) { did -ov $dname 3 1 &Remove net from status menu }
  else { did -ov $dname 3 1 &Add net to status menu }
  close -@ %win
  close -@ %win2
  close -@ %win3
  did -r $dname 13,402,15
}
alias _servers.f {
  var %i = 1,%n,%win = @__serversr,%win2 = @__serversr2,%win3 = @__serversr3,%file = $_mini(files,servers),%l,%tok,%a,%m,%s = $did(2,$did(2,1).sel)
  if (%file == $null) { %file = servers.ini }

  clear %win
  clear %win2
  if ($isfile(%file)) { filter -fw $"(%file) %win $1- }
  %n = $line(%win,0)
  while (%i <= %n) {
    %l = $line(%win,%i)
    %tok = 1- $+ $findtok(%l,$wildtok(%l,*SERVER,1,58),1,58)
    aline %win2 $left($gettok($gettok(%l,%tok,58),2,61),-6)
    inc %i
  }
  filter -ww %win2 %win3 *
}
alias _servers.netr {
  var %i = 1,%n = $server(0),%s,%ifile = $_mini(files,servers),%ofile = $_usrdir(snets.ini),%line,%d,%old
  _progress.init $1-
  _progress 0
  write -c $"(%ofile) ; $+ $crc(%ifile)
  while (%i <= %n) {
    %s = $server(%i).group
    if (%i == 1) || (30 // %i) { _progress2 %i %n %i / %n }
    %old = %s
    if (%s isnum) {
      %d = $server(%i).desc
      if ($numtok(%d,32) > 3) && ($gettok(%d,1,32) == random) && ($gettok(%d,$numtok(%d,32),32) == server) { %s = $gettok(%d,$calc($numtok(%d,32) - 1),32) }
      else { var %s }
    }
    if (%s != $null) { write -s $+ %s $"(%ofile) %s }
    inc %i
  }
  _progress 100 Done!
  return 0
}