on ^*: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... }