From 7ff854dd64d631345ec2d506fc85156eaef07802 Mon Sep 17 00:00:00 2001 From: Nick Carboni Date: Mon, 5 Oct 2015 15:58:07 -0400 Subject: [PATCH] Added Dns class for managing DNS search and nameservers https://trello.com/c/rWKh4KQs --- lib/linux_admin.rb | 1 + lib/linux_admin/dns.rb | 31 +++++++++++++++++ spec/dns_spec.rb | 75 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 lib/linux_admin/dns.rb create mode 100644 spec/dns_spec.rb diff --git a/lib/linux_admin.rb b/lib/linux_admin.rb index 58b87eb..efc46b5 100644 --- a/lib/linux_admin.rb +++ b/lib/linux_admin.rb @@ -30,6 +30,7 @@ require 'linux_admin/scap' require 'linux_admin/time_date' require 'linux_admin/ip_address' +require 'linux_admin/dns' module LinuxAdmin extend Common diff --git a/lib/linux_admin/dns.rb b/lib/linux_admin/dns.rb new file mode 100644 index 0000000..f8f4b37 --- /dev/null +++ b/lib/linux_admin/dns.rb @@ -0,0 +1,31 @@ +module LinuxAdmin + class Dns + attr_accessor :filename + attr_accessor :nameservers + attr_accessor :search_order + + def initialize(filename = "/etc/resolv.conf") + @filename = filename + reload + end + + def reload + @search_order = [] + @nameservers = [] + + File.read(@filename).split("\n").each do |line| + if line =~ /^search .*/ + @search_order += line.split(/^search\s+/)[1].split + elsif line =~ /^nameserver .*/ + @nameservers.push(line.split[1]) + end + end + end + + def save + contents = "search #{@search_order.join(" ")}\n" + @nameservers.each { |ns| contents += "nameserver #{ns}\n" } + File.write(@filename, contents) + end + end +end diff --git a/spec/dns_spec.rb b/spec/dns_spec.rb new file mode 100644 index 0000000..ad0788c --- /dev/null +++ b/spec/dns_spec.rb @@ -0,0 +1,75 @@ +describe LinuxAdmin::Dns do + RESOLV_CONF = <