#!/usr/bin/env ruby require 'rubygems' require 'controller' require 'provider' require 'optparse' options = {} OptionParser.new do |opts| opts.banner = "Usage: controller [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 interface to host on") do |h| options[:ring_server_host] = h || nil end opts.on("-r PORT", "--ring-server-port", Integer, "Specify Ring Server port to listen on") do |r| options[:ring_server_port] = r 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! controller = Controller.new( :drb_server_host => options[:drb_server_host], :drb_server_port => options[:drb_server_port] || 11235, :ring_server_host => options[:ring_server_host], :ring_server_port => options[:ring_server_port] || 12358, :acls => options[:acls] || %w{ allow all }, :loglevel => options[:loglevel] ) controller.start DRb.thread.join