rsence 2.0.9.23 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/INSTALL.rdoc +61 -49
  2. data/README.rdoc +20 -4
  3. data/VERSION +1 -1
  4. data/conf/default_conf.yaml +8 -0
  5. data/conf/rsence_command_strings.yaml +31 -20
  6. data/docs/ExampleGuiPlugin.rdoc +2 -2
  7. data/js/comm/comm.js +27 -5
  8. data/js/comm/transporter/transporter.js +1 -1
  9. data/js/comm/values/values.js +12 -5
  10. data/js/controls/button/button.js +12 -2
  11. data/js/controls/dialogs/alert_sheet/alert_sheet.js +13 -1
  12. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +13 -2
  13. data/js/controls/dialogs/sheet/sheet.js +35 -28
  14. data/js/controls/imageview/imageview.js +13 -13
  15. data/js/controls/progress/progressindicator/progressindicator.js +5 -5
  16. data/js/controls/sliders/slider/slider.js +4 -31
  17. data/js/controls/stepper/stepper.js +12 -19
  18. data/js/controls/textcontrol/textcontrol.js +0 -50
  19. data/js/controls/textcontrol/themes/default/textcontrol.html +1 -1
  20. data/js/controls/window/window.js +1 -1
  21. data/js/core/elem/elem.js +146 -160
  22. data/js/core/rsence_ns/rsence_ns.js +7 -0
  23. data/js/foundation/control/eventresponder/eventresponder.js +8 -7
  24. data/js/foundation/eventmanager/eventmanager.js +81 -48
  25. data/js/foundation/geom/rect/rect.js +1 -1
  26. data/js/foundation/json_renderer/json_renderer.js +4 -1
  27. data/js/foundation/system/system.js +37 -34
  28. data/js/foundation/view/morphanimation/morphanimation.js +53 -43
  29. data/js/foundation/view/view.js +119 -118
  30. data/js/lists/listitems/listitems.js +10 -10
  31. data/js/lists/propertylist/js.inc +0 -0
  32. data/js/lists/propertylist/propertylist.js +574 -0
  33. data/js/lists/propertylist/propertylisteditor/js.inc +0 -0
  34. data/js/lists/propertylist/propertylisteditor/propertylisteditor.js +233 -0
  35. data/js/lists/radiobuttonlist/radiobuttonlist.js +15 -8
  36. data/js/menus/minimenu/js.inc +0 -0
  37. data/js/menus/minimenu/minimenu.js +139 -0
  38. data/js/menus/minimenu/minimenuitem/js.inc +0 -0
  39. data/js/menus/minimenu/minimenuitem/minimenuitem.js +33 -0
  40. data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem.css +45 -0
  41. data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem.html +4 -0
  42. data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem_checkmark.png +0 -0
  43. data/js/menus/minimenu/themes/default/minimenu.css +63 -0
  44. data/js/menus/minimenu/themes/default/minimenu.html +7 -0
  45. data/js/menus/minimenu/themes/default/minimenu.png +0 -0
  46. data/js/util/reloadapp/reloadapp.js +1 -1
  47. data/lib/conf/argv.rb +40 -11
  48. data/lib/daemon/daemon.rb +63 -22
  49. data/lib/plugins/gui_plugin.rb +28 -31
  50. data/lib/plugins/guiparser.rb +37 -7
  51. data/lib/plugins/plugin.rb +260 -28
  52. data/lib/plugins/plugin_base.rb +14 -0
  53. data/lib/plugins/plugin_plugins.rb +11 -1
  54. data/lib/plugins/pluginmanager.rb +127 -44
  55. data/lib/plugins/plugins.rb +10 -1
  56. data/lib/session/msg.rb +25 -1
  57. data/lib/session/sessionmanager.rb +11 -2
  58. data/lib/session/sessionstorage.rb +14 -14
  59. data/lib/transporter/transporter.rb +29 -13
  60. data/lib/values/hvalue.rb +30 -0
  61. data/plugins/client_pkg/info.yaml +2 -2
  62. data/plugins/{index_html → main}/img/loading.gif +0 -0
  63. data/plugins/{index_html → main}/img/riassence.gif +0 -0
  64. data/plugins/main/info.yaml +5 -4
  65. data/plugins/main/main.rb +180 -24
  66. data/plugins/{index_html → main}/tmpl/index.html +4 -2
  67. data/plugins/ticket/info.yaml +2 -2
  68. data/plugins/ticket/lib/upload.rb +57 -5
  69. data/plugins/ticket/ticket.rb +10 -4
  70. data/setup/welcome/info.yaml +2 -2
  71. data/setup/welcome/text/welcome.html +1 -1
  72. metadata +22 -11
  73. data/plugins/index_html/index_html.rb +0 -120
  74. data/plugins/index_html/info.yaml +0 -18
