module Crossdomain::Service
Public Instance Methods
check_permissions()
click to toggle source
# File lib/crossdomain/service.rb, line 43 def check_permissions end
start()
click to toggle source
# File lib/crossdomain/service.rb, line 5 def start # Validates XML against Adobe's schema xml = Crossdomain::XML.validate!(Crossdomain::Config[:xml_path]) unless xml Crossdomain.logger.error "Missing or malformed xml at #{Crossdomain::Config[:xml_path]}" return end if Crossdomain::Config[:port].to_i < 1000 and Process.uid != 0 Crossdomain.logger.error "You need to be root to bind to port #{Crossdomain::Config[:port]}" return end Crossdomain.logger.info "Binding to #{Crossdomain::Config[:host]}:#{Crossdomain::Config[:port]}" @server = TCPServer.new Crossdomain::Config[:host], Crossdomain::Config[:port] # Drop privileges Crossdomain.logger.info "Dropping privileges to nobody" uid = Etc.getpwnam("nobody").uid Process::Sys.setuid(uid) begin loop do Thread.start(@server.accept) do |client| client.puts xml client.close end end rescue Interrupt #@server.stop Crossdomain.logger.info "Shutting down..." end end
stop()
click to toggle source
# File lib/crossdomain/service.rb, line 46 def stop @server.stop end