Auth-Update
- AUTH_UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- by Vliedel -- #vliedel @ QuakeNet
- version 1.1 (written and tested on mIRC 6.2)
- made for networks supporting WHOX
- What does this script do?
- - updates the auths of nicks and stores them in a hash table
- - if a channel is too big, /who nick1,nick2,nick3 etc is done untill the auths for the channel is updated
- - users who have a site with the auth in it will be saved without a /who
- ie
- "Vliedel" in "Vliedel.users.quakenet.org" will be treated as auth on the QuakeNet network
- - users who are not authed (auth 0) will be checked every x time to see if they are authed yet
- - script updates from largest to the smallest channel
- How to use this script?
- - config the options below
- - /load -rs auth_update.mrc to load the script
- - script starts on load or on connect
- - to get a nicks auth use
- $auth(nick) or $auth(nick,cid)
- - /authupdate.next <nick> [nick] [nick] ... can be used to get auths of those nicks as soon as possible
- please note that this will use a bit less efficient way to get the auths.
- You can use the following script to see when such a requested nick is updated
- on *
- SIGNAL:authupdate:{
- if ($2 == $null) { echo -a Requested
- $1 is not on a common channel }
- elseif ($2 == 0) { echo -a Requested
- $1 is not authed }
- else { echo -a Requested
- $1 is authed as $2 }
- }
- Note that this signal returns $2 == $null when someone isn't on a common channel.
- This may occur for example when someone parted a channel between the /who and the who reply.
- - /authupdate can be used to make the script update the auths without waiting for the timer to trigger it
- - You can use the following script to see when a nick is updated
- on *
- SIGNAL:authupdate.new:{
- if ($2 == 0) { echo -a $1 is not authed }
- else { echo -a $1 is authed as $2 }
- }
- Why is this script good?
- - sending /who chan for every channel is not needed and goes slow (lag)
- - sending /who chan on join may cause Excess Flood or Max sendQ exceeded
- - sending /who chan1,chan2,chan3 can be much faster, but only if there are not too many results (Max sendQ exceeded)
- - unauthed users can auth without you knowing, so you need to check if they're authed every so many time.
- SETTINGS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias -l max.who {
; maximum number of replies in a WHO, too high may cause 'Max sendQ exceeded' disconnection
; too low may take the script a long time to update the auths, 1000 should be fine for most situations
return 1000
}
alias -l len.who {
; maximum length of the /who <string>, too long may cause the server to ignore the command
; too low may slow things down, 400 should be fine in most cases
return 400
}
alias -l delay.who {
; N seconds after your first join, the script starts to update the auths
return 10
}
alias -l repeat.who {
; wait N seconds after doing /who to do the next check and /who
return 20
}
alias -l minnicks.who {
; minimum nr of nicks with unknown auth in a channel to do /who #channel rather then /who nick,nick,
return 3
}
alias -l minratio.who {
; minimum ratio of (nicks with unknown auth) / (total nicks) in a channel to do /who #channel rather then /who nick,nick,
return 0.04
}
alias -l queue.repeat.who {
; number of seconds to do the next /who to check if someone who wasn't authed is now authed
return 600
}
alias -l next.wait {
; wait N seconds to do the next /who check triggered by authupdate.next after the last /who
return 10
}
alias -l used.network {
; The networks the script is supposed to work on (case sensitive).
; NOTE that the script ONLY works on networks supporting WHOX (ircu 2.10.* should work)
; $1 is the network
return $istokcs(QuakeNet UnderNet GameSurge HanIRC NetGamers OGameNet,$1,32)
}
alias -l auth.site {
; For every network a check to see if a user has a site where his authname is in
; $1 is the network, $2 is the site
if ($1 === QuakeNet) { return $iif(*.users.quakenet.org iswm $2,$true) }
elseif ($1 === UnderNet) { return $iif(*.users.undernet.org iswm $2,$true) }
elseif ($1 === GameSurge) { return $iif(*.*.GameSurge iswm $2,$true) }
elseif ($1 === HanIRC) { return $iif(*.users.HanIRC.org iswm $2,$true) }
elseif ($1 === NetGamers) { return $iif(*.users.netgamers.org iswm $2,$true) }
elseif ($1 === OGameNet) { return $iif(*.user.OGameNet iswm $2,$true) }
}
alias -l auth.from.site {
; For every network the method to return the auth from the site
; $1 is the network, $2 is the site
if ($1 === QuakeNet) { return $gettok($2,1,46) }
elseif ($1 === UnderNet) { return $gettok($2,1,46) }
elseif ($1 === GameSurge) { return $gettok($2,1,46) }
elseif ($1 === HanIRC) { return $gettok($2,1,46) }
elseif ($1 === NetGamers) { return $gettok($2,1,46) }
elseif ($1 === OGameNet) { return $gettok($2,1,46) }
}
- ALIAS AUTH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias auth {
if (!$isid) { $iif($show,.auth,auth) $1- | return }
if ($1 == $null) || (($2 !== $null) && ((!$scid($2)) || (!$2))) { return }
return $hget(auths. $+ $iif($2 !== $null,$2,$cid),$1)
}
- ALIAS AUTHUPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias authupdate { echo -a Auth update: $auth_update.update }
- ALIAS AUTHUPDATE.NEXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias authupdate.next {
var %i = $0
while (%i) {
var %n = $gettok($1-,%i,32)
if (!$comchan(%n,1)) { .signal authupdate %n }
else { auth.n.add %n }
dec %i
}
if (!$timer($cid $+ .auth_update.update)) { auth_update.update n }
else {
var %d = $timer($cid $+ .auth_update.update).delay , %l = $timer($cid $+ .auth_update.update).secs
.timer $+ $cid $+ .auth_update.update 1 $iif($calc(%d - %l) < $next.wait,$calc($v2 - $v1),0) auth_update.update n
}
}
- LOAD EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:LOAD:{ scon -at1 auth_load }
- ALIAS AUTH_LOAD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias -l auth_load {
.timer $+ $cid $+ .auth_update.update 1 $delay.who auth_update.update
if ($hget(auths. $+ $cid)) { hfree $v1 }
if ($hget(auths.l. $+ $cid)) { hfree $v1 }
if ($hget(auths.q. $+ $cid)) { hfree $v1 }
if ($hget(auths.n. $+ $cid)) { hfree $v1 }
if ($hget(auths.u. $+ $cid)) { hfree $v1 }
hmake auths. $+ $cid 200
hmake auths.l. $+ $cid 200
hmake auths.q. $+ $cid 200
hmake auths.n. $+ $cid 100
var %i = $comchan($me,0)
while (%i) {
var %chan = $comchan($me,%i)
var %j = $nick(%chan,0)
while (%j) {
auth.l.add.wid $chan(%chan).wid $nick(%chan,%j)
dec %j
}
dec %i
}
}
- ALIAS AUTH_UPDATE.UPDATE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias -l auth_update.update {
var %who
if (!$hget(auths.u. $+ $cid)) {
.timer $+ $cid $+ .auth_update.update off
hmake auths.u. $+ $cid 200
var %who = $auth_update.who
if (%who) {
hadd auths.u. $+ $cid -mask %who $+ ,,, $+ 273
.timer $+ $cid $+ .auth_update.timeout 1 $calc($repeat.who * 2) auth_update.timeout
.quote WHO $hget(auths.u. $+ $cid,-mask) % $+ nat,273
}
else {
hfree auths.u. $+ $cid
.timer $+ $cid $+ .auth_update.update 1 $$repeat.who auth_update.update
}
}
if (%who) { return updating }
elseif ($hget(auths.u. $+ $cid)) { return already in progress }
else { return nothing to update }
}
- ALIAS AUTH_UPDATE.TIMEOUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias -l auth_update.timeout {
hfree auths.u. $+ $cid
auth_update.update
}
- ALIAS AUTH_UPDATE.SORT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- sorts channels by number of nicks in channel
- <number of nicks>.<channel number>
- returns 127.1 23.2 <= means 127 nicks on comchan 1
alias -l auth_update.sort {
var %i = $comchan($me,0) , %chans
while (%i) {
var %chans = %chans $nick($comchan($me,%i),0) $+ . $+ %i
dec %i
}
return $sorttok(%chans,32,n)
}
- ALIAS AUTH_UPDATE.WHO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $auth_update.who(N,L)
- returns #chan,#chan,nick,nick
alias -l auth_update.who {
var %t = auths.u. $+ $cid , %t.l = auths.l. $+ $cid , %t.q = auths.q. $+ $cid , %t.n = auths.n. $+ $cid
var %n.max = $max.who , %l.max = $len.who , %n.min = $minnicks.who , %ratio = $minratio.who
var %len , %n.nr , %chans , %nicks , %chans.go
if $hget(auths.n.temp) { hfree auths.n.temp }
hmake auths.n.temp
var %n = $hget(%t.n,-firstnick)
while (%n) {
inc %len $calc($len(%n) + 1)
inc %n.nr
if (%n.nr > %n.max) || (%len > %l.max) { dec %n.nr | dec %len $calc($len(%n) + 1) | break }
hadd auths.n.temp %n 1
hadd %t %n 1
var %nicks = $addtok(%nicks,%n,44) , %n = $gettok($hget(%t.n,%n),2,32)
}
var %sorted = $auth_update.sort , %i = $numtok(%sorted,32) , %time = $calc($ctime - $queue.repeat.who)
while (%i) {
var %comchan = $gettok($gettok(%sorted,%i,32),2,46) , %chan = $comchan($me,%comchan) , %id = $chan(%chan).wid $+ .
var %n.c = $nick(%chan,0) , %left , %go
if (%n.c > %n.max) { break }
if $hget(auths.temp) { hfree auths.temp }
hmake auths.temp
var %n = $hget(%t.n,%id $+ -firstnick)
while (%n) {
if (!$hget(%t,%n)) || ($hget(auths.n.temp,%n)) { hadd auths.temp %n 1 | inc %left }
if (((%left >= %n.min) && ($calc(%left / %n.c) >= %ratio)) || (%left == %n.c)) { var %go = 1 | break }
var %n = $gettok($hget(%t.n,%id $+ %n),2,32)
}
var %n = $hget(%t.l,%id $+ -firstnick)
while (%n) {
if (!$hget(%t,%n)) && (!$hget(auths.temp,%n)) { inc %left }
if (((%left >= %n.min) && ($calc(%left / %n.c) >= %ratio)) || (%left == %n.c)) { var %go = 1 | break }
var %n = $gettok($hget(%t.l,%id $+ %n),2,32)
}
var %n = $hget(%t.q,%id $+ -firstnick)
while (%n) {
tokenize 32 $hget(%t.q,%id $+ %n)
if ($1 > %time) { break }
if (!$hget(%t,%n)) && (!$hget(auths.temp,%n)) { inc %left }
if (((%left >= %n.min) && ($calc(%left / %n.c) >= %ratio)) || (%left == %n.c)) { var %go = 1 | break }
var %n = $3
}
if (!%go) { dec %i | continue }
var %j = %n.c , %n.tmp = %n.nr , %l.tmp = %len , %chans.go = %chans.go %comchan
inc %l.tmp $calc($len(%chan) + 1)
while (%j) {
var %n = $nick(%chan,%j)
if (!$hget(%t,%n)) { inc %n.tmp }
if ($hget(auths.n.temp,%n)) { dec %l.tmp $calc($len(%n) + 1) }
dec %j
}
if (%l.tmp > %l.max) || (%n.tmp > %n.max) { dec %i | continue }
var %j = $nick(%chan,0)
while (%j) {
var %n = $nick(%chan,%j)
hadd %t %n 1
hdel auths.n.temp %n
var %nicks = $remtok(%nicks,%n,1,44)
dec %j
}
var %len = %l.tmp , %n.nr = %n.tmp , %chans = $addtok(%chans,%chan,44)
dec %i
}
var %i = $comchan($me,0)
while (%i) {
var %chan = $comchan($me,%i)
if (($nick(%chan,0) > %n.max) || (!$istok(%chans.go,%i,32))) {
var %id = $chan(%chan).wid $+ . , %n = $hget(%t.l,%id $+ -firstnick)
while (%n) {
if (!$hget(%t,%n)) {
inc %len $calc($len(%n) + 1)
inc %n.nr
if (%n.nr > %n.max) || (%len > %l.max) { break }
hadd %t %n 1
var %nicks = $addtok(%nicks,%n,44)
}
var %n = $gettok($hget(%t.l,%id $+ %n),2,32)
}
if (%n.nr > %n.max) || (%len > %l.max) { break }
var %n = $hget(%t.q,%id $+ -firstnick)
while (%n) {
tokenize 32 $hget(%t.q,%id $+ %n)
if ($1 > %time) { break }
if (!$hget(%t,%n)) {
inc %len $calc($len(%n) + 1)
inc %n.nr
if (%n.nr > %n.max) || (%len > %l.max) { break }
hadd %t %n 1
var %nicks = $addtok(%nicks,%n,44)
}
var %n = $3
}
}
if (%n.nr > %n.max) || (%len > %l.max) { break }
dec %i
}
if $hget(auths.temp) { hfree auths.temp }
if $hget(auths.n.temp) { hfree auths.n.temp }
return $addtok(%chans,%nicks,44)
}
- RAW 354 SPECIAL WHO REPLY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 354 <you> <nr> <nick> <auth>
- 354 Vliedel 273 L 0
RAW 354:& 273 & &:{
if ($comchan($3,1)) { auth_update.nick $3 $4 }
elseif ($hget(auths.n. $+ $cid,$3)) { auth.n.rem $3 | .signal authupdate $3 }
haltdef
}
- RAW 315 WHO END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 315 <you> <requested>
- End of /who list.
- 315 Vliedel #vliedel,Rutix,fishbot
- End of /WHO list.
RAW 315:& & end of /WHO list.: {
if ($hget(auths.u. $+ $cid,-mask) == $2) {
hfree auths.u. $+ $cid
.timer $+ $cid $+ .auth_update.timeout off
.timer $+ $cid $+ .auth_update.update 1 $iif($hget(auths.n. $+ $cid,1).item,$next.wait,$repeat.who) auth_update.update
haltdef
}
}
- ALIAS AUTH_UPDATE.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick $2 = auth
alias -l auth_update.nick {
if ($hget(auths. $+ $cid,$1) != $2) {
.signal authupdate.new $1 $2
auth.add $1 $2
}
auth.l.rem $1
if ($2 == 0) { auth.q.add $1 }
else { auth.q.rem $1 }
if ($hget(auths.n. $+ $cid,$1)) { auth.n.rem $1 | .signal authupdate $1 $2 }
}
- JOIN EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:JOIN:#:{
if ($nick == $me) && ($used.network($network)) {
if (!$hget(auths. $+ $cid)) { hmake auths. $+ $cid 200 }
if (!$hget(auths.l. $+ $cid)) { hmake auths.l. $+ $cid 200 }
if (!$hget(auths.q. $+ $cid)) { hmake auths.q. $+ $cid 200 }
if (!$hget(auths.n. $+ $cid)) { hmake auths.n. $+ $cid 100 }
if (!$timer($cid $+ .auth_update.update)) { .timer $+ $cid $+ .auth_update.update 1 $delay.who auth_update.update }
return
}
if ($auth.site($network,$site)) { auth_update.nick $nick $auth.from.site($network,$site) | return }
if ($hget(auths. $+ $cid,$nick) == $null) { auth.l.add.wid $chan($chan).wid $nick }
elseif ($hget(auths. $+ $cid,$nick) == 0) {
auth.q.add.wid $chan($chan).wid $nick
if (!$comchan($nick,2)) { auth.q.add.main $nick }
}
if ($hget(auths.n. $+ $cid,$nick)) { auth.n.add.wid $chan($2).wid $nick }
}
- RAW 366 - END OF NAMES LIST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 366 Vliedel #vliedel
- End of /NAMES list.
RAW 366:& & end of /names list.:{
var %i = $nick($2,0) , %t = auths. $+ $cid , %t2 = auths.n. $+ $cid , %w = $chan($2).wid
while (%i) {
var %n = $nick($2,%i) , %a = $hget(%t,%n)
if (%a == $null) { auth.l.add.wid %w %n }
elseif (%a == 0) {
auth.q.add.wid %w %n
if (!$comchan(%n,2)) { auth.q.add.main %n }
}
if ($hget(%t2,%n)) { auth.n.add.wid %w %n }
dec %i
}
}
- PART EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:PART:#:{
if ($nick == $me) {
auth.rem.chan $chan
auth.l.rem.chan.all $chan
auth.q.rem.chan.all $chan
auth.n.rem.chan.all $chan
}
else {
auth.l.rem.wid $chan($chan).wid $nick
auth.q.rem.wid $chan($chan).wid $nick
auth.n.rem.wid $chan($chan).wid $nick
if (!$comchan($nick,2)) {
auth.rem $nick
auth.q.rem.main $nick
auth.n.rem.main $nick
}
elseif ($auth.site($network,$site)) { auth_update.nick $nick $auth.from.site($network,$site) }
}
}
- KICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:KICK:#:{
if ($knick == $me) {
auth.rem.chan $chan
auth.l.rem.chan.all $chan
auth.q.rem.chan.all $chan
auth.n.rem.chan.all $chan
}
else {
auth.l.rem.wid $chan($chan).wid $knick
auth.q.rem.wid $chan($chan).wid $knick
auth.n.rem.wid $chan($chan).wid $knick
if (!$comchan($knick,2)) {
auth.rem $knick
auth.q.rem.main $knick
auth.n.rem.main $knick
}
if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) }
}
}
- QUIT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:QUIT:{
auth.rem $nick
auth.l.rem $nick
auth.q.rem $nick
auth.n.rem $nick
}
- NICK EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:NICK:{
auth.nick $nick $newnick
auth.l.nick $nick $newnick
auth.q.nick $nick $newnick
auth.n.nick $nick $newnick
if ($auth.site($network,$site)) { auth_update.nick $newnick $auth.from.site($network,$site) }
}
- IAL-UPDATING EVENTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:TEXT:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
on *:ACTION:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
on *:NOTICE:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
on *:RAWMODE:#:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
on *:TOPIC:#:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
on *:INVITE:#:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
CTCP *:*:*:{ if ($auth.site($network,$site)) && ($comchan($nick,1)) { auth_update.nick $nick $auth.from.site($network,$site) } }
RAW 352:& & & & & & & & *: { if ($auth.site($network,$4)) && ($comchan($6,1)) { auth_update.nick $6 $auth.from.site($network,$4) } }
- DISCONNECT EVENT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
on *:DISCONNECT:{
if ($hget(auths.u $+ $cid)) { hfree $v1 }
if ($hget(auths. $+ $cid)) { hfree $v1 }
if ($hget(auths.q. $+ $cid)) { hfree $v1 }
if ($hget(auths.l. $+ $cid)) { hfree $v1 }
if ($hget(auths.n. $+ $cid)) { hfree $v1 }
}
- 200
- auths.cid nick --> auth
- 200
- auths.l.cid chanwid.nick --> lnick rnick
- auths.l.cid chanwid.-firstnick --> first_nick_in_list
- auths.l.cid chanwid.-lastnick --> last_nick_in_list
- 200
- auths.q.cid chanwid.nick --> ctime lnick rnick
- auths.q.cid chanwid.-firstnick --> first_nick_in_queue
- auths.q.cid chanwid.-lastnick --> last_nick_in_queue
- auths.q.cid nick --> ctime
- 100
- auths.n.cid chanwid.nick --> lnick rnick
- auths.n.cid chanwid.-firstnick --> first_nick_in_list
- auths.n.cid chanwid.-lastnick --> last_nick_in_list
- auths.n.cid nick --> lnick rnick
- auths.n.cid -firstnick --> first_nick_in_list
- auths.n.cid -lastnick --> last_nick_in_list
- ---------------------------------------------------------------------------------------------
- --------------------------------------- AUTHS - TABLE ---------------------------------------
- ---------------------------------------------------------------------------------------------
- ALIAS AUTH.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick $2 = auth
alias -l auth.add {
if ($hget(auths. $+ $cid)) { hadd $v1 $1 $2 }
}
- ALIAS AUTH.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.rem {
if ($hget(auths. $+ $cid)) { hdel $v1 $1 }
}
- ALIAS AUTH.REM.CHAN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = chan
alias -l auth.rem.chan {
if ($hget(auths. $+ $cid) == $null) { return }
var %i = $nick($1,0) , %t = $v1
while (%i) {
if (!$comchan($nick($1,%i),2)) { hdel %t $nick($1,%i) }
dec %i
}
}
- ALIAS AUTH.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick $2 = newnick
alias -l auth.nick {
var %t = auths. $+ $cid
if ($hget(%t,$1) !== $null) { hdel %t $1 | hadd %t $2 $v1 }
}
- ----------------------------------------------------------------------------------------------------
- --------------------------------------- AUTHS - LEFT - TABLE ---------------------------------------
- ----------------------------------------------------------------------------------------------------
- ALIAS AUTH.L.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = wid $2 = nick
alias -l auth.l.add.wid {
if ($hget(auths.l. $+ $cid) == $null) { return }
var %t = $v1 , %id = $1 $+ . , %n.last = $hget(%t,%id $+ -lastnick)
if ($hget(%t,%id $+ $2)) { return }
if (%n.last) {
hadd %t %id $+ $2 %n.last 0
hadd %t %id $+ %n.last $gettok($hget(%t,%id $+ %n.last),1,32) $2
}
else {
hadd %t %id $+ $2 0 0
hadd %t %id $+ -firstnick $2
}
hadd %t %id $+ -lastnick $2
}
- ALIAS AUTH.L.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.l.rem {
if (!$hget(auths.l. $+ $cid)) { return }
var %i = $comchan($1,0)
while (%i) {
auth.l.rem.wid $chan($comchan($1,%i)).wid $1
dec %i
}
}
- ALIAS AUTH.L.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = wid $2 = nick
alias -l auth.l.rem.wid {
if ($hget(auths.l. $+ $cid) == $null) { return }
var %t = $v1 , %id = $1 $+ . , %val = $hget(%t,%id $+ $2)
if (!%val) { return }
var %n.l = $gettok(%val,1,32) , %n.r = $gettok(%val,2,32)
hdel %t %id $+ $2
if (%n.l == 0) && (%n.r == 0) { hdel %t %id $+ -lastnick | hdel %t %id $+ -firstnick | return }
if (%n.l !== 0) { hadd %t %id $+ %n.l $gettok($hget(%t,%id $+ %n.l),1,32) %n.r }
else { hadd %t %id $+ -firstnick %n.r }
if (%n.r !== 0) { hadd %t %id $+ %n.r %n.l $gettok($hget(%t,%id $+ %n.r),2,32) }
else { hadd %t %id $+ -lastnick %n.l }
}
- ALIAS AUTH.L.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = chan
alias -l auth.l.rem.chan.all {
if ($hget(auths.l. $+ $cid)) { hdel -w $v1 $chan($1).wid $+ .* }
}
- ALIAS AUTH.L.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick $2 = newnick
alias -l auth.l.nick {
if ($1 == $2) { return }
if ($hget(auths.l. $+ $cid) == $null) { return }
var %t = $v1 , %i = $comchan($2,0)
while (%i) {
var %id = $chan($comchan($2,%i)).wid $+ . , %val = $hget(%t,%id $+ $1)
if (%val) {
hdel %t %id $+ $1
hadd %t %id $+ $2 %val
var %n.l = $gettok(%val,1,32) , %n.r = $gettok(%val,2,32)
if (%n.l !== 0) { hadd %t %id $+ %n.l $gettok($hget(%t,%id $+ %n.l),1,32) $2 }
else { hadd %t %id $+ -firstnick $2 }
if (%n.r !== 0) { hadd %t %id $+ %n.r $2 $gettok($hget(%t,%id $+ %n.r),2,32) }
else { hadd %t %id $+ -lastnick $2 }
}
dec %i
}
}
- -----------------------------------------------------------------------------------------------------
- --------------------------------------- AUTHS - QUEUE - TABLE ---------------------------------------
- -----------------------------------------------------------------------------------------------------
- ALIAS AUTH.Q.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.q.add {
if (!$hget(auths.q. $+ $cid)) { return }
auth.q.add.main $1
var %i = $comchan($1,0)
while (%i) {
auth.q.add.wid $chan($comchan($1,%i)).wid $1
dec %i
}
}
- ALIAS AUTH.Q.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = wid $2 = nick
alias -l auth.q.add.wid {
if ($hget(auths.q. $+ $cid) == $null) { return }
var %t = $v1 , %id = $1 $+ . , %ctime = $iif($hget(%t,$2) == $null,$ctime,$v1)
auth.q.rem.wid $1 $2
var %n.last = $hget(%t,%id $+ -lastnick)
if (!%n.last) {
hadd %t %id $+ $2 %ctime 0 0
hadd %t %id $+ -firstnick $2
hadd %t %id $+ -lastnick $2
return
}
if (%ctime >= $hget(%t,%n.last)) {
hadd %t %id $+ $2 %ctime %n.last 0
hadd %t %id $+ %n.last $gettok($hget(%t,%id $+ %n.last),1-2,32) $2
hadd %t %id $+ -lastnick $2
return
}
var %n = $hget(%t,%id $+ -firstnick) , %nick = $2
while (%n) {
tokenize 32 $hget(%t,%id $+ %n)
if (%ctime <= $1) {
hadd %t %id $+ %n $1 %nick $3
if ($2 == 0) {
hadd %t %id $+ %nick %ctime 0 %n
hadd %t %id $+ -firstnick %nick
}
else {
hadd %t %id $+ %nick %ctime $2 %n
hadd %t %id $+ $2 $gettok($hget(%t,%id $+ $2),1-2,32) %nick
}
break
}
var %n = $3
}
}
- ALIAS AUTH.Q.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.q.add.main {
if ($hget(auths.q. $+ $cid)) { hadd $v1 $1 $ctime }
}
- ALIAS AUTH.Q.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.q.rem {
if (!$hget(auths.q. $+ $cid)) { return }
var %i = $comchan($1,0)
while (%i) {
auth.q.rem.wid $chan($comchan($1,%i)).wid $1
dec %i
}
auth.q.rem.main $1
}
- ALIAS AUTH.Q.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = wid $2 = nick
alias -l auth.q.rem.wid {
if ($hget(auths.q. $+ $cid) == $null) { return }
var %t = $v1 , %id = $1 $+ . , %val = $hget(%t,%id $+ $2)
if (!%val) { return }
var %n.l = $gettok(%val,2,32) , %n.r = $gettok(%val,3,32)
hdel %t %id $+ $2
if (%n.l == 0) && (%n.r == 0) { hdel %t %id $+ -lastnick | hdel %t %id $+ -firstnick | return }
if (%n.l !== 0) { hadd %t %id $+ %n.l $gettok($hget(%t,%id $+ %n.l),1-2,32) %n.r }
else { hadd %t %id $+ -firstnick %n.r }
if (%n.r !== 0) { hadd %t %id $+ %n.r $gettok($hget(%t,%id $+ %n.r),1,32) %n.l $gettok($hget(%t,%id $+ %n.r),3,32) }
else { hadd %t %id $+ -lastnick %n.l }
}
- ALIAS AUTH.Q.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.q.rem.main {
if ($hget(auths.q. $+ $cid)) { hdel $v1 $1 }
}
- ALIAS AUTH.Q.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = chan
alias -l auth.q.rem.chan.all {
var %t =
if ($hget(auths.q. $+ $cid) == $null) { return }
var %t = $v1 , %i = $nick($1,0)
hdel -w %t $chan($1).wid $+ .*
while (%i) {
if (!$comchan($nick($1,%i),2)) { hdel %t $nick($1,%i) }
dec %i
}
}
- ALIAS AUTH.Q.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick $2 = newnick
alias -l auth.q.nick {
if ($1 == $2) { return }
if ($hget(auths.q. $+ $cid) == $null) { return }
var %t = $v1 , %i = $comchan($2,0)
while (%i) {
var %id = $chan($comchan($2,%i)).wid $+ . , %val = $hget(%t,%id $+ $1)
if (%val) {
hdel %t %id $+ $1
hadd %t %id $+ $2 %val
var %n.l = $gettok(%val,2,32) , %n.r = $gettok(%val,3,32)
if (%n.l !== 0) { hadd %t %id $+ %n.l $gettok($hget(%t,%id $+ %n.l),1-2,32) $2 }
else { hadd %t %id $+ -firstnick $2 }
if (%n.r !== 0) { hadd %t %id $+ %n.r $gettok($hget(%t,%id $+ %n.r),1,32) $2 $gettok($hget(%t,%id $+ %n.r),3,32) }
else { hadd %t %id $+ -lastnick $2 }
}
dec %i
}
if ($hget(%t,$1) !== $null) { hdel %t $1 | hadd %t $2 $v1 }
}
- ----------------------------------------------------------------------------------------------------
- --------------------------------------- AUTHS - NEXT - TABLE ---------------------------------------
- ----------------------------------------------------------------------------------------------------
- ALIAS AUTH.N.ADD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.n.add {
if (!$hget(auths.n. $+ $cid)) { return }
auth.n.add.main $1
var %i = $comchan($1,0)
while (%i) {
auth.n.add.wid $chan($comchan($1,%i)).wid $1
dec %i
}
}
- ALIAS AUTH.N.ADD.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = wid $2 = nick
alias -l auth.n.add.wid {
if ($hget(auths.n. $+ $cid) == $null) { return }
var %t = $v1 , %id = $1 $+ . , %n.last = $hget(%t,%id $+ -lastnick)
if ($hget(%t,%id $+ $2)) { return }
if (%n.last) {
hadd %t %id $+ $2 %n.last 0
hadd %t %id $+ %n.last $gettok($hget(%t,%id $+ %n.last),1,32) $2
}
else {
hadd %t %id $+ $2 0 0
hadd %t %id $+ -firstnick $2
}
hadd %t %id $+ -lastnick $2
}
- ALIAS AUTH.N.ADD.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.n.add.main {
if ($hget(auths.n. $+ $cid) == $null) { return }
var %t = $v1 , %n.last = $hget(%t,-lastnick)
if ($hget(%t,$1)) { return }
if (%n.last) {
hadd %t $1 %n.last 0
hadd %t %n.last $gettok($hget(%t,%n.last),1,32) $1
}
else {
hadd %t $1 0 0
hadd %t -firstnick $1
}
hadd %t -lastnick $1
}
- ALIAS AUTH.N.REM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.n.rem {
if (!$hget(auths.n. $+ $cid)) { return }
var %i = $comchan($1,0)
while (%i) {
auth.n.rem.wid $chan($comchan($1,%i)).wid $1
dec %i
}
auth.n.rem.main $1
}
- ALIAS AUTH.N.REM.WID ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = wid $2 = nick
alias -l auth.n.rem.wid {
if ($hget(auths.n. $+ $cid) == $null) { return }
var %t = $v1 , %id = $1 $+ . , %val = $hget(%t,%id $+ $2)
if (!%val) { return }
var %n.l = $gettok(%val,1,32) , %n.r = $gettok(%val,2,32)
hdel %t %id $+ $2
if (%n.l == 0) && (%n.r == 0) { hdel %t %id $+ -lastnick | hdel %t %id $+ -firstnick | return }
if (%n.l !== 0) { hadd %t %id $+ %n.l $gettok($hget(%t,%id $+ %n.l),1,32) %n.r }
else { hadd %t %id $+ -firstnick %n.r }
if (%n.r !== 0) { hadd %t %id $+ %n.r %n.l $gettok($hget(%t,%id $+ %n.r),2,32) }
else { hadd %t %id $+ -lastnick %n.l }
}
- ALIAS AUTH.N.REM.MAIN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick
alias -l auth.n.rem.main {
if ($hget(auths.n. $+ $cid) == $null) { return }
var %t = $v1 , %val = $hget(%t,$1)
if (!%val) { return }
var %n.l = $gettok(%val,1,32) , %n.r = $gettok(%val,2,32)
hdel %t $1
if (%n.l == 0) && (%n.r == 0) { hdel %t -lastnick | hdel %t -firstnick | return }
if (%n.l !== 0) { hadd %t %n.l $gettok($hget(%t,%n.l),1,32) %n.r }
else { hadd %t -firstnick %n.r }
if (%n.r !== 0) { hadd %t %n.r %n.l $gettok($hget(%t,%n.r),2,32) }
else { hadd %t -lastnick %n.l }
}
- ALIAS AUTH.N.REM.CHAN.ALL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = chan
alias -l auth.n.rem.chan.all {
if ($hget(auths.n. $+ $cid) == $null) { return }
var %t = $v1 , %i = $nick($1,0)
hdel -w %t $chan($1).wid $+ .*
while (%i) {
if (!$comchan($nick($1,%i),2)) { auth.n.rem.main $nick($1,%i) }
dec %i
}
}
- ALIAS AUTH.N.NICK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- $1 = nick $2 = newnick
alias -l auth.n.nick {
if ($1 == $2) { return }
if ($hget(auths.n. $+ $cid) == $null) { return }
var %t = $v1 , %i = $comchan($2,0)
while (%i) {
var %id = $chan($comchan($2,%i)).wid $+ . , %val = $hget(%t,%id $+ $1)
if (%val) {
hdel %t %id $+ $1
hadd %t %id $+ $2 %val
var %n.l = $gettok(%val,1,32) , %n.r = $gettok(%val,2,32)
if (%n.l !== 0) { hadd %t %id $+ %n.l $gettok($hget(%t,%id $+ %n.l),1,32) $2 }
else { hadd %t %id $+ -firstnick $2 }
if (%n.r !== 0) { hadd %t %id $+ %n.r $2 $gettok($hget(%t,%id $+ %n.r),2,32) }
else { hadd %t %id $+ -lastnick $2 }
}
dec %i
}
var %val = $hget(%t,$1)
if (%val) {
hdel %t $1
hadd %t $2 %val
var %n.l = $gettok(%val,1,32) , %n.r = $gettok(%val,2,32)
if (%n.l !== 0) { hadd %t %n.l $gettok($hget(%t,%n.l),1,32) $2 }
else { hadd %t -firstnick $2 }
if (%n.r !== 0) { hadd %t %n.r $2 $gettok($hget(%t,%n.r),2,32) }
else { hadd %t -lastnick $2 }
}
}