summaryrefslogtreecommitdiff
path: root/lib/rbot/plugins/nslookup.rb
diff options
context:
space:
mode:
authorTom Gilbert <tom@linuxbrit.co.uk>2005-07-27 16:32:32 +0000
committerTom Gilbert <tom@linuxbrit.co.uk>2005-07-27 16:32:32 +0000
commit2a96c9198c1f6e13407d0999083f6ce5e0bc06fa (patch)
treeb3b9247d275d9b554665bc22884104d266d2e757 /lib/rbot/plugins/nslookup.rb
parent21949774b91eaec6ecde4eaa8ad121e2c0a36b87 (diff)
move rbot into lib - still rearranging for packaging/installation
Diffstat (limited to 'lib/rbot/plugins/nslookup.rb')
-rw-r--r--lib/rbot/plugins/nslookup.rb56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/rbot/plugins/nslookup.rb b/lib/rbot/plugins/nslookup.rb
new file mode 100644
index 00000000..92da1ba7
--- /dev/null
+++ b/lib/rbot/plugins/nslookup.rb
@@ -0,0 +1,56 @@
+class DnsPlugin < Plugin
+ begin
+ require 'resolv-replace'
+ def gethostname(address)
+ Resolv.getname(address)
+ end
+ def getaddresses(name)
+ Resolv.getaddresses(name)
+ end
+ rescue LoadError
+ def gethostname(address)
+ Socket.gethostbyname(address).first
+ end
+ def getaddresses(name)
+ a = Socket.gethostbyname(name)
+ list = Socket.getaddrinfo(a[0], 'http')
+ addresses = Array.new
+ list.each {|line|
+ addresses << line[3]
+ }
+ addresses
+ end
+ end
+
+ def help(plugin, topic="")
+ "nslookup|dns <hostname|ip> => show local resolution results for hostname or ip address"
+ end
+ def privmsg(m)
+ unless(m.params)
+ m.reply "incorrect usage: " + help(m.plugin)
+ return
+ end
+ Thread.new do
+ if(m.params =~ /^\d+\.\d+\.\d+\.\d+$/)
+ begin
+ a = gethostname(m.params)
+ m.reply m.params + ": " + a if a
+ rescue StandardError => err
+ m.reply "#{m.params}: not found"
+ end
+ elsif(m.params =~ /^\S+$/)
+ begin
+ a = getaddresses(m.params)
+ m.reply m.params + ": " + a.join(", ")
+ rescue StandardError => err
+ m.reply "#{m.params}: not found"
+ end
+ else
+ m.reply "incorrect usage: " + help(m.plugin)
+ end
+ end
+ end
+end
+plugin = DnsPlugin.new
+plugin.register("nslookup")
+plugin.register("dns")