Class: WifiWand::Platforms::Mac::DnsManager

Inherits:
Object
  • Object
show all
Defined in:
lib/wifi_wand/platforms/mac/dns_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(command_runner:, service_name_provider:) ⇒ DnsManager

Returns a new instance of DnsManager.



11
12
13
14
# File 'lib/wifi_wand/platforms/mac/dns_manager.rb', line 11

def initialize(command_runner:, service_name_provider:)
  @command_runner = command_runner
  @service_name_provider = service_name_provider
end

Instance Method Details

#nameservers_using_networksetupObject



37
38
39
40
41
42
43
44
# File 'lib/wifi_wand/platforms/mac/dns_manager.rb', line 37

def nameservers_using_networksetup
  service_name = wifi_service_name
  output = @command_runner.call(['networksetup', '-getdnsservers', service_name]).stdout
  if output == "There aren't any DNS Servers set on #{service_name}.\n"
    output = ''
  end
  output.split("\n")
end

#nameservers_using_scutilObject



31
32
33
34
35
# File 'lib/wifi_wand/platforms/mac/dns_manager.rb', line 31

def nameservers_using_scutil
  output = @command_runner.call(%w[scutil --dns]).stdout
  nameserver_lines = output.split("\n").grep(/^\s*nameserver\[/).uniq
  nameserver_lines.map { |line| line.split(' : ').last.strip }
end

#set_nameservers(nameservers) ⇒ Object

rubocop:disable Naming/AccessorMethodName



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/wifi_wand/platforms/mac/dns_manager.rb', line 16

def set_nameservers(nameservers) # rubocop:disable Naming/AccessorMethodName
  service_name = wifi_service_name

  if nameservers == :clear
    @command_runner.call(['networksetup', '-setdnsservers', service_name, 'empty'])
  else
    bad_addresses = invalid_nameservers(nameservers)
    raise InvalidIPAddressError, bad_addresses unless bad_addresses.empty?

    @command_runner.call(['networksetup', '-setdnsservers', service_name] + nameservers)
  end

  nameservers
end