#---
# Výňatek z knihy "HTML5 a CSS3", vydal Computer Press.
# Autorská práva ke kódu. Nesmí se použít jako materiály k výuce, 
# v kurzech, knihách, článcích a podobně. V případě dotazů nás kontaktujte.
# Ručíme, že kódy ke knize odpovídají svému účelu. 
# Více informací o knize najdete na http://knihy.cpress.cz/k1948.
#---
# # Flash policy server.
# # Flash potřebuje soubor socketových pravidel poslat jako xml
# # a očekává se, že bude vidět na stejné doméně 
# # na portu 843. 
# 
# # Musíte mít administrátorská práva, abyste mohli službu nastartovat na portu 843.
# # Uživatelé Windows tím nemusí být omezeni.
# 
# # windows:  ruby flashpolicyserver.rb
# # kdokoliv další:  sudo ruby flashpolicyserver.rb
# 
# # Tento server *se nedoporučuje* používat k produkčním účelům.
# 


require 'rubygems'
require 'eventmachine'

module FlashPolicyServer  
  def receive_data(data)
    puts "received #{data}"
    send_data(respond_with_policy(data))
    
  end
  
    def respond_with_policy(request)
      policy = %Q{<?xml version="1.0"?>
  <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
  <cross-domain-policy>
    <allow-access-from domain="*" to-ports="*" />
  </cross-domain-policy>
      }
    end
  
end

EventMachine::run do
  host = '0.0.0.0'
  port = 843
  EventMachine::start_server host, port, FlashPolicyServer
  puts "Started FlashPolicyServer on #{host}:#{port}…"
end






# require 'webrick'
# s = WEBrick::HTTPServer.new(:Port => 843, :DocumentRoot => Dir.pwd + "/public")
# trap('INT') { s.shutdown }
# 
# 
# class FlashServlet < WEBrick::HTTPServlet::AbstractServlet
#   
#   def do_GET(request, response)
#     status, content_type, body = respond_with_policy(request)
#     
#     response.status = status
#     response['Content-Type'] = content_type
#     response.body = body
#     puts "*********** SERVED A POLICY FILE *********"
#   end
#   
#   def respond_with_policy(request)
#     policy = %Q{<?xml version="1.0"?>
# <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
# <cross-domain-policy>
#   <allow-access-from domain="*" to-ports="*" />
# </cross-domain-policy>
#     }
#     return 200, "application/xml", policy
#   end
#   
# end
# 
# 
# 
# s.mount "/", FlashServlet, "red", "2em"
# s.start
