firebug 1.1.0 → 1.2.0
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 +5 -5
- data/.circleci/config.yml +8 -3
- data/.circleci/images/primary/Dockerfile +11 -2
- data/.ruby-version +1 -1
- data/README.md +2 -2
- data/firebug.gemspec +14 -14
- data/lib/action_dispatch/session/code_igniter_store.rb +7 -3
- data/lib/firebug.rb +1 -0
- data/lib/firebug/crypto.rb +12 -2
- data/lib/firebug/errors.rb +6 -0
- data/lib/firebug/serializer.rb +2 -2
- data/lib/firebug/string_io_reader.rb +16 -0
- data/lib/firebug/unserializer.rb +26 -46
- data/lib/firebug/version.rb +1 -1
- metadata +45 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8fbd5a9dfb24f6bda1c0a1f14541a19874ce2ba4947dfe9942968df5d95ce612
|
4
|
+
data.tar.gz: 20cba9c06d691fdc45f397d458b638b5313f6fedf445ef42ef1f805df9cd8751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b055339ae79941d211791a4248fbdf88a3a1190ef214abb7e8e5d2d846e6075b662f104ee2e888f56302229146176d65fc658cd2944c6df8b24d0d0791b1d022
|
7
|
+
data.tar.gz: d3dec6a39184d14ab579e1c286cd792100943b8e58a52a89b4237b3d6e0482653886840de227035b0feaf3019b38a81b1deb9cfba9a042ffe5eb1aeb0d8b362f
|
data/.circleci/config.yml
CHANGED
@@ -6,7 +6,7 @@ workspace_root: &workspace_root
|
|
6
6
|
defaults: &defaults
|
7
7
|
working_directory: *workspace_root
|
8
8
|
docker:
|
9
|
-
- image: afrase/firebug-ruby:2.
|
9
|
+
- image: afrase/firebug-ruby:2.6
|
10
10
|
|
11
11
|
attach_workspace: &attach_workspace
|
12
12
|
attach_workspace:
|
@@ -42,6 +42,7 @@ jobs:
|
|
42
42
|
- run:
|
43
43
|
name: Install Bundler dependencies
|
44
44
|
command: |
|
45
|
+
gem install bundler
|
45
46
|
bin/bundle install --path=vendor/bundle \
|
46
47
|
--jobs=4 \
|
47
48
|
--retry=3
|
@@ -62,7 +63,9 @@ jobs:
|
|
62
63
|
- *attach_workspace
|
63
64
|
- run:
|
64
65
|
name: Set bundler path
|
65
|
-
command:
|
66
|
+
command: |
|
67
|
+
gem install bundler
|
68
|
+
bin/bundle --path vendor/bundle
|
66
69
|
- run:
|
67
70
|
name: Run tests
|
68
71
|
command: |
|
@@ -87,7 +90,9 @@ jobs:
|
|
87
90
|
- *attach_workspace
|
88
91
|
- run:
|
89
92
|
name: Set bundler path
|
90
|
-
command:
|
93
|
+
command: |
|
94
|
+
gem install bundler
|
95
|
+
bin/bundle --path vendor/bundle
|
91
96
|
- run:
|
92
97
|
name: Run rubocop
|
93
98
|
command: bin/bundle exec rubocop
|
@@ -1,3 +1,12 @@
|
|
1
|
-
FROM
|
1
|
+
FROM ruby:2.6-slim
|
2
2
|
|
3
|
-
RUN
|
3
|
+
RUN apt-get update && apt-get install -y --no-install-recommends \
|
4
|
+
build-essential \
|
5
|
+
curl \
|
6
|
+
default-libmysqlclient-dev \
|
7
|
+
git \
|
8
|
+
libmcrypt-dev \
|
9
|
+
file \
|
10
|
+
sudo \
|
11
|
+
libsqlite3-dev \
|
12
|
+
&& rm -rf /var/lib/apt/lists/*
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.6.1
|
data/README.md
CHANGED
@@ -63,8 +63,8 @@ Encrypt and decrypt data.
|
|
63
63
|
key = 'password'
|
64
64
|
data = 'super secret data'
|
65
65
|
|
66
|
-
encrypted = Firebug.encrypt(
|
67
|
-
decrypted = Firebug.decrypt(
|
66
|
+
encrypted = Firebug.encrypt(data, key)
|
67
|
+
decrypted = Firebug.decrypt(encrypted, key)
|
68
68
|
|
69
69
|
data == decrypted # => true
|
70
70
|
```
|
data/firebug.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'firebug/version'
|
6
6
|
|
@@ -24,19 +24,19 @@ Gem::Specification.new do |spec| # rubocop:disable BlockLength
|
|
24
24
|
|
25
25
|
spec.metadata['yard.run'] = 'yri' # use "yard" to build full HTML docs.
|
26
26
|
|
27
|
-
spec.add_dependency 'actionpack', '
|
28
|
-
spec.add_dependency 'activerecord', '
|
27
|
+
spec.add_dependency 'actionpack', '<= 6.0'
|
28
|
+
spec.add_dependency 'activerecord', '<= 6.0'
|
29
29
|
spec.add_dependency 'ruby-mcrypt', '~> 0.2'
|
30
30
|
|
31
|
-
spec.add_development_dependency 'bundler', '~>
|
32
|
-
spec.add_development_dependency 'database_cleaner', '~> 1.
|
33
|
-
spec.add_development_dependency 'pry', '~> 0.
|
34
|
-
spec.add_development_dependency 'rake', '~> 12.3'
|
35
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
36
|
-
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.
|
37
|
-
spec.add_development_dependency 'rubocop', '~> 0.
|
38
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 1.
|
39
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
40
|
-
spec.add_development_dependency 'sqlite3', '~> 1.3
|
41
|
-
spec.add_development_dependency 'yard', '~> 0.9.
|
31
|
+
spec.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.1'
|
32
|
+
spec.add_development_dependency 'database_cleaner', '~> 1.7'
|
33
|
+
spec.add_development_dependency 'pry', '~> 0.12.2'
|
34
|
+
spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.2'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.8'
|
36
|
+
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4.1'
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.66.0'
|
38
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.32'
|
39
|
+
spec.add_development_dependency 'simplecov', '~> 0.16.1'
|
40
|
+
spec.add_development_dependency 'sqlite3', '~> 1.3.6'
|
41
|
+
spec.add_development_dependency 'yard', '~> 0.9.18'
|
42
42
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'action_dispatch'
|
4
|
-
require_relative '../../firebug/session'
|
5
|
-
|
6
3
|
module ActionDispatch
|
7
4
|
module Session
|
5
|
+
require 'action_dispatch'
|
6
|
+
require_relative '../../firebug/session'
|
7
|
+
|
8
8
|
# A session store for Rails to handle Pyro sessions.
|
9
9
|
class CodeIgniterStore < AbstractStore
|
10
10
|
SESSION_RECORD_KEY = 'rack.session.record'
|
@@ -78,6 +78,7 @@ module ActionDispatch
|
|
78
78
|
}
|
79
79
|
# Returning false will cause Rack to output a warning.
|
80
80
|
return false unless model.update(model_params)
|
81
|
+
|
81
82
|
req.env[SESSION_RECORD_KEY] = model
|
82
83
|
# Return the encrypted cookie format of the data. Rack sets this value as the cookie in the response
|
83
84
|
model.cookie_data
|
@@ -99,6 +100,7 @@ module ActionDispatch
|
|
99
100
|
# Get the current database record for this session then delete it.
|
100
101
|
find_session_model(req, sid).delete
|
101
102
|
return if options[:drop]
|
103
|
+
|
102
104
|
req.env[SESSION_RECORD_KEY] = nil
|
103
105
|
# Generate a new one and return it's ID
|
104
106
|
find_session_model(req).tap { |s| s.save if options[:renew] }.session_id
|
@@ -119,6 +121,7 @@ module ActionDispatch
|
|
119
121
|
return generate_sid if sid.nil?
|
120
122
|
# sometimes the cookie contains just the session ID.
|
121
123
|
return sid if sid.size <= 32
|
124
|
+
|
122
125
|
Firebug.decrypt_cookie(sid)[:session_id]
|
123
126
|
end
|
124
127
|
|
@@ -129,6 +132,7 @@ module ActionDispatch
|
|
129
132
|
if sid
|
130
133
|
model = req.env[SESSION_RECORD_KEY] || Firebug::Session.find_by(find_by_params(req, sid))
|
131
134
|
return model if model
|
135
|
+
|
132
136
|
# use a different session ID in case the reason for not finding the record is because the user_agent
|
133
137
|
# or ip_address didn't match.
|
134
138
|
sid = generate_sid
|
data/lib/firebug.rb
CHANGED
data/lib/firebug/crypto.rb
CHANGED
@@ -20,7 +20,7 @@ module Firebug
|
|
20
20
|
# Create a random 32 byte string to act as the initialization vector.
|
21
21
|
iv = SecureRandom.random_bytes(32)
|
22
22
|
# Pyro pads the data with zeros
|
23
|
-
cipher =
|
23
|
+
cipher = FirebugMcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
|
24
24
|
add_noise(iv + cipher.encrypt(data))
|
25
25
|
end
|
26
26
|
|
@@ -32,7 +32,7 @@ module Firebug
|
|
32
32
|
data = remove_noise(data)
|
33
33
|
# The first 32 bytes of the data is the original IV
|
34
34
|
iv = data[0..31]
|
35
|
-
cipher =
|
35
|
+
cipher = FirebugMcrypt.new(:rijndael_256, :cbc, @key, iv, :zeros)
|
36
36
|
cipher.decrypt(data[32..-1])
|
37
37
|
end
|
38
38
|
|
@@ -64,4 +64,14 @@ module Firebug
|
|
64
64
|
Array.new(data.size) { |i| (data[i].ord.send(operator, key[i % key.size].ord) % 256).chr }.join
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
# To prevent errors about @opened being uninitialized.
|
69
|
+
class FirebugMcrypt < ::Mcrypt
|
70
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
71
|
+
def initialize(algorithm, mode, key=nil, iv=nil, padding=nil)
|
72
|
+
@opened = nil
|
73
|
+
super
|
74
|
+
end
|
75
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
76
|
+
end
|
67
77
|
end
|
data/lib/firebug/serializer.rb
CHANGED
@@ -23,9 +23,9 @@ module Firebug
|
|
23
23
|
when String, Symbol
|
24
24
|
"s:#{obj.to_s.bytesize}:\"#{obj}\";"
|
25
25
|
when Array
|
26
|
-
"a:#{obj.length}:{#{obj.
|
26
|
+
"a:#{obj.length}:{#{obj.map.with_index { |e, i| "#{parse(i)}#{parse(e)}" }.join}}"
|
27
27
|
when Hash
|
28
|
-
"a:#{obj.length}:{#{obj.
|
28
|
+
"a:#{obj.length}:{#{obj.map { |k, v| "#{parse(k)}#{parse(v)}" }.join}}"
|
29
29
|
else
|
30
30
|
raise ArgumentError, "unsupported type #{obj.class.name}"
|
31
31
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Firebug
|
4
|
+
class StringIOReader < StringIO
|
5
|
+
# Reads data from the buffer until +char+ is found.
|
6
|
+
#
|
7
|
+
# @param [String] char The character to look for.
|
8
|
+
# @param [Boolean] include If +char+ should be included in the result.
|
9
|
+
# @return [String, nil]
|
10
|
+
def read_until(char, include: true)
|
11
|
+
if (idx = string.index(char, pos)) # rubocop:disable Style/GuardClause
|
12
|
+
read(idx - pos + (include ? 1 : 0))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/firebug/unserializer.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Firebug
|
4
|
-
|
4
|
+
require_relative 'errors'
|
5
|
+
require_relative 'string_io_reader'
|
5
6
|
|
6
7
|
# This class will unserialize a PHP serialized string into a ruby object.
|
7
8
|
#
|
8
|
-
# @attr [
|
9
|
+
# @attr [StringIOReader] str
|
9
10
|
class Unserializer
|
10
11
|
attr_accessor :str
|
11
12
|
|
12
13
|
# @param [String] string
|
13
14
|
def initialize(string)
|
14
|
-
self.str =
|
15
|
+
self.str = StringIOReader.new(string)
|
15
16
|
end
|
16
17
|
|
17
18
|
# Convenience method for unserializing a PHP serialized string.
|
@@ -30,23 +31,24 @@ module Firebug
|
|
30
31
|
#
|
31
32
|
# @raise [ParserError]
|
32
33
|
# @return [Hash, Array, String, Integer, Float, nil]
|
33
|
-
def parse # rubocop:disable
|
34
|
-
ch = str.
|
34
|
+
def parse # rubocop:disable CyclomaticComplexity
|
35
|
+
ch = str.getc
|
35
36
|
return if ch.nil?
|
36
37
|
|
38
|
+
str.getc # : or ;
|
37
39
|
case ch
|
38
40
|
when 'a'
|
39
|
-
parse_enumerable
|
41
|
+
parse_enumerable
|
40
42
|
when 's'
|
41
|
-
parse_string
|
43
|
+
parse_string
|
42
44
|
when 'i'
|
43
|
-
parse_int
|
45
|
+
parse_int
|
44
46
|
when 'd'
|
45
|
-
parse_double
|
47
|
+
parse_double
|
46
48
|
when 'b'
|
47
|
-
parse_bool
|
49
|
+
parse_bool
|
48
50
|
when 'N'
|
49
|
-
|
51
|
+
nil
|
50
52
|
else
|
51
53
|
raise ParserError, "Unknown token '#{ch}' at position #{str.pos} (#{str.string})"
|
52
54
|
end
|
@@ -57,63 +59,41 @@ module Firebug
|
|
57
59
|
# @raise [ParseError]
|
58
60
|
# @return [Hash, Array]
|
59
61
|
def parse_enumerable
|
60
|
-
size =
|
61
|
-
expect('{')
|
62
|
+
size = str.read_until('{')[0..-3].to_i # n:{
|
62
63
|
return {} if size.zero?
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
|
65
|
+
val = Array.new(size) { [parse, parse] }
|
66
|
+
str.getc # }
|
67
|
+
if val[0][0].is_a?(Integer)
|
68
|
+
val.map! { |_, v| v }
|
67
69
|
else
|
68
|
-
|
70
|
+
val = Hash[val].transform_keys!(&:to_sym)
|
69
71
|
end
|
72
|
+
val
|
70
73
|
end
|
71
74
|
|
72
75
|
# @return [String]
|
73
76
|
def parse_string
|
74
|
-
size =
|
75
|
-
str.
|
76
|
-
read(size).tap { str.getch }
|
77
|
+
size = str.read_until(':').to_i + 3 # add 3 for the 2 double quotes and semicolon
|
78
|
+
String.new(str.read(size)[1..-3], encoding: Encoding::UTF_8)
|
77
79
|
end
|
78
80
|
|
79
81
|
# @raise [ParserError]
|
80
82
|
# @return [Integer]
|
81
83
|
def parse_int
|
82
|
-
str.
|
83
|
-
raise ParserError, "Failed to parse integer at position #{str.pos}" unless str.matched?
|
84
|
-
str[1].to_i
|
84
|
+
str.read_until(';')[0..-1].to_i
|
85
85
|
end
|
86
86
|
|
87
87
|
# @raise [ParserError]
|
88
88
|
# @return [Float]
|
89
89
|
def parse_double
|
90
|
-
str.
|
91
|
-
raise ParserError, "Failed to parse double at position #{str.pos}" unless str.matched?
|
92
|
-
str[1].to_f
|
90
|
+
str.read_until(';')[0..-1].to_f
|
93
91
|
end
|
94
92
|
|
95
93
|
# @raise [ParserError]
|
96
94
|
# @return [Boolean]
|
97
95
|
def parse_bool
|
98
|
-
str.
|
99
|
-
raise ParserError, "Failed to parse boolean at position #{str.pos}" unless str.matched?
|
100
|
-
str[1] == '1'
|
101
|
-
end
|
102
|
-
|
103
|
-
# @param [Integer] size
|
104
|
-
# @return [String]
|
105
|
-
def read(size)
|
106
|
-
Array.new(size) { str.get_byte }.join
|
96
|
+
str.read(2)[0] == '1'
|
107
97
|
end
|
108
|
-
|
109
|
-
# @param [String] s
|
110
|
-
# @raise [ParserError] if the next character is not `s`
|
111
|
-
def expect(s)
|
112
|
-
char = str.getch
|
113
|
-
raise ParserError, "expected '#{s}' but got '#{char}' at position #{str.pos}" unless char == s
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
class ParserError < StandardError
|
118
98
|
end
|
119
99
|
end
|
data/lib/firebug/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Frase
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "<="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "<="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '6.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "<="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "<="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '6.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ruby-mcrypt
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,48 +58,48 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.0'
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 2.0.1
|
62
65
|
type: :development
|
63
66
|
prerelease: false
|
64
67
|
version_requirements: !ruby/object:Gem::Requirement
|
65
68
|
requirements:
|
66
69
|
- - "~>"
|
67
70
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
71
|
+
version: '2.0'
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 2.0.1
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: database_cleaner
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 1.6.2
|
81
|
+
version: '1.7'
|
79
82
|
type: :development
|
80
83
|
prerelease: false
|
81
84
|
version_requirements: !ruby/object:Gem::Requirement
|
82
85
|
requirements:
|
83
86
|
- - "~>"
|
84
87
|
- !ruby/object:Gem::Version
|
85
|
-
version: '1.
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 1.6.2
|
88
|
+
version: '1.7'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: pry
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
95
|
+
version: 0.12.2
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
102
|
+
version: 0.12.2
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rake
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +107,9 @@ dependencies:
|
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '12.3'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 12.3.2
|
110
113
|
type: :development
|
111
114
|
prerelease: false
|
112
115
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -114,116 +117,107 @@ dependencies:
|
|
114
117
|
- - "~>"
|
115
118
|
- !ruby/object:Gem::Version
|
116
119
|
version: '12.3'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 12.3.2
|
117
123
|
- !ruby/object:Gem::Dependency
|
118
124
|
name: rspec
|
119
125
|
requirement: !ruby/object:Gem::Requirement
|
120
126
|
requirements:
|
121
127
|
- - "~>"
|
122
128
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
129
|
+
version: '3.8'
|
124
130
|
type: :development
|
125
131
|
prerelease: false
|
126
132
|
version_requirements: !ruby/object:Gem::Requirement
|
127
133
|
requirements:
|
128
134
|
- - "~>"
|
129
135
|
- !ruby/object:Gem::Version
|
130
|
-
version: '3.
|
136
|
+
version: '3.8'
|
131
137
|
- !ruby/object:Gem::Dependency
|
132
138
|
name: rspec_junit_formatter
|
133
139
|
requirement: !ruby/object:Gem::Requirement
|
134
140
|
requirements:
|
135
141
|
- - "~>"
|
136
142
|
- !ruby/object:Gem::Version
|
137
|
-
version: 0.
|
143
|
+
version: 0.4.1
|
138
144
|
type: :development
|
139
145
|
prerelease: false
|
140
146
|
version_requirements: !ruby/object:Gem::Requirement
|
141
147
|
requirements:
|
142
148
|
- - "~>"
|
143
149
|
- !ruby/object:Gem::Version
|
144
|
-
version: 0.
|
150
|
+
version: 0.4.1
|
145
151
|
- !ruby/object:Gem::Dependency
|
146
152
|
name: rubocop
|
147
153
|
requirement: !ruby/object:Gem::Requirement
|
148
154
|
requirements:
|
149
155
|
- - "~>"
|
150
156
|
- !ruby/object:Gem::Version
|
151
|
-
version: 0.
|
157
|
+
version: 0.66.0
|
152
158
|
type: :development
|
153
159
|
prerelease: false
|
154
160
|
version_requirements: !ruby/object:Gem::Requirement
|
155
161
|
requirements:
|
156
162
|
- - "~>"
|
157
163
|
- !ruby/object:Gem::Version
|
158
|
-
version: 0.
|
164
|
+
version: 0.66.0
|
159
165
|
- !ruby/object:Gem::Dependency
|
160
166
|
name: rubocop-rspec
|
161
167
|
requirement: !ruby/object:Gem::Requirement
|
162
168
|
requirements:
|
163
169
|
- - "~>"
|
164
170
|
- !ruby/object:Gem::Version
|
165
|
-
version: '1.
|
166
|
-
- - ">="
|
167
|
-
- !ruby/object:Gem::Version
|
168
|
-
version: 1.22.2
|
171
|
+
version: '1.32'
|
169
172
|
type: :development
|
170
173
|
prerelease: false
|
171
174
|
version_requirements: !ruby/object:Gem::Requirement
|
172
175
|
requirements:
|
173
176
|
- - "~>"
|
174
177
|
- !ruby/object:Gem::Version
|
175
|
-
version: '1.
|
176
|
-
- - ">="
|
177
|
-
- !ruby/object:Gem::Version
|
178
|
-
version: 1.22.2
|
178
|
+
version: '1.32'
|
179
179
|
- !ruby/object:Gem::Dependency
|
180
180
|
name: simplecov
|
181
181
|
requirement: !ruby/object:Gem::Requirement
|
182
182
|
requirements:
|
183
183
|
- - "~>"
|
184
184
|
- !ruby/object:Gem::Version
|
185
|
-
version: 0.
|
185
|
+
version: 0.16.1
|
186
186
|
type: :development
|
187
187
|
prerelease: false
|
188
188
|
version_requirements: !ruby/object:Gem::Requirement
|
189
189
|
requirements:
|
190
190
|
- - "~>"
|
191
191
|
- !ruby/object:Gem::Version
|
192
|
-
version: 0.
|
192
|
+
version: 0.16.1
|
193
193
|
- !ruby/object:Gem::Dependency
|
194
194
|
name: sqlite3
|
195
195
|
requirement: !ruby/object:Gem::Requirement
|
196
196
|
requirements:
|
197
197
|
- - "~>"
|
198
198
|
- !ruby/object:Gem::Version
|
199
|
-
version:
|
200
|
-
- - ">="
|
201
|
-
- !ruby/object:Gem::Version
|
202
|
-
version: 1.3.13
|
199
|
+
version: 1.3.6
|
203
200
|
type: :development
|
204
201
|
prerelease: false
|
205
202
|
version_requirements: !ruby/object:Gem::Requirement
|
206
203
|
requirements:
|
207
204
|
- - "~>"
|
208
205
|
- !ruby/object:Gem::Version
|
209
|
-
version:
|
210
|
-
- - ">="
|
211
|
-
- !ruby/object:Gem::Version
|
212
|
-
version: 1.3.13
|
206
|
+
version: 1.3.6
|
213
207
|
- !ruby/object:Gem::Dependency
|
214
208
|
name: yard
|
215
209
|
requirement: !ruby/object:Gem::Requirement
|
216
210
|
requirements:
|
217
211
|
- - "~>"
|
218
212
|
- !ruby/object:Gem::Version
|
219
|
-
version: 0.9.
|
213
|
+
version: 0.9.18
|
220
214
|
type: :development
|
221
215
|
prerelease: false
|
222
216
|
version_requirements: !ruby/object:Gem::Requirement
|
223
217
|
requirements:
|
224
218
|
- - "~>"
|
225
219
|
- !ruby/object:Gem::Version
|
226
|
-
version: 0.9.
|
220
|
+
version: 0.9.18
|
227
221
|
description: Gem for working with CodeIgniter sessions
|
228
222
|
email:
|
229
223
|
- aaron@rvshare.com
|
@@ -253,8 +247,10 @@ files:
|
|
253
247
|
- lib/firebug.rb
|
254
248
|
- lib/firebug/configuration.rb
|
255
249
|
- lib/firebug/crypto.rb
|
250
|
+
- lib/firebug/errors.rb
|
256
251
|
- lib/firebug/serializer.rb
|
257
252
|
- lib/firebug/session.rb
|
253
|
+
- lib/firebug/string_io_reader.rb
|
258
254
|
- lib/firebug/unserializer.rb
|
259
255
|
- lib/firebug/version.rb
|
260
256
|
homepage: https://github.com/rvshare/firebug
|
@@ -277,8 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
277
273
|
- !ruby/object:Gem::Version
|
278
274
|
version: '0'
|
279
275
|
requirements: []
|
280
|
-
|
281
|
-
rubygems_version: 2.6.12
|
276
|
+
rubygems_version: 3.0.1
|
282
277
|
signing_key:
|
283
278
|
specification_version: 4
|
284
279
|
summary: Gem for working with CodeIgniter sessions
|