;DNS IP - Port
;By Neo
;Copyright 2004
;This Snippet Will Check All Address's That You Will Set! 
;Only The Ports Between 0 And 255 Will Work ( 1.....254 ) 
;Syntax: /ipscan IP FINALPORT 
;Example: /ipscan 127.0.0.1 80
;To Check Ip Use: $ipcheck(iphere), Returns 1 If It's Valid And 0 If The Ip It's Invalid


alias ipcheck {
  if ($numtok($1,46) == 4) {
    var %ip.nu = 1
    while ($gettok($1,%x,46)) {
      if ($ifmatch !isnum 0-255) { return 0 | break }
      else inc %ip.nu
    }
    return 1
  }
}

alias ipscan {
  if ($1 != $null) {
    if ($ipcheck($1) == 1) {
      var %p.check = 1
      while (%p.check <= $iif($2 != $null,$2,254)) {
        sockopen p.scan $+ %p.check $+($deltok($1,4,46),.,%p.check) 1
        inc %p.check
      }
    }
  }
}
alias r.scan { .dns $sock($sockname).ip }
on *:sockopen:p.scan*:{
  set %r.scan $+ $sockname $sock($sockname).ip > $right($sock($sockname).wsmsg,$calc($len($sock($sockname).wmsg) - 8))
  $iif(refused isin $right($sock($sockname).wsmsg,$calc($len($sock($sockname).wmsg) - 8)),r.scan)
  if ($sock($sockname).status == active) {
    echo -a $sock($sockname).ip
    .dns $sock($sockname).ip
    sockclose $sockname
  }
}
on *:sockclose:p.scan*:{
  echo -a $sock($sockname).ip
  .dns $sock($sockname).ip
}
on *:dns:{
  var %n = $dns(0)
  echo -a $chr(91) $+ 4DNS Data $+ $chr(93) 4DNS12: $dns(%n) $iif($dns(%n).nick != $null,nick: $dns(%n).nick,) addr: $dns(%n).addr ip: $dns(%n).ip
  halt
}
else {
  echo 4 Found %n addresses
  echo 4 4DNS12:  $dns(%n) nick: $dns(%n).nick addr: $dns(%n).addr 4IP12:  $dns(%n).ip
}

; ================================== ;

alias c.start {
  if (!$hget(censor)) {
    hmake censor
    if ($isfile(censor.hsh)) hload censor censor.hsh
    if (!$hfind(censor,settings.*,0,w)) {
      hadd censor settings.strict $true
      hadd censor settings.defreason Censored
    }
    return Successful start
  }
}
alias c.stop {
  if ($hget(censor)) {
    hsave censor censor.hsh
    hfree censor 
    return Successful stop
  }
}
alias c.add {
  if ($hget(censor)) {
    hadd censor $+(word.,$1) $iif($2-,$2-,Censored)
    return Added $1 to the censor list $iif($2-,Reason: $2-)
  }
}
alias c.del {
  if ($hget(censor)) {
  }
}
