class Reverse
Constants
- ADDR_REG_EXP
- VERSION
Public Class Methods
new()
click to toggle source
# File lib/reverse.rb, line 10 def initialize @resolv = Resolv::DNS.new(nameserver: ["8.8.8.8", "8.8.4.4"], ndots: 1) @list = {} @options = {color: true} Signal.trap(:INT){ exit(0) } end
Public Instance Methods
exec(argv)
click to toggle source
# File lib/reverse.rb, line 17 def exec(argv) opt = OptionParser.new opt.on('-V', '--verion', 'Show version number and quit') {|v| @options[:verion] = v } opt.on('-v', '--verbose', 'Verbose Mode (IP Address with reverse DNS)') {|v| @options[:verbose] = v } opt.on('--no-color', 'No Color Mode') {|v| @options[:color] = v } opt.parse!(argv) if @options[:verion] name = File.basename($PROGRAM_NAME) puts "#{name} #{VERSION}" exit end while line = gets output = if line =~ ADDR_REG_EXP replace_addr(line) else line end print output end end
Private Instance Methods
get_name(addr)
click to toggle source
# File lib/reverse.rb, line 70 def get_name(addr) begin @resolv.getname(addr).to_s rescue Resolv::ResolvError => e addr end end
replace_addr(line)
click to toggle source
# File lib/reverse.rb, line 43 def replace_addr(line) color = Term::ANSIColor line.gsub(ADDR_REG_EXP) do |addr| name = nil if @list[addr] name = @list[addr] else name = get_name(addr) @list[addr] = name end if @options[:verbose] if name == addr str = "unknown[#{addr}]" else str = "#{name}[#{addr}]" end else str = name end if @options[:color] color.green + str + color.clear else str end end end