]> git.openstreetmap.org Git - rails.git/blob - vendor/gems/rots-0.2.1/bin/rots
Merge branch 'master' into openstreetbugs
[rails.git] / vendor / gems / rots-0.2.1 / bin / rots
1 #!/usr/bin/env ruby
2 # -*- ruby -*-
3
4 $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5 require "rubygems"
6 require "optparse"
7 require "rack"
8 require "yaml"
9 require "rots"
10
11 server_options = {
12   :debugger => false,
13   :port => 1123,
14   :verbose => true,
15   :storage => File.join('.', 'tmp', 'rots'),
16   :config => <<-DEFAULT_CONFIG
17 # Default configuration file
18 identity: john.doe
19 sreg:
20   nickname: jdoe
21   fullname: John Doe
22   email: jhon@doe.com
23   dob: 1985-09-21
24   gender: M
25
26   DEFAULT_CONFIG
27 }
28
29 opts = OptionParser.new do |opts|
30   opts.banner = "Usage: rots [options]"
31   
32   opts.separator ""
33   opts.separator "Options:"
34   
35   opts.on("-p", "--port PORT",
36             "use PORT (default: 1123)") do |port|
37     server_options[:port] = port
38   end
39   
40   opts.on("-s", "--storage PATH",
41             "use PATH as the OpenID Server storage path (default: ./tmp/rots)") do |storage_path|
42     server_options[:storage] = storage_path
43   end
44   
45   opts.on("-c", "--config FILE.yaml",
46             "server configuration YAML file") do |config_path|
47     abort "\x1B[31mConfiguration file #{config_path} not found\x1B[0m" unless File.exists?(config_path)
48     server_options[:config] = File.new(config_path)
49   end
50   
51   opts.on("-s", "--silent",
52             "If specified, the server will be in silent mode") do 
53     server_options[:verbose] = false
54   end
55   
56   opts.on("-d", "--debugger") do
57     server_options[:debugger] = true
58   end
59   
60   opts.separator ""
61   opts.separator "Common options:"
62   
63   opts.on_tail("-h", "--help", "Show this help message") do
64     puts opts
65     exit
66   end
67   
68 end
69
70 opts.parse!(ARGV)
71
72 config = YAML.load(server_options[:config])
73
74 require "ruby-debug" if server_options[:debugger]
75
76 server = Rack::Builder.new do 
77   use Rack::Lint
78   if server_options[:verbose]
79     use Rack::CommonLogger, STDOUT
80     use Rack::ShowExceptions
81   end
82   map ("/%s" % config['identity']) do
83     run Rots::IdentityPageApp.new(config, server_options)
84   end
85   map "/server" do
86     run Rots::ServerApp.new(config, server_options)
87   end
88 end
89
90 puts "\x1B[32mRunning OpenID Test server on port 1123\x1B[0m" if server_options[:verbose]
91 begin 
92   Rack::Handler::Mongrel.run server, :Port => server_options[:port]
93 rescue LoadError
94   if server_options[:verbose]
95     Rack::Handler::WEBrick.run server, :Port => server_options[:port]
96   else
97     Rack::Handler::WEBrick.run server, :Port => server_options[:port], :AccessLog => [], :Logger => WEBrick::Log::new("/dev/null", 7)
98   end
99 end