All pastes #407259 Raw Edit

Miscellany

public text v1 · immutable
#407259 ·published 2007-03-22 23:55 UTC
rendered paste body
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...
}