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 [@] - 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