class PhusionPassenger::Utils::HostsFileParser
A /etc/hosts parser. Also supports writing groups of data to the file.
Public Class Methods
flush_dns_cache!()
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 31 def self.flush_dns_cache! if PlatformInfo.os_name == "macosx" system("dscacheutil -flushcache") end end
new(filename_or_io = "/etc/hosts")
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 37 def initialize(filename_or_io = "/etc/hosts") if filename_or_io.respond_to?(:readline) read_and_parse(filename_or_io) else File.open(filename_or_io, "rb") do |f| read_and_parse(f) end end end
Public Instance Methods
add_group_data(marker, data)
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 68 def add_group_data(marker, data) begin_index = find_line(0, "###### BEGIN #{marker} ######") end_index = find_line(begin_index + 1, "###### END #{marker} ######") if begin_index if begin_index && end_index @lines[begin_index + 1 .. end_index - 1] = data.split("\n") else @lines << "###### BEGIN #{marker} ######" @lines.concat(data.split("\n")) @lines << "###### END #{marker} ######" end end
host_count()
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 51 def host_count return @host_names.size end
ip_count()
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 47 def ip_count return @ips.size end
resolve(host_name)
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 55 def resolve(host_name) if host_name.downcase == "localhost" return "127.0.0.1" else return @host_names[host_name.downcase] end end
resolves_to_localhost?(hostname)
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 63 def resolves_to_localhost?(hostname) ip = resolve(hostname) return ip == "127.0.0.1" || ip == "::1" || ip == "0.0.0.0" end
write(io)
click to toggle source
# File lib/phusion_passenger/utils/hosts_file_parser.rb, line 80 def write(io) @lines.each do |line| io.puts(line) end end