@@ -23,9 +23,21 @@ module RSence
23
23
 
24
24
  attr_reader :transporter, :sessions
25
25
 
26
+ @@incr = 0
27
+ def incr
28
+ return @@incr
29
+ end
30
+
26
31
  # Returns the registry data for plugin bundle +plugin_name+
27
- def registry( plugin_name )
28
- return @registry[ plugin_name ]
32
+ def registry( plugin_name=false )
33
+ return @registry unless plugin_name
34
+ if @registry.has_key?( plugin_name )
35
+ return @registry[ plugin_name ]
36
+ elsif @parent_manager
37
+ return @parent_manager.registry( plugin_name )
38
+ else
39
+ throw "Plugin not in registry: #{plugin_name.inspect}"
40
+ end
29
41
  end
30
42
  alias [] registry
31
43
 
@@ -37,6 +49,8 @@ module RSence
37
49
  elsif block == nil
38
50
  call( sym, *args )
39
51
  end
52
+ elsif @parent_manager
53
+ return @parent_manager.method_missing( sym, *args, &block )
40
54
  end
41
55
  end
42
56
 
@@ -63,11 +77,27 @@ module RSence
63
77
  inst.init if inst.respond_to? :init and not inst.inited
64
78
  @registry[ bundle_name ] = inst
65
79
  if inst.respond_to?( :match ) and ( inst.respond_to?( :get ) or inst.respond_to?( :post ) )
66
- @servlets.push( bundle_name )
80
+ add_servlet( bundle_name )
67
81
  end
68
82
  end
69
83
  end
70
84
 
85
+ def add_servlet( bundle_name )
86
+ if @parent_manager
87
+ sub_name = "#{@name_prefix.to_s}:#{bundle_name.to_s}"
88
+ @parent_manager.add_servlet( sub_name )
89
+ end
90
+ @servlets.push( bundle_name )
91
+ end
92
+
93
+ def del_servlet( bundle_name )
94
+ if @parent_manager
95
+ sub_name = "#{@name_prefix.to_s}:#{bundle_name.to_s}"
96
+ @parent_manager.del_servlet( sub_name )
97
+ end
98
+ @servlets.delete( bundle_name )
99
+ end
100
+
71
101
  def callable?( plugin_name, method_name )
72
102
  return false if @deps.category?( plugin_name )
73
103
  return false unless @registry.has_key?( plugin_name )
@@ -79,6 +109,20 @@ module RSence
79
109
  # Calls the method +method_name+ with args +args+ of the plugin +plugin_name+.
80
110
  # Returns false, if no such plugin or method exists.
81
111
  def call( plugin_name, method_name, *args )
112
+ puts "#{plugin_name}.#{method_name}" if RSence.args[:trace_delegate]
113
+ plugin_name_s = plugin_name.to_s
114
+ if plugin_name_s.include?(':')
115
+ colon_index = plugin_name_s.index(':')
116
+ sub_manager_name = plugin_name_s[0..(colon_index-1)].to_sym
117
+ plugin_name = plugin_name_s[(colon_index+1)..-1].to_sym
118
+ if @registry.has_key?( sub_manager_name )
119
+ sub_manager = @registry[sub_manager_name]
120
+ if sub_manager.respond_to?( :plugin_plugins )
121
+ return sub_manager.plugin_plugins.call( plugin_name, method_name, *args )
122
+ end
123
+ end
124
+ return false
125
+ end
82
126
  plugin_name = plugin_name.to_sym
83
127
  if callable?( plugin_name, method_name )
84
128
  begin
@@ -94,7 +138,7 @@ module RSence
94
138
  elsif @deps.category?( plugin_name )
95
139
  warn "Warning! Tried to call category: #{plugin_name.inpsect}"
96
140
  elsif not @registry.has_key?( plugin_name )
97
- warn "Warning! No such plugin: #{plugin_name.inspect}"
141
+ warn "Warning (#{@pluginmanager_id})! No such plugin: #{plugin_name.inspect} (tried to call #{method_name.inspect[0..100]} using args: #{args.inspect[0..100]}"
98
142
  elsif not @registry[ plugin_name ].respond_to?( method_name )
