mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env ruby
 | |
| require "xmlrpc/server"
 | |
| 
 | |
| # NOTE: force the usage of the pure-ruby version of fcgi. 
 | |
| # - this is required by the workaround to get fcgi+xmlrpc working together
 | |
| FCGI_PURE_RUBY=true
 | |
| require 'fcgi'
 | |
| 
 | |
| require File.join(File.dirname(__FILE__), '../bt_cast/mdata_echo_server/bt_cast_mdata_server_t.rb')
 | |
| 
 | |
| ################################################################################
 | |
| ################################################################################
 | |
| #			CGI handling for xmlrpc
 | |
| ################################################################################
 | |
| ################################################################################
 | |
| # - for basic xmlrpc via CGI example
 | |
| #   - see http://www.ntecs.de/projects/xmlrpc4r/server.html#label-19
 | |
| 
 | |
| # create the directory needed for Neoip::Cast_mdata_server_t
 | |
| Neoip::Cast_mdata_server_t.create_dir_ifneeded();
 | |
| 
 | |
| # init the cgi_server
 | |
| cgi_server	= XMLRPC::CGIServer.new     
 | |
| # register all the xmlrpc function
 | |
| cgi_server.add_handler("set_cast_mdata_pull") do |web2srv_str, cast_name, cast_privtext, cast_id, 
 | |
| 						port_lview, port_pview, uri_pathquery|
 | |
| 	Neoip::Cast_mdata_server_t.set_cast_mdata_pull(web2srv_str, cast_name, cast_privtext, cast_id,
 | |
| 						port_lview, port_pview, uri_pathquery, ENV['REMOTE_ADDR']);
 | |
| end 
 | |
| cgi_server.add_handler("set_cast_mdata_push") do |web2srv_str, cast_name, cast_privtext, cast_mdata|
 | |
| 	Neoip::Cast_mdata_server_t.set_cast_mdata_push(web2srv_str, cast_name, cast_privtext, cast_mdata);
 | |
| end 
 | |
| cgi_server.add_handler("get_cast_mdata") do |cast_name, cast_privhash|
 | |
| 	Neoip::Cast_mdata_server_t.get_cast_mdata(cast_name, cast_privhash);
 | |
| end 
 | |
| cgi_server.add_handler("del_cast_mdata") do |cast_name, cast_privtext|
 | |
| 	Neoip::Cast_mdata_server_t.del_cast_mdata(cast_name, cast_privtext);
 | |
| end
 | |
| 
 | |
| # handle the unknown/bad formered calls
 | |
| cgi_server.set_default_handler do |name, *args|
 | |
| 	raise XMLRPC::FaultException.new(-99, "Method #{name} missing" +
 | |
|                                    " or wrong number of parameters!")
 | |
| end
 | |
| 
 | |
| # server the cgi_server
 | |
| #cgi_server.serve
 | |
| #exit
 | |
|   
 | |
| # experiment at using fast-cgi
 | |
| FCGI.each_request do |request|
 | |
| 	# XMLRPC::CGIServer expect some value in ENV[] but FCGI doesnt provides them
 | |
| 	# - so working around by copying them by hand... dirty 
 | |
| 	ENV['REMOTE_ADDR']	= request.env['REMOTE_ADDR'];
 | |
| 	ENV['REQUEST_METHOD']	= request.env['REQUEST_METHOD'];
 | |
| 	ENV['CONTENT_TYPE']	= "text/xml";
 | |
| 	ENV['CONTENT_LENGTH']	= "#{request.in.length}";
 | |
| 
 | |
| 	# copy the request in/out into the stdin/stdout to act as a CGI
 | |
| 	$stdin	= request.in
 | |
| 	$stdout	= request.out
 | |
| 
 | |
| 	# process the cgi itself
 | |
| 	cgi_server.serve
 | |
| 
 | |
| 	# mark the request as finished
 | |
| 	request.finish
 | |
| end
 |