class Falcon::Host

def assume_privileges(path)

def assume_privileges(path)
	stat = File.stat(path)
	
	Process::GID.change_privilege(stat.gid)
	Process::UID.change_privilege(stat.uid)
end

def authority

def authority
	@evaluator.authority
end

def bound_endpoint

def bound_endpoint
	@evaluator.bound_endpoint
end

def endpoint

def endpoint
	@evaluator.endpoint
end

def initialize(environment)

def initialize(environment)
	@environment = environment.flatten
	@evaluator = @environment.evaluator
end

def name

def name
	"Falcon Host for #{self.authority}"
end

def root

def root
	@evaluator.root
end

def run(container)

def run(container)
	if @environment.include?(:server)
		bound_endpoint = self.bound_endpoint
		
		container.run(count: 1, name: self.name) do |task, instance|
			Async.logger.info(self) {"Starting application server..."}
			
			if root = self.root
				Dir.chdir(root)
			end
			
			server = @evaluator.server
			
			# Drop root privileges:
			assume_privileges(root)
			
			server.run
			
			task.children.each(&:wait)
		end
	end
end

def ssl_context

def ssl_context
	@evaluator.ssl_context
end

def to_s

def to_s
	"\#<#{self.class} #{@evaluator.authority}>"
end