tcpbot/plugins/DigDeep.rb

56 lines
1.5 KiB
Ruby

require 'cinch'
require 'resolv'
require 'socket'
require_relative '../classes/Util.rb'
class DigDeep
include Cinch::Plugin
include Hooks::ACLHook
include Util::PluginHelper
@clist = %w{dig}
@@commands["dig"] = ":dig <record type> <host> [@<nameserver>] - perform a dns lookup for the given record type and host (use @host optionally to specify ns)"
set :prefix, /^:/
match /dig (\w+?) (.+?)(?:@(.+))?$/, method: :dig
def dig(m, rec, host, ns=nil)
recs = [
"A", "AAAA", "AFSDB",
"APL", "AXFR", "CAA",
"CDNSKEY", "CDS", "CERT",
"CNAME", "CSYNC", "DHCID",
"DLV", "DNAME", "DNSKEY",
"DS", "EUI48", "EUI64",
"HINFO", "HIP", "HTTPS",
"IPSECKEY", "IXFR", "KEY",
"KX", "LOC", "MX",
"NAPTR", "NS", "NSEC3",
"NSEC3PARAM", "NSEC", "NXT",
"OPENPGPKEY", "OPT", "PTR",
"RP", "RRSIG", "SIG",
"SMIMEA", "SOA", "SSHFP",
"SVCB", "SRV", "TA",
"TKEY", "TLSA", "TSIG",
"TXT", "URI", "ZONEMD"
]
resp = ""
puts "recs = #{recs.inspect}"
puts "recs.include? rec.upcase: #{(recs.include? rec.upcase).inspect}"
ns ||= Resolv::DNS::Config.default_config_hash[:nameserver].sample
puts "rec upcase: #{rec.upcase}"
puts "dig #{rec} #{host} via namserver #{ns}"
begin
if(!recs.include? rec.upcase)
raise Exception.new "lol wtf kinda record is #{rec}?"
end
rescue Exception => e
resp = e.message
ensure
puts "resp: #{resp}"
#m.reply resp
end
end
end
=begin
=end