picnic 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -1,14 +1,27 @@
1
- === 0.6.3 :: 2007-03-14
1
+ === 0.6.4 :: 2008-05-26
2
+
3
+ * Patched bundled Camping library to allow setting expiry time on cookies.
4
+ * CLI initializer can now be fed an alternate module name for your application.
5
+ This will override the module that would have been guessed based on the
6
+ app's name.
7
+ * Fixed bug where HTTPS operation didn't work under Webrick. You should now
8
+ again be able to serve over HTTPS when using webrick by supplying the
9
+ ssl_cert configuration option.
10
+ See: http://code.google.com/p/rubycas-server/issues/detail?id=45
11
+ * Fixed bug where the log file was being truncuated whenever the server
12
+ was started in daemon mode.
13
+
14
+ === 0.6.3 :: 2008-03-14
2
15
 
3
16
  * Fixed bug in mongrel postamble that prevented the server from starting when
4
17
  the log level was set to DEBUG.
5
18
 
6
- === 0.6.2 :: 2007-03-06
19
+ === 0.6.2 :: 2008-03-06
7
20
 
8
21
  * Fixed some loading problems having to do with the new CAS authenticator
9
22
  introduced in 0.6.0.
10
23
 
11
- === 0.6.1 :: 2007-02-28
24
+ === 0.6.1 :: 2008-02-28
12
25
 
13
26
  * Fixed bug introduced in 0.6.0 where webrick and mongrel postambles were
14
27
  broken for apps that don't define any public directories.
@@ -16,7 +29,7 @@
16
29
  some potential issues with the uri_path config option. Multiple /'s
17
30
  in the path are now automatically removed.
18
31
 
19
- === 0.6.0 :: 2007-02-26
32
+ === 0.6.0 :: 2008-02-26
20
33
 
21
34
  * Added support for CAS authentication. See picnic/authentication.rb for
22
35
  details.
data/lib/picnic/cli.rb CHANGED
@@ -1,5 +1,12 @@
1
1
  require 'optparse'
2
2
 
3
+ begin
4
+ require 'active_support'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'active_support'
8
+ end
9
+
3
10
  module Picnic
4
11
  # Provides a command-line interface for your app.
5
12
  # This is useful for creating a 'bin' file for launching your application.
@@ -41,11 +48,12 @@ module Picnic
41
48
  def initialize(app, options = {})
42
49
  @app = app
43
50
 
44
- @options = {}
45
- @options[:app_path] ||= File.expand_path(File.dirname(File.expand_path(__FILE__))+"/../lib/#{app}.rb")
46
- @options[:pid_file] ||= "/etc/#{app}/#{app}.pid"
47
- @options[:conf_file] ||= nil
48
- @options[:verbose] ||= false
51
+ @options = options || {}
52
+ @options[:app_path] ||= File.expand_path(File.dirname(File.expand_path(__FILE__))+"/../lib/#{app}.rb")
53
+ @options[:app_module] ||= app.capitalize
54
+ @options[:pid_file] ||= "/etc/#{app}/#{app}.pid"
55
+ @options[:conf_file] ||= nil
56
+ @options[:verbose] ||= false
49
57
 
50
58
  @options = options
51
59
  end
@@ -97,7 +105,8 @@ module Picnic
97
105
 
98
106
  opts.on_tail("-V", "--version", "Show version number") do
99
107
  require "#{path}/lib/#{app}/version"
100
- puts "#{app}-#{VERSION::STRING}"
108
+ app_mod = @options[:app_module].constantize
109
+ puts "#{app}-#{app_mod::VERSION::STRING}"
101
110
  exit
102
111
  end
103
112
  end.parse!
@@ -36,12 +36,36 @@ module Picnic
36
36
  cert_path = Picnic::Conf.ssl_cert
37
37
  key_path = Picnic::Conf.ssl_key || Picnic::Conf.ssl_cert
38
38
  # look for the key in the ssl_cert if no ssl_key is specified
