def valid?
self.pid_file
valid = true
if self.start.nil?
valid = false
applog(self, :error, "No start command was specified")
end
if !@tracking_pid && self.stop.nil?
valid = false
applog(self, :error, "No stop command was specified")
end
if self.uid
begin
Etc.getpwnam(self.uid)
rescue ArgumentError
valid = false
applog(self, :error, "UID for '#{self.uid}' does not exist")
end
end
if self.gid
begin
Etc.getgrnam(self.gid)
rescue ArgumentError
valid = false
applog(self, :error, "GID for '#{self.gid}' does not exist")
end
end
if !@tracking_pid && !File.exist?(File.dirname(self.pid_file))
valid = false
applog(self, :error, "PID file directory '#{File.dirname(self.pid_file)}' does not exist")
end
if !@tracking_pid && File.exist?(File.dirname(self.pid_file)) && !file_writable?(File.dirname(self.pid_file))
valid = false
applog(self, :error, "PID file directory '#{File.dirname(self.pid_file)}' is not writable by #{self.uid || Etc.getlogin}")
end
if !File.exist?(File.dirname(self.log))
valid = false
applog(self, :error, "Log directory '#{File.dirname(self.log)}' does not exist")
end
if File.exist?(self.log)
unless file_writable?(self.log)
valid = false
applog(self, :error, "Log file '#{self.log}' exists but is not writable by #{self.uid || Etc.getlogin}")
end
else
unless file_writable?(File.dirname(self.log))
valid = false
applog(self, :error, "Log directory '#{File.dirname(self.log)}' is not writable by #{self.uid || Etc.getlogin}")
end
end
if self.chroot
if !File.directory?(self.chroot)
valid = false
LOG.log(self, :error, "CHROOT directory '#{self.chroot}' does not exist")
end
if !File.exist?(File.join(self.chroot, '/dev/null'))
valid = false
LOG.log(self, :error, "CHROOT directory '#{self.chroot}' does not contain '/dev/null'")
end
end
valid
end