class Middleman::PreviewServer::AllInterfaces

This one is used if no bind address and no server name is given

def self.matches?(opts={})

def self.matches?(opts={})
  opts[:bind_address].blank? && opts[:server_name].blank?
end

def after_init

def after_init
  @listeners << ServerIpAddress.new('::')
  @listeners << ServerIpAddress.new('0.0.0.0')
end

def includes_array?(a, b)

def includes_array?(a, b)
  !(a & b).empty?
end

def initialize(*args)

def initialize(*args)
  super
  after_init
end

def resolve_me(resolver)

Resolve ips
def resolve_me(resolver)
  hostname          = ServerHostname.new(Socket.gethostname)
  hostname_ips      = resolver.ips_for(hostname)
  network_interface = ServerIpAddress.new(Array(local_network_interfaces).first)
  resolved_name     = ServerHostname.new(resolver.names_for(network_interface).first)
  if includes_array? local_network_interfaces, hostname_ips
    @server_name = hostname
    @site_addresses << hostname
    network_interface = ServerIpAddress.new((local_network_interfaces & hostname_ips).first)
  elsif RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
    @server_name = hostname
    @site_addresses << hostname
  elsif !resolved_name.blank?
    @server_name = resolved_name
    @site_addresses << resolved_name
  else
    @server_name = network_interface
  end
  @site_addresses << network_interface
  self
end