lib/gdk/diagnostic/loopback_persistence.rb (31 lines of code) (raw):
# frozen_string_literal: true
module GDK
module Diagnostic
class LoopbackPersistence < Loopback
TITLE = 'Loopback interface persistence'
LAUNCHDAEMON_PLIST = '/Library/LaunchDaemons/org.gitlab1.ifconfig.plist'
def success?
return true unless needs_loopback?
return true unless GDK::Machine.macos?
loopback_daemon_file_ownership_correct?
end
def detail
return if success?
<<~MESSAGE
You have configured a Launch Daemon in #{LAUNCHDAEMON_PLIST}, but
the ownership/permissions are incorrect.
You can fix this by running the following command:
sudo chown root:wheel #{LAUNCHDAEMON_PLIST};
sudo chmod 0644 #{LAUNCHDAEMON_PLIST};
MESSAGE
end
def loopback_daemon_file_ownership_correct?
root_uid = Process::UID.from_name('root')
wheel_gid = Process::GID.from_name('wheel')
stat = File.lstat(LAUNCHDAEMON_PLIST)
stat.uid == root_uid && stat.gid == wheel_gid && stat.mode & 0o777 == 0o644
rescue Errno::ENOENT, ArgumentError
true
end
end
end
end