sbsm 1.4.5 → 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/History.txt +6 -0
 - data/lib/sbsm/admin_server.rb +2 -2
 - data/lib/sbsm/app.rb +3 -1
 - data/lib/sbsm/logger.rb +0 -0
 - data/lib/sbsm/session.rb +4 -3
 - data/lib/sbsm/session_store.rb +19 -16
 - data/lib/sbsm/state.rb +0 -0
 - data/lib/sbsm/user.rb +0 -0
 - data/lib/sbsm/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 60f4a61bb07708b12676dc908a0de85f373c5b17
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 496054938b87a49afb78c8269edc3ec77c1e6a19
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3e048c7a06458e3327852f4a9a9a582fd44a476f8385a491c77352f54da1471de42d59968be3381b583587b097f5b964db12cfc063f50c64aa889a1212c51926
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a4eb100131a6255fbe1c8fd0448d27ad061d70f3e33f9b5fbaa957f6b235bdfc984dfe74bd81397d55de8df8b320446c8e174f7aad735dae2cfc83cd778a560c
         
     | 
    
        data/History.txt
    CHANGED
    
    
    
        data/lib/sbsm/admin_server.rb
    CHANGED
    
    | 
         @@ -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 
     | 
| 
      
 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
         
     | 
    
        data/lib/sbsm/session_store.rb
    CHANGED
    
    | 
         @@ -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( 
     | 
| 
      
 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 =  
     | 
| 
      
 81 
     | 
    
         
            +
                    sorted = @@sessions.values.sort
         
     | 
| 
       81 
82 
     | 
    
         
             
                    sorted[0...(-self::class::MAX_SESSIONS)].each { |sess|
         
     | 
| 
       82 
83 
     | 
    
         
             
                      sess.__checkout
         
     | 
| 
       83 
     | 
    
         
            -
                       
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
      
 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 =  
     | 
| 
      
 120 
     | 
    
         
            +
                  if(sess = @@sessions.delete(key))
         
     | 
| 
       118 
121 
     | 
    
         
             
                    sess.__checkout
         
     | 
| 
       119 
122 
     | 
    
         
             
                  end
         
     | 
| 
       120 
123 
     | 
    
         
             
                end
         
     | 
| 
       121 
124 
     | 
    
         
             
                def reset
         
     | 
| 
       122 
     | 
    
         
            -
                   
     | 
| 
       123 
     | 
    
         
            -
                     
     | 
| 
      
 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 
     | 
    
         
            -
                       
     | 
| 
      
 136 
     | 
    
         
            +
                      @@mutex.synchronize do
         
     | 
| 
       134 
137 
     | 
    
         
             
                        clean()
         
     | 
| 
       135 
138 
     | 
    
         
             
                      end
         
     | 
| 
       136 
139 
     | 
    
         
             
                    end
         
     | 
| 
       137 
140 
     | 
    
         
             
                  end
         
     | 
| 
       138 
141 
     | 
    
         
             
                end
         
     | 
| 
       139 
142 
     | 
    
         
             
                def [](key)
         
     | 
| 
       140 
     | 
    
         
            -
                   
     | 
| 
       141 
     | 
    
         
            -
                    unless((s =  
     | 
| 
       142 
     | 
    
         
            -
                      s =  
     | 
| 
      
 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
    
    
    
        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. 
     | 
| 
      
 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- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-06-21 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rack
         
     |