39
+
40
+ webrick_options = {
41
+ :BindAddress => Picnic::Conf.bind_address || "0.0.0.0",
42
+ :Port => Picnic::Conf.port
43
+ }
44
+
45
+ unless cert_path.nil? && key_path.nil?
46
+ raise "The specified certificate file #{cert_path.inspect} does not exist. " +
47
+ " Your 'ssl_cert' configuration setting must be a path to a valid " +
48
+ " ssl certificate." unless
49
+ File.exists? cert_path
50
+
51
+ raise "The specified key file #{key_path.inspect} does not exist. " +
52
+ " Your 'ssl_key' configuration setting must be a path to a valid " +
53
+ " ssl private key." unless
54
+ File.exists? key_path
39
55
 
56
+ require 'openssl'
57
+
58
+ cert = OpenSSL::X509::Certificate.new(File.read(cert_path))
59
+ key = OpenSSL::PKey::RSA.new(File.read(key_path))
60
+
61
+ webrick_options[:SSLEnable] = true
62
+ webrick_options[:SSLVerifyClient] = ::OpenSSL::SSL::VERIFY_NONE
63
+ webrick_options[:SSLCertificate] = cert
64
+ webrick_options[:SSLPrivateKey] = key
65
+ end
66
+
40
67
  begin
41
- s = WEBrick::HTTPServer.new(
42
- :BindAddress => Picnic::Conf.bind_address || "0.0.0.0",
43
- :Port => Picnic::Conf.port
44
- )
68
+ s = WEBrick::HTTPServer.new(webrick_options)
45
69
  rescue Errno::EACCES
46
70
  puts "\nThe server could not launch. Are you running on a privileged port? (e.g. port 443) If so, you must run the server as root."
47
71
  exit 2
@@ -69,9 +93,11 @@ module Picnic
69
93
  trap(:TERM) do
70
94
  s.shutdown
71
95
  end
96
+
97
+ server_url = "http#{webrick_options[:SSLEnable] ? 's' : ''}://#{ENV['HOSTNAME'] || 'localhost'}:#{Picnic::Conf.port}#{Picnic::Conf.uri_path}"
72
98
 
73
99
  if $DAEMONIZE
74
- puts "\n** #{self} will run at http://#{ENV['HOSTNAME'] || 'localhost'}:#{Picnic::Conf.port}#{Picnic::Conf.uri_path} and log to #{Picnic::Conf.log[:file].inspect}. "
100
+ puts "\n** #{self} will run at #{server_url} and log to #{Picnic::Conf.log[:file].inspect}. "
75
101
  puts "** Check the log file for further messages!\n\n"
76
102
 
77
103
  logdev = $LOG.instance_variable_get(:@logdev).instance_variable_get(:@filename)
@@ -82,6 +108,7 @@ module Picnic
82
108
 
83
109
  WEBrick::Daemon.start do
84
110
  begin
111
+ #self.init_db_logger
85
112
  write_pid_file if $PID_FILE
86
113
  $LOG.info "Starting #{self} as a WEBrick daemon with process id #{Process.pid}."
87
114
  self.prestart if self.respond_to? :prestart
@@ -94,7 +121,7 @@ module Picnic
94
121
  end
95
122
  end
96
123
  else
97
- puts "\n** #{self} is running at http://#{ENV['HOSTNAME'] || 'localhost'}:#{Picnic::Conf.port}#{Picnic::Conf.uri_path} and logging to #{Picnic::Conf.log[:file].inspect}\n\n"
124
+ puts "\n** #{self} is running at #{server_url} and logging to #{Picnic::Conf.log[:file].inspect}\n\n"
98
125
  self.prestart if self.respond_to? :prestart
99
126
  s.start
100
127
  end
@@ -218,7 +245,7 @@ module Picnic
218
245
  def check_log_writable
219
246
  log_file = Picnic::Conf.log['file']
220
247
  begin
221
- f = open(log_file, 'w')
248
+ f = open(log_file, 'a')
222
249
  rescue
223
250
  $stderr.puts "Couldn't write to log file at '#{log_file}' (#{$!})."
224
251
  exit 1
@@ -2,7 +2,7 @@ module Picnic #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 6
5
- TINY = 3
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/picnic.rb CHANGED
@@ -46,12 +46,15 @@ class Module
46
46
 
47
47
  # Initialize your application's database logger.