99
143
  warn "Warning! Plugin: #{plugin_name.inspect} does not respond to #{method_name.inspect}"
100
144
  end
@@ -103,6 +147,7 @@ module RSence
103
147
  alias run_plugin call
104
148
 
105
149
  # Prettier error handling.
150
+ @@prev_errors = []
106
151
  def plugin_error( e, err_location, err_location_descr, eval_repl=false )
107
152
  err_msg = [
108
153
  "*"*40,
@@ -113,6 +158,12 @@ module RSence
113
158
  "\t"+e.backtrace.join("\n\t"),
114
159
  "*"*40
115
160
  ].join("\n")+"\n"
161
+ error_say = "Error! #{err_location_descr.capitalize}. #{e.class.to_s}, #{e.message}?"
162
+ unless @@prev_errors.include?( error_say )
163
+ @@prev_errors.push( error_say )
164
+ say error_say
165
+ end
166
+ @@prev_errors.shift if @@prev_errors.length > 10
116
167
  if eval_repl
117
168
  puts
118
169
  puts "plugin: #{eval_repl}"
@@ -126,21 +177,10 @@ module RSence
126
177
  def match_servlet_uri( uri, req_type=:get )
127
178
  match_score = {}
128
179
  @servlets.each do | servlet_name |
129
- servlet = @registry[ servlet_name ]
130
- next unless servlet.respond_to?( req_type )
131
- begin
132
- if servlet.match( uri, req_type )
133
- score = servlet.score
134
- match_score[ score ] = [] unless match_score.has_key? score
135
- match_score[ score ].push( servlet_name )
136
- end
137
- rescue => e
138
- plugin_error(
139
- e,
140
- "RSence::PluginManager.match_servlet_uri",
141
- "servlet: #{servlet_name.inspect}, req_type: #{req_type.inspect}, uri: #{uri.inspect}",
142
- servlet_name
143
- )
180
+ if call( servlet_name, :match, uri, req_type )
181
+ score = call( servlet_name, :score )
182
+ match_score[ score ] = [] unless match_score.has_key? score
183
+ match_score[ score ].push( servlet_name )
144
184
  end
145
185
  end
146
186
  match_scores = match_score.keys.sort
@@ -172,7 +212,7 @@ module RSence
172
212
  return false unless matches_order
173
213
  matches_order.each do |servlet_name|
174
214
  begin
175
- @registry[servlet_name].send( req_type, req, resp, session )
215
+ call( servlet_name, req_type, req, resp, session )
176
216
  return true
177
217
  rescue => e
178
218
  plugin_error(
@@ -206,7 +246,11 @@ module RSence
206
246
  # Delegates the +flush+ and +close+ methods to any
207
247
  # loaded plugins, in that order.
208
248
  def shutdown
209
- @transporter.online = false
249
+ if @parent_manager
250
+ @closed = true
251
+ else
252
+ @transporter.online = false
253
+ end
210
254
  @deps.list.reverse.each do |bundle_name|
211
255
  unload_bundle( bundle_name )
212
256
  end
@@ -221,9 +265,10 @@ module RSence
221
265
  end
222
266
  if is_dir
223
267
  Dir.entries( bundle_path ).each do |entry_name|
224
- next if entry_name[0].chr == '.'
268
+ next if entry_name[0].chr == '.' # skip hidden, '.' and '..'
225
269
  full_path = File.join( bundle_path, entry_name )
226
270
  unless File.directory?( full_path )
271
+ next if entry_name == 'plugins' # skip sub-plugins
227
272
  has_dot = entry_name.include?('.')
228
273
  next unless has_dot
229
274
  is_src_file = ['yaml','rb'].include?( entry_name.split('.')[-1] )
@@ -255,7 +300,7 @@ module RSence
255
300
 
256
301
  # System version requirement.
257
302
  # NOTE: Has no effect yet!
258
- :sys_version => '>= 1.0.0',
303
+ :sys_version => '>= 2.0.0',
259
304
 
260
305
  # Dependency, by default the system category (built-in plugins).
261
306
  # A nil ( "~" in yaml ) value means no dependencies.
@@ -270,7 +315,10 @@ module RSence
270
315
 
271
316
  # Optional, reverse dependency. Loads before the prepended plugin(category).
272
317
  # NOTE: Doesn't support packages yet!
273
- :prepends => nil
318
+ :prepends => nil,
319
+
320
+ # Name of plugin manager, so the bundle internals know what its path is.
321
+ :manager => @name_prefix
274
322
 
275
323
  }
