#!/usr/bin/env ruby require 'rubygems' require 'controller' require 'provider' require 'optparse' options = {} OptionParser.new do |opts| opts.banner = "Usage: provider [options]" opts.separator "" opts.separator "Specific options:" opts.on("-H HOST", "--drb-server-host", String, "Specify DRb Server interface to host on") do |h| options[:drb_server_host] = h || nil end opts.on("-d PORT", "--drb-server-port", Integer, "Specify DRb Server port to listen on") do |d| options[:drb_server_port] = d end opts.on("-h HOST", "--ring-server-host", String, "Specify Ring Server host to connect to") do |h| options[:ring_server_host] = h || nil end opts.on("-r PORT", "--ring-server-port", Integer, "Specify Ring Server port to broadcast on") do |r| options[:ring_server_port] = r end opts.on("-c URI", "--controller-uri", String, "Specify Controller URI e.g. druby://127.0.0.1:11235 to bypass Ring Server") do |h| options[:controller_uri] = h || nil end opts.on("-b TYPE", "--browser-type", String, "Specify browser type to register {ie|firefox|safari}") do |b| options[:browser_type] = b end opts.on("-a ACLS", "--access-control-list", Array, "Specify a comma separated Access Control List") do |a| options[:acls] = a end opts.on("-l LEVEL", "--log-level", String, "Specify log level {DEBUG|INFO|ERROR}") do |l| case l when 'DEBUG' options[:loglevel] = Logger::DEBUG when 'INFO' options[:loglevel] = Logger::INFO when 'ERROR' options[:loglevel] = Logger::ERROR else options[:loglevel] = Logger::ERROR end end opts.on_tail("-h", "--help", "Show this message") do puts opts exit end end.parse! provider = Provider.new( :drb_server_host => options[:drb_server_host], :drb_server_port => options[:drb_server_port] || 11236, :ring_server_host => options[:ring_server_host], :ring_server_port => options[:ring_server_port] || 12358, :browser_type => options[:browser_type] || nil, :controller_uri => options[:controller_uri] || nil, :acls => options[:acls] || %w{ allow all }, :loglevel => options[:loglevel]) provider.start DRb.thread.join