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