48
48
  # If enabled, all SQL queries going through ActiveRecord will be logged here.
49
+ #
50
+ # THIS SEEMS TO BE BROKEN RIGHT NOW and I can't really understand why.
49
51
  def init_db_logger
50
52
  begin
51
53
  if self::Conf.db_log
52
54
  log_file = self::Conf.db_log[:file] || "#{self.to_s.downcase}_db.log"
53
- self::Models::Base.logger = Logger.new(log_file)
54
- self::Models::Base.logger.level = "#{self}::Utils::Logger::#{self::Conf.db_log[:level] || 'DEBUG'}".constantize
55
+ self::Models::Base.logger = Picnic::Utils::Logger.new(log_file)
56
+ self::Models::Base.logger.level = "Picnic::Utils::Logger::#{self::Conf.db_log[:level] || 'DEBUG'}".constantize
57
+ $LOG.debug "Logging database queries to #{log_file.inspect}"
55
58
  end
56
59
  rescue Errno::EACCES => e
57
60
  $LOG.warn "Can't write to database log file at '#{log_file}': #{e}"
@@ -1,3 +1,15 @@
1
+ = Patches
2
+ === 31st Mar, 2008
3
+
4
+ * Can now set expiry time for cookies.
5
+
6
+ @cookies[:foo] = {:value => "bar", :expires => Time.now + 1.hour}
7
+
8
+ The simple method of setting cookies without expiry still works.
9
+
10
+ @cookies[:foo] = "bar"
11
+
12
+
1
13
  = 1.5
2
14
  === 3rd Oct, 2006
3
15
 
@@ -434,7 +434,9 @@ module Camping
434
434
  # on before and after overrides with Camping.
435
435
  def service(*a)
436
436
  @body = send(@method, *a) if respond_to? @method
437
- @headers['Set-Cookie'] = @cookies.map { |k,v| "#{k}=#{C.escape(v)}; path=#{self/"/"}" if v != @k[k] } - [nil]
437
+ @headers['Set-Cookie'] = @cookies.map { |k,v|
438
+ "#{k}=#{C.escape(v[:value] || v)}; path=#{self/"/"}; expires=#{v[:expires] && v[:expires].strftime('%a, %d-%b-%Y %H:%M:%S %Z') || nil}" if v != @k[k]
439
+ } - [nil]
438
440
  self
439
441
  end
440
442
 
@@ -25,8 +25,10 @@ o.binmode;else;fh=""end;while l=@in.read(16384);if l=~b;o<<$`.chomp;@in.seek(-$'
25
25
  size,IO::SEEK_CUR);break;end;o<<l;end;C.qsp(fn,'&;',fh,q) if fn;fh[:tempfile].rewind if
26
26
  fh.is_a?H;end;elsif@method=="post";q.u C.qsp(@in.read)end;@cookies,@input=
27
27
  @k.dup,q.dup end;def service*a;@body=send(@method,*a)if respond_to?@method
28
- @headers["Set-Cookie"]=@cookies.map{|k,v|"#{k}=#{C.escape(v)}; path=#{self/'/'
29
- }"if v!=@k[k]}-[nil];self end;def to_s;a=[];@headers.map{|k,v|[*v].map{|x|a<<
28
+ @headers["Set-Cookie"]=@cookies.map{|k,v|"#{k}=#{C.escape(v[:value] || v)
29
+ }; path=#{self/'/'}; expires=#{v[:expires] &&
30
+ v[:expires].strftime('%a, %d-%b-%Y %H:%M:%S %Z') || nil}"if v!=@k[k]}-[nil];
31
+ self end;def to_s;a=[];@headers.map{|k,v|[*v].map{|x|a<<
30
32
  "#{k}: #{x}"}};"Status: #{@status}#{Z+a*Z+Z*2+@body}"end;end
31
33
  X=module Controllers;@r=[];class<<self;def r;@r;end;def R*u;r=@r;Class.new{
32
34
  meta_def(:urls){u};meta_def(:inherited){|x|r<<x}}end;def M;def M;end;constants.map{|c|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: picnic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zukowski
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-14 00:00:00 -04:00
12
+ date: 2008-05-26 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency