rendered paste bodyon ^*:snotice:*remotely rehashing*: {
if (%rr_on == 1) {
inc %rehashed_servers
haltdef
}
}
on ^*:snotice:*Configuration loaded*: {
if (%rr_on == 1) {
inc %rehashed_servers
haltdef
}
}
on ^*:snotice:*Loading IRCd*: {
if (%rr_on == 1) {
haltdef
}
}
raw 382:*: {
if (%rr_on == 1) {
halt
}
}
raw 006:*: {
if (%rr_on == 1) {
if (%rr_start != 1) {
set %rr_start 1
set %rr_count 0
if ($rr_hnum > 0) {
hdel -w rr.c *
}
else {
hmake rr.c
}
}
var %i = 1, %server, %foundserver = 0, %str = $strip($2-)
if (services isin %str || webchat isin %str) {
halt
}
while (%i <= $len(%str)) {
if ($mid(%str,%i,3) == irc && %foundserver == 0) {
%foundserver = 1
inc %rr_count
}
if (%foundserver == 1) {
%server = %server $+ $mid(%str,%i,1)
}
if ($mid(%str,$calc(%i + 2),1) == $chr(40)) {
%foundserver = 0
}
inc %i
}
if ($len(%server) > 1) {
hadd rr.c %rr_count %server
}
halt
}
}
raw 007:*: {
if (%rr_on == 1) {
unset %rr_start
unset %rr_count
halt
}
}
alias rr_hnum {
var %i = 1, %j = 0
while (%i <= $hget(rr.c).size) {
if ($hget(rr.c,%i) == $null) {
break
}
inc %i
inc %j
}
return %j
}
alias rr_print {
var %i = 1
while (%i <= $rr_hnum) {
echo -a %i $+ . $hget(rr.c,%i)
inc %i
}
}
alias dorehash {
var %i = 1
while (%i <= $rr_hnum) {
rehash $hget(rr.c,%i)
inc %i
}
}
alias docheckup {
echo -a -- Rehashed %rehashed_servers server $+ $iif(%rehashed_servers == 1, $null, s) $+ .
unset %rehashed_servers
unset %rr_on
}
alias remoterehash {
set %rr_on 1
map
.timer 1 5 dorehash
.timer 1 10 docheckup
echo -a -- Rehashing...
}