module Stubby::Extensions::DNS::OSX

Private Instance Methods

flush() click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 72
def flush
  `dscacheutil -flushcache`
end
network_interfaces() click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 41
def network_interfaces
  # TODO: if we connect to a new network, we'd like that to use us, too
  return @network_interfaces if @network_interfaces

  @network_interfaces = {}
  `networksetup listallnetworkservices`.split("\n").each do |interface|
    next if interface.include? '*'
    @network_interfaces[interface] = servers_for(interface)
  end

  @network_interfaces
end
restore_references() click to toggle source

This is less of a complete restoration and actually a return to no defaults

# File lib/stubby/extensions/dns/osx.rb, line 56
def restore_references
  network_interfaces.each do |interface, servers|
    teardown_reference(interface, ["empty"])
  end
end
servers_for(interface) click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 7
def servers_for(interface)
  servers = `networksetup -getdnsservers '#{interface}'`

  if servers =~ /There aren't any DNS Servers/
    return ["empty"]
  else
    return servers.split("\n")
  end
end
setup_reference(interface) click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 17
def setup_reference(interface)
  return if interface.include? "*"
  puts "[INFO] #{interface} configured with Stubby DNS. Will restore to #{@network_interfaces[interface]}"
  `networksetup -setdnsservers '#{interface}' #{STUBBY_MASTER}`
end
setup_references() click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 30
def setup_references
  # TODO: if we connect to a new network, we'd like that to use us, too
  return if @network_interfaces

  network_interfaces.each do |interface, servers|
    setup_reference(interface)
  end

  flush
end
teardown_reference(interface, servers) click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 23
def teardown_reference(interface, servers)
  `networksetup -setdnsservers '#{interface}' #{servers.join(" ")}`
  puts "[INFO] #{interface} original DNS settings restored #{servers.join(" ")}"
rescue => e
  puts e.inspect
end
teardown_references() click to toggle source
# File lib/stubby/extensions/dns/osx.rb, line 62
def teardown_references
  interfaces, @network_interfaces = @network_interfaces, nil

  (interfaces || []).each do |interface, servers| 
    teardown_reference(interface, servers)
  end

  flush
end