--- /dev/null
+#!/usr/bin/env ruby
+# -*- ruby -*-
+
+$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
+require "rubygems"
+require "optparse"
+require "rack"
+require "rots"
+
+server_options = {
+ :debugger => false,
+ :port => 1123,
+ :verbose => true,
+ :storage => File.join('.', 'tmp', 'rots'),
+ :config => <<-DEFAULT_CONFIG
+# Default configuration file
+identity: john.doe
+sreg:
+ nickname: jdoe
+ fullname: John Doe
+ email: jhon@doe.com
+ dob: 1985-09-21
+ gender: M
+
+ DEFAULT_CONFIG
+}
+
+opts = OptionParser.new do |opts|
+ opts.banner = "Usage: rots [options]"
+
+ opts.separator ""
+ opts.separator "Options:"
+
+ opts.on("-p", "--port PORT",
+ "use PORT (default: 1123)") do |port|
+ server_options[:port] = port
+ end
+
+ opts.on("-s", "--storage PATH",
+ "use PATH as the OpenID Server storage path (default: ./tmp/rots)") do |storage_path|
+ server_options[:storage] = storage_path
+ end
+
+ opts.on("-c", "--config FILE.yaml",
+ "server configuration YAML file") do |config_path|
+ abort "\x1B[31mConfiguration file #{config_path} not found\x1B[0m" unless File.exists?(config_path)
+ server_options[:config] = File.new(config_path)
+ end
+
+ opts.on("-s", "--silent",
+ "If specified, the server will be in silent mode") do
+ server_options[:verbose] = false
+ end
+
+ opts.on("-d", "--debugger") do
+ server_options[:debugger] = true
+ end
+
+ opts.separator ""
+ opts.separator "Common options:"
+
+ opts.on_tail("-h", "--help", "Show this help message") do
+ puts opts
+ exit
+ end
+
+end
+
+opts.parse!(ARGV)
+
+config = YAML.load(server_options[:config])
+
+require "ruby-debug" if server_options[:debugger]
+
+server = Rack::Builder.new do
+ use Rack::Lint
+ if server_options[:verbose]
+ use Rack::CommonLogger, STDOUT
+ use Rack::ShowExceptions
+ end
+ map ("/%s" % config['identity']) do
+ run Rots::IdentityPageApp.new(config, server_options)
+ end
+ map "/server" do
+ run Rots::ServerApp.new(config, server_options)
+ end
+end
+
+puts "\x1B[32mRunning OpenID Test server on port 1123\x1B[0m" if server_options[:verbose]
+begin
+ Rack::Handler::Mongrel.run server, :Port => server_options[:port]
+rescue LoadError
+ Rack::Handler::WEBrick.run server, :Port => server_options[:port]
+end