Class: RogueOne::Ping

Inherits:
Object
  • Object
show all
Defined in:
lib/rogue_one/ping.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(nameserver) ⇒ Ping

Returns a new instance of Ping.



9
10
11
12
13
# File 'lib/rogue_one/ping.rb', line 9

def initialize(nameserver)
  @nameserver = nameserver
  @resolver = Resolv::DNS.new(nameserver: [nameserver])
  @resolver.timeouts = 5
end

Instance Attribute Details

#nameserverObject (readonly)

Returns the value of attribute nameserver.



7
8
9
# File 'lib/rogue_one/ping.rb', line 7

def nameserver
  @nameserver
end

#resolverObject (readonly)

Returns the value of attribute resolver.



7
8
9
# File 'lib/rogue_one/ping.rb', line 7

def resolver
  @resolver
end

Class Method Details

.pong?(target) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/rogue_one/ping.rb', line 28

def self.pong?(target)
  new(target).pong?
end

Instance Method Details

#get_a_recordObject



15
16
17
18
19
# File 'lib/rogue_one/ping.rb', line 15

def get_a_record
  resolver.getresource("example.com", Resolv::DNS::Resource::IN::A)
rescue Resolv::ResolvError => _e
  nil
end

#pong?Boolean

Returns:

  • (Boolean)

Raises:



21
22
23
24
25
26
# File 'lib/rogue_one/ping.rb', line 21

def pong?
  result = get_a_record
  raise Error, "DNS resolve error: there is no resopnse from #{nameserver}" unless result

  true
end