All pastes #934755 Raw Edit

Something

public text v1 · immutable
·published 2008-03-09 01:21 UTC
rendered paste body
; ––––––––––––––––––––––––––––––––––––––––
; NoNameScript v4.2 - sbnc control - coded by greeny & mute
; Don't edit anything in here unless you REALLY know what you're doing!
; ––––––––––––––––––––––––––––––––––––––––
alias sbnc {
  if ($1 == read) { sbnc.getprivlog   }
  else { !sbnc $1- }
}
alias s-bnc {
  if (%sbnc.info. [ $+ [ $cid ] ]) { noop $dialog(sbnc,sbnc,-4) }
  else { errdialog you can only open the sbnc control when the active connection is connected to a supported sbnc! }
}
dialog sbnc {
  title "sbnc control [/s-bnc]"
  size -1 -1 397 362
  option pixels
  icon scripts\pics\nntray.ico, 0
  tab "General", 1, 4 6 388 323
  box "General options", 32, 12 32 374 191, tab 1
  text "Set virtual host to", 15, 40 52 90 16, tab 1
  edit "", 16, 146 48 170 22, tab 1 autohs limit 100
  button "&Set!", 3, 318 48 60 22, disable tab 1
  text "Set Server : Port", 5, 40 76 90 16, tab 1
  edit "", 411, 146 72 120 22, tab 1 autohs limit 100
  edit "", 412, 266 72 50 22, tab 1 autohs limit 100
  button "&Set!", 41, 318 72 60 22, disable tab 1
  text "Set automode", 8, 40 100 90 16, tab 1
  edit "", 421, 146 96 170 22, tab 1 autohs limit 100
  button "&Set!", 42, 318 96 60 22, disable tab 1
  text "Set dropmodes", 11, 40 124 90 16, tab 1
  edit "", 431, 146 120 170 22, tab 1 autohs limit 100
  button "&Set!", 43, 318 120 60 22, disable tab 1
  text "Change password", 52, 40 148 92 16, tab 1
  button "Set...", 53, 318 144 60 22, tab 1
  check "&Auto-play private logs when available", 7, 19 198 198 18, tab 1
  check "&Open queries for log", 71, 225 198 124 18, tab 1
  check "&Use quit as away", 37, 40 246 115 18, tab 1
  text "Set away text to", 13, 40 270 86 16, tab 1
  edit "", 23, 146 266 170 22, tab 1 autohs limit 100
  button "&Set!", 22, 318 266 60 22, disable tab 1
  text "Set offline nick to", 17, 40 292 86 16, tab 1
  edit "", 25, 146 288 170 22, tab 1 autohs limit 30
  button "&Set!", 24, 318 288 60 22, disable tab 1
  box "Offline options", 31, 12 229 374 88, tab 1
  text "Set realname", 2, 40 170 92 16, tab 1
  edit "", 10, 146 166 170 22, tab 1 autohs limit 100
  button "&Set!", 21, 318 168 60 22, disable tab 1
  tab "Admin control", 12
  box "Users on your bouncer (right-click for options)", 35, 12 32 374 283, tab 12
  list 28, 20 47 358 259, disable tab 12 size
  tab "Info", 39
  box "sbnc connection status", 33, 12 32 374 112, tab 39
  text "Connection status", 29, 22 52 94 14, tab 39
  edit "", 30, 176 48 202 22, tab 39 read autohs
  edit "", 26, 176 70 202 22, tab 39 read autohs
  edit "", 27, 176 92 202 22, tab 39 read autohs
  text "Version", 18, 22 96 42 14, tab 39
  text "Server", 14, 22 74 38 14, tab 39
  text "Uptime", 34, 22 118 42 14, tab 39
  edit "", 36, 176 114 202 22, tab 39 read autohs
  link "Official sbnc homepage", 45, 14 220 132 16, tab 39
  button "C&ommand list", 6, 4 332 80 24
  button "&Close", 4, 312 332 80 24, ok
}
dialog sbnc.adduser {
  title "Add sbnc user"
  size -1 -1 256 106
  option pixels
  icon scripts\pics\nntray.ico
  box "Add user to sbnc (no password = generate)", 1, 4 2 248 70
  button "&Ok", 2, 88 78 80 24
  button "&Cancel", 3, 172 78 80 24, cancel
  edit "", 4, 84 18 160 22, autohs limit 8
  edit "", 5, 84 40 160 22, pass autohs limit 30
  text "Login", 7, 14 22 32 14
  text "Password", 8, 14 44 54 14
}
on *:dialog:sbnc.adduser:*:*:{
  if ($devent == sclick) {
    if ($did == 2) {
      var %l = $remove($did(4),$chr(32)),%u = $remove($did(5),$chr(32))
      if (!%l) { errdialog you did not enter a login. }
      else {
        dialog -x $dname
        if (%u) { .raw sbnc adduser %l  %u }
        else {
          set -u10 %sbnc.showpass 1 
          .raw sbnc adduser $did(4)
        }
        sbnc.getusers
      }
    }
  }
}
alias sbnc.adduser { noop $dialog(sbnc.adduser,sbnc.adduser,-4) }
alias sbnc.getstatus {
  set -u100 %sbnc.getstatus 1
  .raw SBNC status
}
alias sbnc.getsettings {
  set -u100 %sbnc.getsettings 1
  .raw SBNC set
}
alias sbnc.getusers {
  did -rb sbnc 28
  set -u100 %sbnc.bwhoprog 1
  .raw SBNC WHO
}
alias sbnc.refcontime {
  if ($dialog(sbnc)) { did -ra $v1 36 $uptime(server,1) }
  else { .timersbnc.refcontime off }
}
alias sbnc.refinfo {
  tokenize 32 %sbnc.info. [ $+ [ $cid ] ]
  did -ra sbnc 30 connected
  did -ra sbnc 26 $1
  did -ra sbnc 27 $2-
}
alias sbnc.simul {
  sbnc simul $1 $$eddialog(Please enter a command to execute for $1 $+ .)
}
on *:dialog:sbnc:*:*:{
  if ($devent == init) {
    mdx SetControlMDX $dname 28 ListView report showsel single infotip rowselect > $mdxfile(views)
    did -i $dname 28 1 headerdims 20:1 70:2 70:3 90:4 90:5 90:6
    did -i $dname 28 1 headertext + 0 Status	+ 0 User	+ 0 Nickname	+ 0 Server	+ 0 Real name	+ 0 Last connect
    did -i $dname 28 1 settxt bgcolor none
    did -a $dname 30 not connected
    set %sbnc.cid $cid
    if (%sbnc.autoplayprivlog) { did -c $dname 7 }
    if (%sbnc.logqueries) { did -c $dname 71 }
    sbnc.getstatus
    sbnc.getsettings
    sbnc.refcontime
    sbnc.refinfo
    .timersbnc.refcontime -io 0 1 sbnc.refcontime
  }
  elseif ($devent == sclick) {
    if ($did == 6) { cmdlist -s }
    elseif ($did == 3) {
      .raw sbnc set vhost $iif($did(16) == $null,:,$did(16))
      idialog Vhost $iif($did(16) == $null,unset,set to $did(16)) $+ !
    }
    elseif ($did == 41) {
      .raw sbnc set server $did(411) $did(412)
      idialog Server changed to $did(411) $+ : $did(412) $+  !
    }
    elseif ($did == 42) {
      .raw sbnc set automodes $iif($did(421) == $null,:,$did(421))
      idialog Automodes $iif($did(412) == $null,unset,set to $did(421)) $+ !
    }
    elseif ($did == 43) {
      .raw sbnc set dropmodes $iif($did(431) == $null,:,$did(431))
      idialog Dropmodes $iif($did(431) == $null,unset,set to $did(431)) $+ !
    }
    elseif ($did == 53) {
      .raw sbnc set password $$epdialog(Please enter a new password.)
      idialog Password change requested.
    }
    elseif ($did == 21) {
      .raw sbnc set realname $iif($did(10) == $null,:,$did(10))
      idialog Realname $iif($did(10) == $null,unset,set to $did(10)) $+ !
    } 
    elseif ($did == 22) {
      .raw sbnc set away $iif($did(23) == $null,:,$did(23))
      idialog Leave message $iif($did(23) == $null,unset,set to $did(23)) $+ !
    }
    elseif ($did == 24) {
      .raw sbnc set awaynick $iif($did(25) == $null,:,$did(25))
      idialog Away nick $iif($did(25) == $null,unset,set to $did(25)) $+ !
    }
    elseif ($did == 7) { sdt sbnc.autoplayprivlog }
    elseif ($did == 71) { sdt sbnc.logqueries }
    elseif ($did == 37) {
      if ($did($did).state) { .raw sbnc set usequitasaway ON }
      else { .raw sbnc set usequitasaway OFF }
    }
    elseif ($did == 28) {
      if (rclick * iswm $did($did,1)) {
        var %u = $cell($did,2),%n = $cell($did,3)
        popdll.new
        popdll.add 1	+g 1 0 — $iif($did($did).sel,$shorten(15,%u),sBNC users) —
        popdll.add 2	+ 2 0 -
        popdll.add 3	 $+ $iif($did($did).sel,+s,+sg) 3 0 &Admin status
        popdll.add 3 1	+ 4 0 &Give admin statussbnc.adminoption sbnc admin %u
        popdll.add 3 2	+ 5 0 &Take admin statussbnc.adminoption sbnc unadmin %u
        if ($cell($did,1) != !) { popdll.add 4	 $+ $iif($did($did).sel,+,+g) 6 0 Suspend Usersbnc.suspend sbnc suspend %u }
        else { popdll.add 4	 $+ $iif($did($did).sel,+,+g) 7 0 Unsuspend Usersbnc.suspend sbnc unsuspend %u }
        popdll.add 5	 $+ $iif($did($did).sel,+,+g) 8 0 &Change password...sbnc.changepass %u
        popdll.add 6	 $+ $iif($did($did).sel,+,+g) 9 0 &Whoiswe %n
        popdll.add 7	+ 10 0 -
        popdll.add 8	 $+ $iif($did($did).sel,+,+g) 11 0 &Simul command...sbnc.simul %u
        popdll.add 9	+ 12 0 -
        popdll.add 10	+s 13 0 &User
        popdll.add 10 1	+ 14 0 &Add user...sbnc.adduser
        popdll.add 10 2	 $+ $iif($did($did).sel,+,+g) 15 0 &Delete usersbnc.adminoption sbnc deluser %u
        popdll.add 10 3	+ 16 0 -
        popdll.add 10 4	$iif($did($did).sel,+,+g) 17 0 &Kill usersbnc.adminoption sbnc kill %u
        popdll.add 11	+ 18 0 -
        popdll.add 12	+ 19 0 &Refresh listsbnc.getusers
        popdll.disp
      }
      else { sortmdx $dname $did }
    }
    elseif ($did == 45) { url -n http://www.shroudbnc.info/ }
  }
  elseif ($devent == edit) {
    if ($did == 16) { did -e $dname 3 }
    if ($did == 411) { did $iif($did($did) != $null,-e,-b) $dname 41 }
    if ($did == 412) { did $iif($did($did) != $null,-e,-b) $dname 41 }
    if ($did == 421) { did -e $dname 42 }
    if ($did == 431) { did -e $dname 43 }
    if ($did == 10) { did -e $dname 21 }
    if ($did == 23) { did -e $dname 22 }
    if ($did == 25) { did -e $dname 24 }
  }
  elseif ($devent == close) { unset %sbnc.cid }
}
alias sbnc.changepass { .raw sbnc resetpass $1 $$epdialog(Please enter a new password for the user $1 $+ .) }
alias sbnc.adminoption {
  .raw $1-
  sbnc.getusers
}
alias sbnc.suspend {
  .raw $1-
  sbnc.getusers
}
on ^*:text:*:?:{
  if ($sbnc.nick($nick) && (%sbnc.info. [ $+ [ $cid ] ])) {
    sbnc.textevent $1-
    if ($ident disconnected from the server. iswm $1-)  {
      .signal -n disconnect -b
      echo -sti12c info * Bouncer disconnected from server
    }
    elseif (Connected to an IRC server. iswm $1-) { echo -sti12c info * Bouncer successfully connected you to the server! }
  }
}
on ^*:open:?:{ if ($sbnc.nick($nick) && (%sbnc.info. [ $+ [ $cid ] ])) { sbnc.textevent $1- } }
alias sbnc.textevent {
  if ($dialog(sbnc)) {
    if (%sbnc.getsettings) { sbnc.parsesetting $1- }
    if (%sbnc.bwhoprog) { sbnc.addbwho $1- }
    if (%sbnc.getstatus) { sbnc.parsestatus $1- }
    haltdef
  }
  sbnc.pvloghandler $1-
}
on ^*:snotice:*:{
  if ($nick == shroudbnc.info) && ($regex(sinfo,$1-,/^\*\*\* shroudBNC ([^ ]+)(.+))) && (!%sbnc.info. [ $+ [ $cid ] ])  {
    set %sbnc.info. $+ $cid $+($server,:,$port) $regml(sinfo,1) $regml(sinfo,2)
    set -u100 %sbnc.modehide. [ $+ [ $cid ] ] 1
    mode $me
  }
}
on ^*:notice:*:?:{
  if ($sbnc.nick($nick) && (%sbnc.info. [ $+ [ $cid ] ])) {
    if ($dialog(sbnc)) { 
      if (%sbnc.getsettings) { sbnc.parsesetting $1- }
      if (%sbnc.bwhoprog) { sbnc.addbwho $1- }
      if (%sbnc.getstatus) { sbnc.parsestatus $1- }
      if (!%sbnc.showpass) {
        haltdef
      }
      else {
        unset %sbnc.showpass
      } 
    }
    sbnc.pvloghandler $1-
  }
  if ($nick == Notice) && ($regex(sinfo,$1-,/^\*\*\* shroudBNC([^ ]+)(.+))) && (!%sbnc.info. [ $+ [ $cid ] ])  {
    set %sbnc.info. $+ $cid $+($server,:,$port) $regml(sinfo,1) $regml(sinfo,2)
    set -u100 %sbnc.modehide. [ $+ [ $cid ] ] 1
    mode $me
  }
  if ($sbnc.nick($nick)) && ($1- == End of USERS.) {
    sbnc.unsetbwho
    haltdef
  }
}
raw 221:*:{
  if (%sbnc.modehide. [ $+ [ $cid ] ]) {
    unset %sbnc.modehide. $+ $cid
    haltdef
  }
}
alias sbnc.pvloghandler {
  var %w = $specialcidwin(sBNCPrivateLog)
  if ($1- == You have new messages. Use '/msg -sBNC read' to view them.) && (%sbnc.autoplayprivlog) {
    sbnc.getprivlog 
    haltdef
  }
  elseif ($1 == done) && (%sbnc.eraseprivlog. [ $+ [ $cid ] ]) {
    unset %sbnc.eraseprivlog. $+ $cid 
    thmecho -a sbnc privatelog erased!
    haltdef
  }
  elseif (%sbnc.getprivlog. [ $+ [ $cid ] ]) && (%w) {
    sbnc.addpvlog $1-
    haltdef
  }
}
alias sbnc.addpvlog {
  var %w = $specialcidwin(sBNCPrivateLog)
  if ($1- == End of LOG. Use '/msg -sBNC erase' to remove this log.) || ($1- == End of LOG. Use '/sBNC erase' to remove this log.) {
    aline %w 
    var %x = %sbnc.messages. [ $+ [ $cid ] ]
    if (%x) { thmecho %w Done retrieving $thmhl(%x) $iif(%x == 1,message.,messages.)  $iif(%sbnc.logqueries,Some of your messages might be displayed in query windows) }
    else { thmecho %w No new messages. }
    unset %sbnc.messages. $+ $cid
    unset %sbnc.getprivlog. $+ $cid
  }
  elseif ($regex(pvlog,$1-,  /^[a-z]{3} ([a-z]{3} \d\d?) (\d\d?:\d\d:\d\d \d{4}):? ([^ ]+) \(([^ ]+@[^ ]+)\): (.+)$/i)) { 
    inc %sbnc.messages. $+ $cid
    if (%sbnc.logqueries) {
      if ($window($regml(pvlog,3),1).type != query) { query_log $regml(pvlog,3) SBNC }
      thmecho $regml(pvlog,3) $asctime($ctime($regml(pvlog,1) $asctime(yyyy) $regml(pvlog,2)),dd.mm.yyyy $+ $chr(44) HH:nn:ss) $+ :  $+ $regml(pvlog,3) $+  $nbr($regml(pvlog,4)) $+ : $regml(pvlog,5) 
    }
    else {
      thmecho %w $asctime($ctime($regml(pvlog,1) $asctime(yyyy) $regml(pvlog,2)),dd.mm.yyyy $+ $chr(44) HH:nn:ss) $+ :  $+ $regml(pvlog,3) $+  $nbr($regml(pvlog,4)) $+ : $regml(pvlog,5) 
    }
  }
  elseif ($regex(pvlog,$1-,  /^[a-z]{3} ([a-z]{3} \d\d?) (\d\d?:\d\d:\d\d \d{4}):? (.+)$/i)) { 
    thmecho %w $asctime($ctime($regml(pvlog,1) $asctime(yyyy) $regml(pvlog,2)),dd.mm.yyyy $+ $chr(44) HH:nn:ss) $+ : $regml(pvlog,3)  
    inc %sbnc.messages. $+ $cid
  }
  else {
    thmecho %w $1-
    inc %sbnc.messages. $+ $cid
  }
}
alias sbnc.parsestatus {
  if ($1- == You are an admin.) {
    unset %sbnc.getstatus
    sbnc.getusers
  }
  elseif ($1- == You are not an admin.) {
    unset %sbnc.getstatus
  }
}
alias sbnc.parsesetting  {
  if (%sbnc.getsettings) {
    if ($1 == vhost) { did  -ra sbnc 16 $3 }
    elseif ($1 == server) {
      did  -ra sbnc 411 $gettok($3,1,58) 
      did  -ra sbnc 412 $gettok($3,2,58) 
    }
    elseif ($1 == automodes) { did  -ra sbnc 421 $iif($3- != Not Set,$right($3,-1)) }
    elseif ($1 == dropmodes) { did  -ra sbnc 431 $iif($3- != Not Set,$right($3,-1)) }
    elseif ($1 == realname) { did  -ra sbnc 10 $3- }
    elseif ($1 == away) { did  -ra sbnc 23 $iif($3- != Not Set,$3-) }
    elseif ($1 == awaynick) { did  -ra sbnc 25 $iif($3- != Not Set,$3-) }
    elseif ($1 == usequitasaway) { did $iif($3 == ON,-c,-u) sbnc 37  }

    .timerussettings -o 1 2 unset %sbnc.getsettings 
    haltdef
  }
}
alias sbnc.addbwho {
  if (%sbnc.bwhoprog) {
    if ($regex(bwho,$1-,/^(\@|!?)(\*?)(.+)\((.+)\)([^ ]*) \[(.*)\] \[Last Seen: (.+)\] :(.+)$/i) ) {
      var %s = $regml(bwho,6),%r = $regml(bwho,7),%l 
      did -a sbnc 28 0 + 0 0 0 $regml(bwho,1) $+ 	+ 0 0 0 $regml(bwho,3) $+ 	+ 0 0 0 $regml(bwho,4) $+ 	+ 0 0 0 $iif(%s,%s,unknown) $+ 	+ 0 0 0 $regml(bwho,8) $+ 	+ 0 0 0 $iif(%r,%r,unknown)
      haltdef
    }
  }
}
alias sbnc.unsetbwho {
  unset %sbnc.bwhoprog
  if ($dialog(sbnc)) { did -e $v1 28 }
}
alias sbnc.getprivlog {
  if (%sbnc.info. [ $+ [ $cid ] ]) {
    var %w = $specialcidwin(sBNCPrivateLog)
    if ($window(%w)) {
      clear %w
      window -a %w
    }
    else { window -k0 %w }
    thmecho %w Getting sBNC private log... please wait.
    echo %w 
    if (%sbnc.logqueries) { thmecho %w Outputting private logs to queries... }
    set %sbnc.messages. $+ $cid 0
    .timersbnc.privlog.timeout. $+ $cid 1 4 sbnc.privlog.timeout
    set %sbnc.getprivlog. $+ $cid 1
    .raw sbnc read
  }
  else { thmerror -a You're not connected to sbnc! }
}
alias sbnc.privlog.timeout {
  var %w = $specialcidwin(sBNCPrivateLog)
  unset %sbnc.getprivlog. $+ $cid
  if ($window(%w)) && ($line(%w,0) == 2) { thmecho %w Timed out / no new messages. }
}
menu @sbncprivatelog[*] {
  $style(2) — $shorten(15,$active) —:return
  -
  Refresh:sbnc.getprivlog
  $iif($line($active,0) < 4 || !%sbnc.info. [ $+ [ $cid ] ],$style(2)) Erase log {
    if ($ydialog(Really delete the sbnc log?)) {
      .raw sbnc erase
      close -@ $specialcidwin(sBNCPrivateLog)
    }
  }
  $iif($line($active,0) < 4,$style(2)) Save log... {
    var %f = $mkfullfn($$sfile($+(C:\sbnc_,$iif($me,$me $+ _),$asctime(dd-mm-yy),.log),Where do you want to save the log?,Save)),%x = 1,%i = $line($active,0)
    if (!$isfile(%f)) || ($ydialog(The file %f already exists. Overwrite?)) {
      .fopen -o log %f
      while (%x <= %i) {
        if ($strip($line($active,%x))) { .fwrite -n log $v1 }
        else { .fwrite log $crlf }
        inc %x
      }
      .fclose log
      idialog Log saved to %f $+ .
    }
  }
  -
  Close:close -@ $active
}
alias sbnc.nick { if ($istok(-sbnc -bouncer -bnc,$1-,32)) { return 1 } }
; ––––––––––––––––––––––––––––––––––––––––
; End of file
; ––––––––––––––––––––––––––––––––––––––––