sbsm 1.4.5 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c931f28d24233cb0c46c2f1e6341a8a451037918
4
- data.tar.gz: abfdbcc5d3464f7ae2eeab161eaf02319f70e568
3
+ metadata.gz: 60f4a61bb07708b12676dc908a0de85f373c5b17
4
+ data.tar.gz: 496054938b87a49afb78c8269edc3ec77c1e6a19
5
5
  SHA512:
6
- metadata.gz: c7f94a54e9f0e73fd5ad64747720302448c12717665a94f8c769f041a987b8a86ef1ce9967ef9932f1a758aedfec4d30fea6a3d1bff94cd93b18d378469fc918
7
- data.tar.gz: 57e179ccda3ea1eb5053992b71311f939aee63a72db164d761ff128ac13823d1d1c90140461454974399e00f1ddad4734cfc1533bbc145ea95ab82321a5a7b36
6
+ metadata.gz: 3e048c7a06458e3327852f4a9a9a582fd44a476f8385a491c77352f54da1471de42d59968be3381b583587b097f5b964db12cfc063f50c64aa889a1212c51926
7
+ data.tar.gz: a4eb100131a6255fbe1c8fd0448d27ad061d70f3e33f9b5fbaa957f6b235bdfc984dfe74bd81397d55de8df8b320446c8e174f7aad735dae2cfc83cd778a560c
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 1.4.6 / 21.06.2017
2
+
3
+ * Added SessionStore.clear
4
+ * Added reader unknown_user and session_store
5
+ * Admin server is now multi_threaded by default
6
+
1
7
  === 1.4.5 / 13.06.2017
2
8
 
3
9
  * Fix unknown_user if passing a class and not an instance of it
@@ -37,8 +37,8 @@ require 'sbsm/session_store'
37
37
  module SBSM
38
38
  # AdminClass must be tied to an Rack app
39
39
  class AdminServer
40
- def initialize(app:)
41
- @session = SBSM::SessionStore.new(app: app)
40
+ def initialize(app:, multi_threaded: false)
41
+ @session = SBSM::SessionStore.new(app: app, multi_threaded: multi_threaded)
42
42
  @admin_threads = ThreadGroup.new
43
43
  end
44
44
  def _admin(src, result, priority=0)
data/lib/sbsm/app.rb CHANGED
@@ -35,6 +35,7 @@ module SBSM
35
35
  ###
36
36
  # App as a member of session
37
37
  class App
38
+ attr_reader :unknown_user
38
39
 
39
40
  def initialize()
40
41
  SBSM.info "initialize"
@@ -43,6 +44,7 @@ module SBSM
43
44
 
44
45
  class RackInterface
45
46
  attr_accessor :session # thread variable!
47
+ attr_reader :session_store, :unknown_user
46
48
  SESSION_ID = '_session_id'
47
49
 
48
50
  # Base class for a SBSM based WebRick HTTP server
@@ -84,6 +86,7 @@ module SBSM
84
86
  unknown_user: unknown_user,
85
87
  validator: validator,
86
88
  multi_threaded: multi_threaded)
89
+ @unknown_user = unknown_user
87
90
  end
88
91
 
89
92
  def last_session
@@ -143,7 +146,6 @@ module SBSM
143
146
  response.set_cookie(key, { :value => value, :path => '/' })
144
147
  end
145
148
  response.set_cookie(SESSION_ID, { :value => session_id, :path => '/' }) unless request.cookies[SESSION_ID]
146
-
147
149
  # response.set_cookie(SBSM::Session.get_cookie_name, session_id)
148
150
  @@last_session = session
149
151
  if response.headers['Set-Cookie'].to_s.index(session_id)
data/lib/sbsm/logger.rb CHANGED
File without changes
data/lib/sbsm/session.rb CHANGED
@@ -31,6 +31,7 @@ require 'sbsm/cgi'
31
31
  require 'sbsm/state'
32
32
  require 'sbsm/user'
33
33
  require 'sbsm/lookandfeelfactory'
34
+ require 'sbsm/trans_handler'
34
35
  require 'delegate'
35
36
 
36
37
  module SBSM
@@ -571,16 +572,16 @@ module SBSM
571
572
  # nothing
572
573
  end
573
574
  def delete
574
- @app.delete_session @key
575
+ @app.delete_session(@key)
575
576
  end
576
577
  def zone
577
- @valid_input[:zone] || @state.zone || self::class::DEFAULT_ZONE
578
+ @valid_input[:zone] || (@state && @state.zone) || self::class::DEFAULT_ZONE
578
579
  end
579
580
  def zones
580
581
  @active_state.zones
581
582
  end
582
583
  def zone_navigation
583
- @state.zone_navigation
584
+ @state.zone_navigation if @state
584
585
  end
