Class PhusionPassenger::Utils::HostsFileParser |
In: | lib/phusion_passenger/utils/hosts_file_parser.rb
Parent: | Object

A /etc/hosts parser. Also supports writing groups of data to the file.

Methods

- add_group_data
- flush_dns_cache!
- host_count
- ip_count
- new
- resolve
- resolves_to_localhost?
- write

Public Class methods
flush_dns_cache!()

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 30
    30:         def self.flush_dns_cache!
    31:                 if RUBY_PLATFORM =~ /darwin/
    32:                         system("dscacheutil -flushcache")
    33:                 end
    34:         end

new(filename_or_io = "/etc/hosts")

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 36
    36:         def initialize(filename_or_io = "/etc/hosts")
    37:                 if filename_or_io.respond_to?(:readline)
    38:                         read_and_parse(filename_or_io)
    39:                 else
    40:                         File.open(filename_or_io, "rb") do |f|
    41:                                 read_and_parse(f)
    42:                         end
    43:                 end
    44:         end

Public Instance methods
add_group_data(marker, data)

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 67
    67:         def add_group_data(marker, data)
    68:                 begin_index = find_line(0, "###### BEGIN #{marker} ######")
    69:                 end_index = find_line(begin_index + 1, "###### END #{marker} ######") if begin_index
    70:                 if begin_index && end_index
    71:                         @lines[begin_index + 1 .. end_index - 1] = data.split("\n")
    72:                 else
    73:                         @lines << "###### BEGIN #{marker} ######"
    74:                         @lines.concat(data.split("\n"))
    75:                         @lines << "###### END #{marker} ######"
    76:                 end
    77:         end

host_count()

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 50
    50:         def host_count
    51:                 return @host_names.size
    52:         end

ip_count()

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 46
    46:         def ip_count
    47:                 return @ips.size
    48:         end

resolve(host_name)

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 54
    54:         def resolve(host_name)
    55:                 if host_name.downcase == "localhost"
    56:                         return "127.0.0.1"
    57:                 else
    58:                         return @host_names[host_name.downcase]
    59:                 end
    60:         end

resolves_to_localhost?(hostname)

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 62
    62:         def resolves_to_localhost?(hostname)
    63:                 ip = resolve(hostname)
    64:                 return ip == "127.0.0.1" || ip == "::1" || ip == "0.0.0.0"
    65:         end

write(io)

[ show source ]

        # File lib/phusion_passenger/utils/hosts_file_parser.rb, line 79
    79:         def write(io)
    80:                 @lines.each do |line|
    81:                         io.puts(line)
    82:                 end
    83:         end