lib/gdk/diagnostic/hostname.rb (36 lines of code) (raw):
# frozen_string_literal: true
require 'resolv'
module GDK
module Diagnostic
class Hostname < Base
TITLE = 'GDK Hostname'
def success?
hostname_ips.include?(listen_address)
end
def detail
return if success?
if hostname_ips.empty?
return <<~MESSAGE
Could not resolve IP address for the GDK hostname `#{hostname}`
Is it set up in `/etc/hosts`?
MESSAGE
end
<<~MESSAGE
The GDK hostname `#{hostname}` resolves to the IP addresses #{hostname_ips.join(', ')}.
The listen_address defined in your GDK config is `#{listen_address}`.
You should make sure that the two match.
Either fix the IP address in `/etc/hosts` to match #{listen_address}, or run:
#{hostname_ips.map { |ip| "gdk config set listen_address #{ip}" }.join("\n")}
MESSAGE
end
private
def hostname_ips
@hostname_ip ||= Resolv.getaddresses(hostname)
end
def hostname
@hostname ||= config.hostname
end
def listen_address
@listen_address ||= config.listen_address
end
end
end
end