585
586
  def ==(other)
586
587
  super
@@ -33,6 +33,7 @@ require 'thread'
33
33
  require 'digest/md5'
34
34
  require 'sbsm/logger'
35
35
  require 'sbsm/validator'
36
+ require 'sbsm/session_store'
36
37
 
37
38
  module SBSM
38
39
  #
@@ -49,6 +50,8 @@ module SBSM
49
50
  UNKNOWN_USER = UnknownUser
50
51
  VALIDATOR = nil
51
52
  attr_reader :cleaner, :updater, :persistence_layer
53
+ @@mutex = Mutex.new
54
+ @@sessions = {}
52
55
  def initialize(app:,
53
56
  persistence_layer: nil,
54
57
  trans_handler: nil,
@@ -58,8 +61,6 @@ module SBSM
58
61
  unknown_user: UNKNOWN_USER.new,
59
62
  multi_threaded: nil)
60
63
  fail "You must specify an app!" unless app
61
- @sessions = {}
62
- @mutex = Mutex.new
63
64
  @cleaner = run_cleaner if(self.class.const_get(:RUN_CLEANER))
64
65
  @app = app
65
66
  @system = persistence_layer
@@ -74,13 +75,13 @@ module SBSM
74
75
  @validator = validator
75
76
  end
76
77
  def cap_max_sessions(now = Time.now)
77
- if(@sessions.size > self::class::CAP_MAX_THRESHOLD)
78
+ if(@@sessions.size > self::class::CAP_MAX_THRESHOLD)
78
79
  SBSM.info "too many sessions! Keeping only #{self::class::MAX_SESSIONS}"
79
80
  sess = nil
80
- sorted = @sessions.values.sort
81
+ sorted = @@sessions.values.sort
81
82
  sorted[0...(-self::class::MAX_SESSIONS)].each { |sess|
82
83
  sess.__checkout
83
- @sessions.delete(sess.key)
84
+ @@sessions.delete(sess.key)
84
85
  }
85
86
  if(sess)
86
87
  age = sess.age(now)
@@ -90,7 +91,7 @@ module SBSM
90
91
  end
91
92
  def clean
92
93
  now = Time.now
93
- @sessions.delete_if { |key, s|
94
+ @@sessions.delete_if { |key, s|
94
95
  begin
95
96
  if s.respond_to?(:expired?)
96
97
  if s.expired?(now)
@@ -109,18 +110,20 @@ module SBSM
109
110
  }
110
111
  #cap_max_sessions(now)
111
112
  end
112
- def clear
113
- @sessions.each_value { |sess| sess.__checkout }
114
- @sessions.clear
113
+ def SessionStore.clear
114
+ @@mutex.synchronize do
115
+ @@sessions.each_value { |sess| sess.__checkout }
116
+ @@sessions.clear
117
+ end
115
118
  end
116
119
  def delete_session(key)
117
- if(sess = @sessions.delete(key))
120
+ if(sess = @@sessions.delete(key))
118
121
  sess.__checkout
119
122
  end
120
123
  end
121
124
  def reset
122
- @mutex.synchronize {
123
- @sessions.clear
125
+ @@mutex.synchronize {
126
+ @@sessions.clear
124
127
  }
125
128
  end
126
129
  def run_cleaner
@@ -130,16 +133,16 @@ module SBSM
130
133
  #Thread.current.priority = 1
131
134
  loop do
132
135
  sleep self::class::CLEANING_INTERVAL
133
- @mutex.synchronize do
136
+ @@mutex.synchronize do
134
137
  clean()
135
138
  end
136
139
  end
137
140
  end
138
141
  end
139
142
  def [](key)
140
- @mutex.synchronize do
141
- unless((s = @sessions[key]) && !s.expired?)
142
- s = @sessions[key] = @session_class.new(app: @app, cookie_name: @cookie_name, trans_handler: @trans_handler, validator: @validator, unknown_user: @unknown_user)
143
+ @@mutex.synchronize do
144
+ unless((s = @@sessions[key]) && !s.expired?)
145
+ s = @@sessions[key] = @session_class.new(app: @app, cookie_name: @cookie_name, trans_handler: @trans_handler, validator: @validator, unknown_user: @unknown_user)
143
146
  end
144
147
  s.reset()
145
148
  s.touch()
data/lib/sbsm/state.rb CHANGED
File without changes
data/lib/sbsm/user.rb CHANGED
File without changes
data/lib/sbsm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SBSM
2
- VERSION = '1.4.5'
2
+ VERSION = '1.4.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sbsm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaomi Hatakeyama, Zeno R.R. Davatz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-19 00:00:00.000000000 Z
11
+ date: 2017-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack