# rWhois - kano addon -- ph0rg on efnet # if you know of another whois server please let me know. #2/10/99 10:58AM #0034 added .ca set mywhois(version) "0x0034" addname "rWhois\[ka\] $mywhois(version)" addecho "[kano] rWhois\[ka\] rev:$mywhois(version) /rw " addecho "[kano] rWhois\[ka\] auth\[ph0rg\] thanx2: kano. conio. twk-b" ac check @shortreply @1 reply in short format \[rWhois\] kaddhelp rw "Internet domain name and network number directory service. Looks up the owner of the domain or ip, Currently supports NET, COM, EDU, ORG, MIL, GOV, and IP's. Additional command line options are needed to lookup RIPE or APNIC IP's" "/rw , /rw -r|-p " "rWhois\[ka\]" kaddhelp realwhois "Internet domain name and network number directory service. Looks up the owner of the domain or ip, Currently supports NET, COM, EDU, ORG, MIL, GOV, and IP's. Additional command line options are needed to lookup RIPE or APNIC IP's" "/rw , /rw -r|-p " "rWhois\[ka\]" alias rw {/realwhois [arg];complete} alias rwhois {/realwhois [arg];complete} menu query "&rWhois " { /rw [raw_args]} menu chat "&rWhois" { /rw [args] } menu users "&Whois->&rWhois" { foreach i [args] { /rw $i } } proc crwhois {} {if {[get_cookie shortreply 1]} {close $sock;catch {unset domain($sock)};unset realwhois;return 1} else {return 0}} proc rwecho {text} {echo "[kano] $text" chat .Real_Whois.;return} proc dsplit {text levels} {set host $text; set host [split $host .]; set cnt 0; foreach i $host {incr cnt}; set host [join [lrange $host [expr $cnt - $levels] end] .]; return $host} alias realwhois { set host [lindex [args] end] if {$host == ""} {echo "[kano] Usage: /[event] ";complete;return} if ![string match *.* $host] {set host [lrange [split [uhost $host] @] end end]; if {$host == ""} {incr do_who; /who $host; set host [lrange [split [uhost $host] @] end end]} } set split [split $host .]; set top [lindex $split end]; set wserv "" if {[string tolower [lindex [args] 0]] == "-r"} {set top "ripe"} if {[string tolower [lindex [args] 0]] == "-p"} {set top "apnic"} switch -glob $top { ca {set wserv "whois.cdnnet.ca"; switch -glob [dsplit $host 2] { AB.CA {set host [dsplit $host 3]} BC.CA {set host [dsplit $host 3]} MB.CA {set host [dsplit $host 3]} NB.CA {set host [dsplit $host 3]} NF.CA {set host [dsplit $host 3]} NS.CA {set host [dsplit $host 3]} NT.CA {set host [dsplit $host 3]} ON.CA {set host [dsplit $host 3]} PE.CA {set host [dsplit $host 3]} QC.CA {set host [dsplit $host 3]} SK.CA {set host [dsplit $host 3]} YK.CA {set host [dsplit $host 3]} *???.CA {set host [dsplit $host 2]} } } ru {set wserv "whois.ripn.net"; switch -glob [dsplit $host 2] { com.ru {set host [dsplit $host 3]} net.ru {set host [dsplit $host 3]} org.ru {set host [dsplit $host 3]} *.ru {set host [dsplit $host 2]} } } za {set wserv "whois.co.za"; switch -glob [dsplit $host 2] { AC.ZA {set host [dsplit $host 3]} ALT.ZA {set host [dsplit $host 3]} CO.ZA {set host [dsplit $host 3]} EDU.ZA {set host [dsplit $host 3]} GOV.ZA {set host [dsplit $host 3]} MIL.ZA {set host [dsplit $host 3]} NET.ZA {set host [dsplit $host 3]} NGO.ZA {set host [dsplit $host 3]} NOM.ZA {set host [dsplit $host 3]} ORG.ZA {set host [dsplit $host 3]} SCHOOL.ZA {set host [dsplit $host 3]} TM.ZA {set host [dsplit $host 3]} WEB.ZA {set host [dsplit $host 3]} *.ZA {set host [dsplit $host 2]} } } tm {set wserv "whois.nic.tm"; set host [dsplit $host 2]} as {set wserv "whois.nic.as"; set host [dsplit $host 2]} af {set wserv "whois.nic.af"; set host [dsplit $host 2]} bt {set wserv "whois.nic.bt"; set host [dsplit $host 2]} ac {set wserv "whois.nic.ac"; set host [dsplit $host 2]} at {set wserv "whois.aco.net"; set host [dsplit $host 3]} au {set wserv "whois.aunic.net"; set host [dsplit $host 3]} br {set wserv "registro.fapesp.br"; set host [dsplit $host 3]} cn {set wserv "whois.cnnic.cn"; set host [dsplit $host 3]} cc {set wserv "whois.nic.cc"; set host [dsplit $host 2]} fr {set wserv "whois.nic.fr"; set host [dsplit $host 2]} hm {set wserv "whois.nic.hm"; set host [dsplit $host 2]} is {set wserv "whois.isnet.is"; set host [dsplit $host 2]} it {set wserv "whois.garr.it"; set host [dsplit $host 2]} jp {set wserv "whois.nic.ad"; set host [dsplit $host 3]} kz {set wserv "whois.domain.kz"; set host [dsplit $host 2]} kr {set wserv "whois.nic.or.kr"; set host [dsplit $host 3]} ch {set wserv "whois.nic.ch"; set host [dsplit $host 2]} li {set wserv "whois.nic.li"; set host [dsplit $host 2]} lu {set wserv "whois.restena.lu"; set host [dsplit $host 2]} mx {set wserv "whois.nic.mx"; set host [dsplit $host 2]} ms {set wserv "adamsnames.tc"; set host [dsplit $host 2]} tc {set wserv "adamsnames.tc"; set host [dsplit $host 2]} vg {set wserv "adamsnames.tc"; set host [dsplit $host 2]} gs {set wserv "adamsnames.tc"; set host [dsplit $host 2]} tf {set wserv "adamsnames.tc"; set host [dsplit $host 2]} nl {set wserv "domain-registry.nl"; set host [dsplit $host 2]} sg {set wserv "whois.nic.net.sg"; set host [dsplit $host 3]} sh {set wserv "whois.nic.sh"; set host [dsplit $host 2]} se {set wserv "whois.nic-se.se"; set host [dsplit $host 2]} tw {set wserv "whois.twnic.net"; set host [dsplit $host 3]} tj {set wserv "whois.nic.tj"; set host [dsplit $host 3]} th {set wserv "whois.thnic.net"; set host [dsplit $host 3]} tr {set wserv "whois.metu.edu.tr"; set host [dsplit $host 3]} us {set wserv "whois.isi.edu"; set host [dsplit $host 3]} com {set wserv "rs.internic.net"; set host [dsplit $host 2]} net {set wserv "rs.internic.net"; set host [dsplit $host 2]} org {set wserv "rs.internic.net"; set host [dsplit $host 2]} edu {set wserv "rs.internic.net"; set host [dsplit $host 2]} gov {set wserv "whois.nic.gov"; set host [dsplit $host 2]} mil {set wserv "whois.nic.mil"; set host [dsplit $host 3]} *[0-9] {set wserv "whois.arin.net"; set host [dsplit $host 4]} arpa {set wserv "whois.arin.net"; set host [dsplit $host 6]} ripe {set wserv "whois.ripe.net"; set host [dsplit $host 4]} apnic {set wserv "whois.apnic.net"; set host [dsplit $host 4]} } if {$wserv == ""} {rwecho "not currently supporting $top lookups";complete;return} if {![catch {eof $realwhois} x] && !$x} {} if ![catch {socket -async $wserv 43} realwhois] { if ![catch {puts $realwhois "$host\nEOF"}] { if ![catch {flush $realwhois}] { fconfigure $realwhois -buffering line fileevent $realwhois readable [list realwhois $realwhois $host] /chat .Real_Whois. window set_title "rWhois: $host@$wserv" chat .Real_Whois. if {[window state chat .Real_Whois.] == "minimize"} {window restore chat .Real_Whois.} rwecho " "; rwecho " "; rwecho "[string toupper $host]@[string toupper $wserv]" window focus chat .Real_Whois. } } } { echo [rep [t dicterr] %realwhois $realwhois] unset realwhois } window focus chat .Real_Whois. complete } proc realwhois {sock word} { global domain realwhois if [eof $sock] {close $sock;catch {unset domain($sock)};unset realwhois;return} set i [gets $sock] set upperword [string toupper $word] set ii [lrange $i 0 1] switch -- $ii { "No match" {rwecho "$upperword is available"; return} "Registrant:" {rwecho " "; rwecho " ---($upperword\\owner)----------------"; return} " Billing Contact:" {rwecho " "; rwecho " ---($upperword\\[lindex $ii 0])----------------"; return } " Technical Contact," {rwecho " "; rwecho " ---($upperword\\[lindex $ii 0])----------------"; return } " Technical Contact:" {if ![crwhois] {rwecho " "; rwecho " ---($upperword\\[lindex $ii 0])----------------"; return } } " Administrative Contact," {if ![crwhois] {rwecho " "; rwecho " ---($upperword\\[lindex $ii 0])----------------"; return } } " Administrative Contact:" {if ![crwhois] {rwecho " "; rwecho " ---($upperword\\[lindex $ii 0])----------------"; return } } " Coordinator:" {rwecho " "; rwecho " ---($upperword\\[lindex $ii 0])----------------"; return } " Domain Name" {rwecho " "; return } " Domain Name:" {rwecho " "; return } " Domain servers" {rwecho " "; rwecho " ---(DNS)----------------"; return } " Domain System" {rwecho " "; rwecho " ---(DNS)----------------"; return } " Record last" {rwecho " "; rwecho " Record updated last on: [lrange $i 4 end]"; return} " Database last" { rwecho " Database updated last on: [lrange $i 4 end]"; return} "source: RIPE" {rwecho " ----------------------"; rwecho " "; return } "source: APNIC" {rwecho " ----------------------"; rwecho " "; return } "% Rights" {rwecho " ---($upperword\\RIPE INFO)----------------"; rwecho " "; return } "the US" {return } "address space" {return } "subscribers. For" {return } "information about" {return } "The DoD" {return } "To see" {return } "with a" {return } "* --" {return } "* For" {return } "Please be" {return } "pertaining to" {return } "use the" {return } " Domain Name:" {return } "The InterNIC" {return } "To single" {return } "The ARIN" {return } "Network Information:" {return } "handle, shown" {return } "Please use" {return } "Information and" {return } "non-military and" {return } "Other associated" {return } " American Registry" {return } " Asia Pacific" {return } " European IP" {return } " US Government" {return } " American Registry" {return } " Asia Pacific" {return } " European IP" {return } " US Military" {return } " US Government" {return } "" {return } } rwecho "$i" }