class DnsZoneCli::CLI
Public Instance Methods
check()
click to toggle source
# File lib/dns_zone_cli/cli.rb, line 24 def check say "***Hi, this is CLI domain\'s DNS zone chekcer***", :green @domain = ask "Please type (domain name) and press (enter)\r\n", :green while @domain.nil? || !@domain.match(@@domain_regex) say "***Null or it's not FQDN. Please try again***", :red @domain = ask 'Please retype (domain name) and press (enter)', :red end say 'By default, Google Public DNS(8.8.8.8) DNS is used, is there any problem?', :green if yes? "If OK, please press (y) and (enter).\r\nIf you want to use another DNS, please press (enter)", :green query_dns('8.8.8.8') else assign_dns = ask "Please input DNS server name and (enter)\r\n", :green valid_dns_host = [@@domain_regex, @@ipv4_regex, @@ipv6_regex] while assign_dns.nil? || !assign_dns.match(Regexp.union(valid_dns_host)) say "***Null or it's not dns_server. Please try again***", :red assign_dns = ask "(Please retype dns server name and press enter key)\r\nex:dns.google\r\nex:1.1.1.1\r\n", :red end # DNS server find? begin Resolv.getaddress(assign_dns) rescue StandardError say "I can\'t DNS host name, so... I use Google Public DNS", :red query_dns('8.8.8.8') else query_dns(assign_dns) end end end
Private Instance Methods
query_dns(dns_server)
click to toggle source
# File lib/dns_zone_cli/cli.rb, line 61 def query_dns(dns_server) puts '=========================================================' puts "Answerd DNS server is #{dns_server}" puts '=========================================================' is_dns = Resolv::DNS.new(nameserver: dns_server) @@recoad_type_and_host_neme.each do |recoad_type, host_name| puts "----------------#{recoad_type} Recoad--------------------" host_name.each do |host| fqdn = host + @domain case recoad_type when :NS is_dns.each_resource(fqdn, Resolv::DNS::Resource::IN::NS) do |resource| puts "#{fqdn}\t#{resource.ttl}\tIN\t#{recoad_type}\t#{resource.name}" end when :A is_dns.each_resource(fqdn, Resolv::DNS::Resource::IN::A) do |resource| puts "#{fqdn}\t#{resource.ttl}\tIN\t#{recoad_type}\t#{resource.address}" end when :CNAME is_dns.each_resource(fqdn, Resolv::DNS::Resource::IN::CNAME) do |resource| puts "#{fqdn}\t#{resource.ttl}\tIN\t#{recoad_type}\t#{resource.name}" end when :MX is_dns.each_resource(fqdn, Resolv::DNS::Resource::IN::MX) do |resource| puts "#{fqdn}\t#{resource.ttl}\tIN\t#{recoad_type}\t#{resource.preference}\t#{resource.exchange}" end when :TXT is_dns.each_resource(fqdn, Resolv::DNS::Resource::IN::TXT) do |resource| txt_value = resource.strings.pop puts "#{fqdn}\t#{resource.ttl}\tIN\t#{recoad_type}\t\"#{txt_value}\"" end end end puts '---------------------------------------------------------' end end