276
324
 
@@ -281,7 +329,7 @@ module RSence
281
329
  info_yaml.each do |info_key,info_value|
282
330
  info[ info_key.to_sym ] = info_value
283
331
  end
284
- else
332
+ elsif RSence.args[:debug]
285
333
  warn "Expected info.yaml, using defaults:"
286
334
  warn " #{info_path}"
287
335
  end
@@ -425,6 +473,7 @@ module RSence
425
473
  if bundle_status
426
474
  (bundle_path, src_file) = bundle_status
427
475
  unless disabled?( bundle_path )
476
+ # bundle_name = "#{@name_prefix.to_s}.#{bundle_name}" if @name_prefix
428
477
  bundles_found.push( [bundle_path, bundle_name.to_sym, src_file] )
429
478
  end
430
479
  end
@@ -441,8 +490,10 @@ module RSence
441
490
  end
442
491
  puts "Unloading bundle: #{bundle_name.inspect}" if RSence.args[:debug]
443
492
  @deps.del_item( bundle_name )
444
- online_status = @transporter.online?
445
- @transporter.online = false
493
+ if @transporter
494
+ online_status = @transporter.online?
495
+ @transporter.online = false
496
+ end
446
497
  call( bundle_name, :flush )
447
498
  call( bundle_name, :close )
448
499
  @registry.delete( bundle_name )
@@ -452,12 +503,12 @@ module RSence
452
503
  end
453
504
  end
454
505
  if @servlets.include?( bundle_name )
455
- @servlets.delete( bundle_name )
506
+ del_servlet( bundle_name )
456
507
  end
457
508
  if @info.include?( bundle_name )
458
509
  @info.delete( bundle_name )
459
510
  end
460
- @transporter.online = online_status
511
+ @transporter.online = online_status if @transporter
461
512
  return unload_order
462
513
  end
463
514
  end
@@ -477,7 +528,7 @@ module RSence
477
528
  if RSence.args[:say]
478
529
  Thread.new do
479
530
  Thread.pass
480
- system(%{say "#{message.gsub('"','')}"})
531
+ system(%{say "#{message.gsub('"',"'").gsub('`',"'")}"})
481
532
  end
482
533
  end
483
534
  end
@@ -564,6 +615,8 @@ module RSence
564
615
  puts "done!" if RSence.args[:verbose]
565
616
  end
566
617
  if not (to_load.empty? and to_unload.empty? and to_reload.empty?)
618
+ @@incr += 1
619
+ puts "@@incr: #{@@incr}" if RSence.args[:debug]
567
620
  puts "Plugin bundles:"
568
621
  puts " loaded: #{to_load.join(', ')}" unless to_load.empty?
569
622
  puts " unloaded: #{to_unload.join(', ')}" unless to_unload.empty?
@@ -582,25 +635,52 @@ module RSence
582
635
  update_bundles!
583
636
  end
584
637
 
638
+ attr_reader :transporter
639
+ attr_reader :sessions
640
+ attr_reader :autoreload
641
+ attr_reader :name_prefix
642
+ attr_reader :plugin_paths
643
+ attr_reader :parent_manager
644
+
645
+ @@pluginmanager_id = 0
585
646
  # Initialize with a list of directories as plugin_paths.
586
647
  # It's an array containing all plugin directories to scan.
587
- def initialize( plugin_paths, transporter=nil,
588
- autoreload=false, name_prefix=false,
589
- resolved_deps=[], resolved_categories={} )
590
- if transporter
591
- @transporter = transporter
592
- @sessions = transporter.sessions
593
- end
594
- @name_prefix = name_prefix
595
- @plugin_paths = plugin_paths
596
- @deps = Dependencies.new( resolved_deps, resolved_categories )
597
- puts "Loading #{name_prefix+' ' if name_prefix}plugins..." if RSence.args[:verbose]
648
+ def initialize( options )
649
+
650
+ options = {
651
+ :plugin_paths => nil,
652
+ :transporter => nil,
653
+ :autoreload => false,
654
+ :name_prefix => false,
655
+ :resolved_deps => [],
656
+ :resolved_categories => {},
657
+ :parent_manager => nil
658
+ }.merge( options )
659
+
660
+ @pluginmanager_id = @@pluginmanager_id
661
+ @@pluginmanager_id += 1
662
+
663
+ @closed = false
664
+ @plugin_paths = options[:plugin_paths]
665
+
666
+ if options[:transporter]
667
+ @transporter = options[:transporter]
668
+ @sessions = options[:transporter].sessions
669
+ end
670
+
671
+ @autoreload = options[:autoreload]
672
+ @name_prefix = options[:name_prefix]
673
+ @parent_manager = options[:parent_manager]
674
+
675
+ @deps = Dependencies.new( options[:resolved_deps], options[:resolved_categories] )
676
+
677
+ puts "Loading #{@name_prefix.to_s+' ' if @name_prefix}plugins..." if RSence.args[:verbose]
598
678
  init_bundles!
599
- puts %{Plugins #{"of #{name_prefix} " if name_prefix}loaded.} if RSence.args[:verbose]
600
- if autoreload
679
+ puts %{Plugins #{"of #{@name_prefix} " if @name_prefix}loaded.} if RSence.args[:verbose]
680
+ if @autoreload
601
681
  @thr = Thread.new do
602
682
  Thread.pass
603
- while true
683
+ until @closed
604
684
  begin
605
685
  update_bundles!
606
686
  rescue => e
@@ -608,9 +688,12 @@ module RSence
608
688
  end
609
689
  sleep 3
610
690
  end
691
+ puts "No longer reloading plugins of #{@name_prefix}." if RSence.args[:verbose]
611
692
  end
612
693
  end
694
+
613
695
  end
696
+
614
697
  end
615
698
  end
616
699
 
@@ -123,7 +123,7 @@ module RSence
123
123
  path = File.expand_path( path, _bundle_path )
124
124
  return path
125
125
  end
126
- def self.inspect; "#<module BundleWrapper of #{@@bundle_name}}>"; end
126
+ def self.inspect; "#<module BundleWrapper of #{self._bundle_path}}>"; end
127
127
  def self.const_missing( name )
128
128
  if name == :Servlet
129
129
  return Plugins.Servlet.call( self )
@@ -142,6 +142,15 @@ module RSence
142
142
  plugin_src = "_bundle_path = #{params[:bundle_path].inspect};" + plugin_src
143
143
  end
144
144
  m.module_eval( plugin_src )
145
+ rescue SyntaxError => e
146
+ src_path = params[:src_path]
147
+ src_path = "<undefined src_path>" if src_path == nil
148
+ params[:plugin_manager].plugin_error(
149
+ e,
150
+ 'BundleLoaderSyntaxError',
151
+ "The syntax of #{params[:bundle_name]} is invalid.",
152
+ src_path
153
+ )
145
154
  rescue => e
146
155
  src_path = params[:src_path]
147
156
  src_path = "<undefined src_path>" if src_path == nil
data/lib/session/msg.rb CHANGED
@@ -174,13 +174,37 @@ module RSence
174
174
  def user_id
175
175
  @session[:user_id]
176
176
  end
177
-
177
+
178
+ # Getter for the user info hash
179
+ # @return [Hash] The current user info hash. Returns {} by default.
180
+ def user_info
181
+ @session[:user_info] = {} unless @session.has_key?(:user_info)
182
+ @session[:user_info]
183
+ end
184
+
185
+ # @private used for automatic reload of page, when the plugins have been changed.
186
+ def refresh_page?( plugin_incr )
187
+ if plugin_incr != @session[:plugin_incr]
188
+ puts "@session[:plugin_incr] = #{@session[:plugin_incr].inspect} vs plugin_incr = #{plugin_incr.inspect}" if RSence.args[:debug]
189
+ @session[:plugin_incr] = plugin_incr
190
+ return true
191
+ end
192
+ return false
193
+ end
194
+
178
195
  # Setter for the user id
179
196
  # @param [Number, String] user_id The user id to set. Use in login situations to store the user id.
180
197
  # @return [nil]
181
198
  def user_id=(user_id)
182
199
  @session[:user_id] = user_id
183
200
  end
201
+
202
+ # Setter for the user info
203
+ # @param [Hash] user_info The user info hash to set. Use in login situations to store the user information.
204
+ # @return [nil]
205
+ def user_info=(user_info)
206
+ @session[:user_info] = user_info
207
+ end
184
208
 
185
209
  # Returns the session id
186
210
  # @return [Number]
@@ -74,7 +74,9 @@ module RSence
74
74
 
75
75
  # the time, when the session will time out
76
76
  :timeout => timeout,
77
-
77
+
78
+ :plugin_incr => @plugins.incr,
79
+
78
80
  # session id, used internally
79
81
  :ses_id => ses_id,
80
82
 
@@ -86,6 +88,9 @@ module RSence
86
88
 
87
89
  # user id, map to your own user management code
88
90
  :user_id => 0,
91
+
92
+ # user info, map to your own user management code
93
+ :user_info => {},
89
94
 
90
95
  # valuemanager data
91
96
  :values => {
@@ -168,7 +173,7 @@ module RSence
168
173
  end
169
174
 
170
175
  def clone_ses( msg, old_data, old_id, old_key, ses_seed )
171
- ses_data = Marshal.restore( Marshal.dump( old_data ) )
176
+ ses_data = Marshal.load( Marshal.dump( old_data ) )
172
177
  old_data[:timeout] = Time.now.to_i + @config[:cloned_session_expires_in]
173
178
  timeout = Time.now.to_i + @config[:timeout_secs]
174
179
  cookie_key = @randgen.gen_many(@config[:cookie_key_multiplier]).join('')
@@ -177,6 +182,7 @@ module RSence
177
182
  ses_data[:timeout] = timeout
178
183
  ses_data[:ses_key] = ses_key
179
184
  ses_data[:cookie_key] = cookie_key
185
+ ses_data[:plugin_incr] = @plugins.incr
180
186
  ses_id = new_ses_id( cookie_key, ses_key, timeout )
181
187
  ses_data[:ses_id] = ses_id
182
188
  @sessions[ ses_id ] = ses_data
@@ -307,6 +313,9 @@ module RSence
307
313
 
308
314
  # binds the new cookie key to the old session data
309
315
  @sessions[ses_id][:cookie_key] = cookie_key
316
+
317
+
318
+ msg.session[:plugin_incr] = @plugins.incr
310
319
 
311
320
  # Sets the restored_session flag of msg to true
312
321
  # It signals plugins to re-set data
@@ -181,13 +181,6 @@ module RSence
181
181
  ## Used for future upgrades:
182
182
  # version = table_version
183
183
 
184
- if @config[:reset_sessions]
185
- puts "Resetting all sessions..."
186
- reset_sessions()
187
- else
188
- restore_sessions()
189
- end
190
-
191
184
  return true
192
185
  end
193
186
 
@@ -214,16 +207,22 @@ module RSence
214
207
  @db[:rsence_session].all do |ses_row|
215
208
  ses_id = ses_row[:id]
216
209
  ses_data_dump = ses_row[:ses_data]
217
-
210
+
218
211
  if ses_data_dump == nil
219
212
  @db[:rsence_session].filter(:id => ses_id).delete
220
213
  @db[:rsence_uploads].filter(:ses_id => ses_id).delete
221
214
  else
222
- ses_data = Marshal.restore( ses_data_dump )
223
- ses_key = ses_data[:ses_key]
224
- @sessions[ses_id] = ses_data
225
- @session_keys[ ses_key ] = ses_id
226
- @session_cookie_keys[ ses_data[:cookie_key] ] = ses_id
215
+ begin
216
+ ses_data = Marshal.load( ses_data_dump )
217
+ ses_key = ses_data[:ses_key]
218
+ @sessions[ses_id] = ses_data
219
+ @session_keys[ ses_key ] = ses_id
220
+ @session_cookie_keys[ ses_data[:cookie_key] ] = ses_id
221
+ rescue => e
222
+ warn "Unable to restore session id: #{ses_id}, error: #{e.inspect}"
223
+ @db[:rsence_session].filter(:id => ses_id).delete
224
+ @db[:rsence_uploads].filter(:ses_id => ses_id).delete
225
+ end
227
226
  end
228
227
  end
229
228
  db_close
@@ -297,7 +296,7 @@ module RSence
297
296
  @sessions.delete( ses_id )
298
297
 
299
298
  # Removes all ticket-based storage bound to the session
300
- @plugins[:ticketservices].expire_ses( ses_id ) if @plugins
299
+ @plugins[:ticket].expire_ses_id( ses_id ) if @plugins
301
300
 
302
301
  # target -> source cleanup
303
302
  if @clone_sources.has_key?( ses_id )
@@ -317,6 +316,7 @@ module RSence
317
316
  if @db_avail
318
317
  db_open
319
318
  # Deletes the session's row from the database
319
+ @db[:rsence_uploads].filter(:ses_id => ses_id).delete
320
320
  @db[:rsence_session].filter(:id => ses_id).delete
321
321
  db_close
322
322
  end