da_funk 3.26.0 → 3.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +10 -10
- data/RELEASE_NOTES.md +26 -0
- data/Rakefile +1 -0
- data/lib/da_funk/engine.rb +7 -2
- data/lib/da_funk/i18n.rb +5 -1
- data/lib/da_funk/params_dat.rb +20 -5
- data/lib/da_funk/payment_channel.rb +1 -2
- data/lib/da_funk/secure_random.rb +17 -0
- data/lib/da_funk/version.rb +1 -1
- data/lib/device/setting.rb +5 -4
- data/test/unit/da_funk/secure_random.rb +18 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37d7e3cf03459d285f8f3dc049befefc6857d63f8f9d3920c7a28e5ba128879e
|
4
|
+
data.tar.gz: 78e552609442541e0dec9badacbcabe081ef2541350f3b9e5c684d106dd72871
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e08477af30c8b15a55b9b20d5132d90afb85d17609758bde631f09697cca24527e12069dc7a82b33dc2da3ccde99e62b8a1404cfc113d369be25ab645700f3a
|
7
|
+
data.tar.gz: 1bfe9676a867791075006151532f96b02fae0a3b2bf194b1389804b8aac5f29980671709567db2fe6a3de2d7b234a077168764da0db7f5f6f7ee4d9c49e5a1c7
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
da_funk (3.
|
4
|
+
da_funk (3.29.0)
|
5
5
|
archive-zip (~> 0.5)
|
6
6
|
bundler
|
7
7
|
cloudwalk_handshake
|
@@ -18,7 +18,7 @@ GEM
|
|
18
18
|
cloudwalk (1.15.0)
|
19
19
|
bundler
|
20
20
|
rake
|
21
|
-
cloudwalk_handshake (1.
|
21
|
+
cloudwalk_handshake (1.21.3)
|
22
22
|
funky-simplehttp (~> 0.6)
|
23
23
|
funky-emv (1.4.1)
|
24
24
|
funky-tlv (~> 0.2)
|
@@ -27,25 +27,25 @@ GEM
|
|
27
27
|
funky-tlv (0.2.3)
|
28
28
|
io-like (0.3.1)
|
29
29
|
parallel (1.19.2)
|
30
|
-
parser (2.7.
|
30
|
+
parser (2.7.2.0)
|
31
31
|
ast (~> 2.4.1)
|
32
32
|
posxml_parser (2.26.0)
|
33
33
|
funky-emv (~> 1)
|
34
34
|
rainbow (3.0.0)
|
35
35
|
rake (13.0.1)
|
36
|
-
regexp_parser (1.
|
36
|
+
regexp_parser (1.8.2)
|
37
37
|
rexml (3.2.4)
|
38
|
-
rubocop (
|
38
|
+
rubocop (1.1.0)
|
39
39
|
parallel (~> 1.10)
|
40
|
-
parser (>= 2.7.1.
|
40
|
+
parser (>= 2.7.1.5)
|
41
41
|
rainbow (>= 2.2.2, < 4.0)
|
42
|
-
regexp_parser (>= 1.
|
42
|
+
regexp_parser (>= 1.8)
|
43
43
|
rexml
|
44
|
-
rubocop-ast (>= 0.
|
44
|
+
rubocop-ast (>= 1.0.1)
|
45
45
|
ruby-progressbar (~> 1.7)
|
46
46
|
unicode-display_width (>= 1.4.0, < 2.0)
|
47
|
-
rubocop-ast (
|
48
|
-
parser (>= 2.7.1.
|
47
|
+
rubocop-ast (1.1.0)
|
48
|
+
parser (>= 2.7.1.5)
|
49
49
|
ruby-progressbar (1.10.1)
|
50
50
|
unicode-display_width (1.7.0)
|
51
51
|
yard (0.9.25)
|
data/RELEASE_NOTES.md
CHANGED
@@ -1,5 +1,31 @@
|
|
1
1
|
# DaFunk
|
2
2
|
|
3
|
+
### 3.29.0 - 2020-11-03
|
4
|
+
|
5
|
+
- Added support to Ruby SecureRandom;
|
6
|
+
- Update cloudwalk_handshake (1.21.3).
|
7
|
+
|
8
|
+
### 3.28.2 - 2020-10-07
|
9
|
+
|
10
|
+
- Added support of params.dat file restore if it was corrupted;
|
11
|
+
- Wait 3 seconds before restart after main update;
|
12
|
+
- Fixed method_missing exception;
|
13
|
+
|
14
|
+
### 3.28.1 - 2020-09-26
|
15
|
+
|
16
|
+
- Close socket in case of ssl exceptions;
|
17
|
+
- Do not assign nil to PaymentChannel#current and client on error because this is already being done on PaymentChannel#close.
|
18
|
+
|
19
|
+
### 3.28.0 - 2020-09-25
|
20
|
+
|
21
|
+
- Check if system update file is present after device restart in order to continue with system update process;
|
22
|
+
- Implemented block to write and break line if message has '\n'.
|
23
|
+
|
24
|
+
### 3.27.0 - 2020-09-25
|
25
|
+
|
26
|
+
- Print bitmap if exists on DaFunk::ParamsDat#restart;
|
27
|
+
- Add main application version on config.dat file.
|
28
|
+
|
3
29
|
### 3.26.0 - 2020-09-14
|
4
30
|
|
5
31
|
- Fixed error on virtual keyboard, chars y and Y were duplicated;
|
data/Rakefile
CHANGED
data/lib/da_funk/engine.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
module DaFunk
|
2
2
|
class Engine
|
3
3
|
def self.check
|
4
|
-
|
5
|
-
|
4
|
+
if Device::Setting.boot == '1'
|
5
|
+
DaFunk::EventListener.check(:file_exists) #to check if system update is in progress
|
6
|
+
Device::Setting.boot = '0'
|
7
|
+
else
|
8
|
+
DaFunk::EventListener.check
|
9
|
+
ThreadScheduler.keep_alive
|
10
|
+
end
|
6
11
|
end
|
7
12
|
|
8
13
|
def self.app_loop(&block)
|
data/lib/da_funk/i18n.rb
CHANGED
@@ -73,7 +73,11 @@ class I18n
|
|
73
73
|
|
74
74
|
def self.pt(symbol, options = {})
|
75
75
|
if options[:line] || options[:column]
|
76
|
-
|
76
|
+
line = options[:line] || 0
|
77
|
+
t(symbol, options).split("\n").each do |message|
|
78
|
+
Device::Display.print_line(message, line, options[:column] || 0)
|
79
|
+
line+=1
|
80
|
+
end
|
77
81
|
else
|
78
82
|
puts(t(symbol, options))
|
79
83
|
end
|
data/lib/da_funk/params_dat.rb
CHANGED
@@ -5,7 +5,7 @@ module DaFunk
|
|
5
5
|
include DaFunk::Helper
|
6
6
|
|
7
7
|
class << self
|
8
|
-
attr_accessor :file, :apps, :valid, :files
|
8
|
+
attr_accessor :file, :apps, :valid, :files, :checksum
|
9
9
|
end
|
10
10
|
|
11
11
|
self.apps = Array.new
|
@@ -20,9 +20,19 @@ module DaFunk
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.setup
|
23
|
+
@checksum = calculate_checksum
|
23
24
|
@file = FileDb.new(FILE_NAME)
|
24
25
|
end
|
25
26
|
|
27
|
+
def self.calculate_checksum
|
28
|
+
Device::Crypto.crc16_hex(File.read(FILE_NAME)) if exists?
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.corrupted?
|
32
|
+
return true unless exists?
|
33
|
+
@checksum != calculate_checksum
|
34
|
+
end
|
35
|
+
|
26
36
|
def self.exists?
|
27
37
|
File.exists?(FILE_NAME)
|
28
38
|
end
|
@@ -151,10 +161,15 @@ module DaFunk
|
|
151
161
|
|
152
162
|
def self.restart
|
153
163
|
Device::Display.clear
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
164
|
+
if File.exists?('./shared/init_reboot.bmp')
|
165
|
+
Device::Display.print_bitmap('./shared/init_reboot.bmp')
|
166
|
+
getc(3000)
|
167
|
+
else
|
168
|
+
I18n.pt(:admin_main_update_message)
|
169
|
+
3.times do |i|
|
170
|
+
Device::Display.print("REBOOTING IN #{3 - i}",3,3)
|
171
|
+
sleep(1)
|
172
|
+
end
|
158
173
|
end
|
159
174
|
Device::System.restart
|
160
175
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module DaFunk
|
2
|
+
class SecureRandom
|
3
|
+
CHARS = [('a'..'z'), ('A'..'Z')].map(&:to_a).flatten
|
4
|
+
|
5
|
+
def self.random_bytes(n = nil)
|
6
|
+
n = n ? n.to_int : 16
|
7
|
+
(0...n).map { CHARS[rand(CHARS.length)] }.join
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.uuid
|
11
|
+
bytes = random_bytes.unpack('NnnnnN')
|
12
|
+
bytes[2] = (bytes[2] & 0x0fff) | 0x4000
|
13
|
+
bytes[3] = (bytes[3] & 0x3fff) | 0x8000
|
14
|
+
"%08x-%04x-%04x-%04x-%04x%08x" % bytes
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/da_funk/version.rb
CHANGED
data/lib/device/setting.rb
CHANGED
@@ -67,7 +67,8 @@ class Device
|
|
67
67
|
"transaction_http_host" => HTTP_HOST_PRODUCTION,
|
68
68
|
"transaction_http_port" => HTTP_PORT,
|
69
69
|
"emv_contactless_amount" => "0",
|
70
|
-
"network_init" => ""
|
70
|
+
"network_init" => "",
|
71
|
+
"main_app_version" => ""
|
71
72
|
}
|
72
73
|
|
73
74
|
class << self
|
@@ -151,16 +152,16 @@ class Device
|
|
151
152
|
|
152
153
|
# Custom Attributes
|
153
154
|
def self.tcp_recv_timeout
|
154
|
-
DaFunk::ParamsDat.file["tcp_recv_timeout"] ||
|
155
|
+
DaFunk::ParamsDat.file["tcp_recv_timeout"] || @file&.dig("tcp_recv_timeout")
|
155
156
|
end
|
156
157
|
|
157
158
|
def self.attach_gprs_timeout
|
158
|
-
value = (DaFunk::ParamsDat.file["attach_gprs_timeout"] ||
|
159
|
+
value = (DaFunk::ParamsDat.file["attach_gprs_timeout"] || @file&.dig("attach_gprs_timeout"))
|
159
160
|
value.to_s.empty? ? nil : value.to_s.to_i
|
160
161
|
end
|
161
162
|
|
162
163
|
def self.heartbeat
|
163
|
-
DaFunk::ParamsDat.file["heartbeat"] ||
|
164
|
+
DaFunk::ParamsDat.file["heartbeat"] || @file&.dig("heartbeat")
|
164
165
|
end
|
165
166
|
|
166
167
|
def self.logical_number
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class SecureRandomTest < DaFunk::Test.case
|
2
|
+
def setup
|
3
|
+
@uuid = DaFunk::SecureRandom.uuid
|
4
|
+
@random_bytes = DaFunk::SecureRandom.random_bytes
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_uuid
|
8
|
+
assert_equal(36, @uuid.size)
|
9
|
+
|
10
|
+
# Check time_hi_and_version and clock_seq_hi_res bits (RFC 4122 4.4)
|
11
|
+
assert_equal('4', @uuid[14])
|
12
|
+
assert_include(%w'8 9 a b', @uuid[19])
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_random_bytes
|
16
|
+
assert_equal(16, @random_bytes.size)
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: da_funk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thiago Scalone
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -174,6 +174,7 @@ files:
|
|
174
174
|
- lib/da_funk/rake_task.rb
|
175
175
|
- lib/da_funk/screen.rb
|
176
176
|
- lib/da_funk/screen_flow.rb
|
177
|
+
- lib/da_funk/secure_random.rb
|
177
178
|
- lib/da_funk/struct.rb
|
178
179
|
- lib/da_funk/test.rb
|
179
180
|
- lib/da_funk/transaction/download.rb
|
@@ -220,6 +221,7 @@ files:
|
|
220
221
|
- test/resources/shared/bitmap_gp.dat
|
221
222
|
- test/test_helper.rb
|
222
223
|
- test/unit/da_funk/event_listener_test.rb
|
224
|
+
- test/unit/da_funk/secure_random.rb
|
223
225
|
- test/unit/da_funk/struct_test.rb
|
224
226
|
- test/unit/da_funk/support_test.rb
|
225
227
|
- test/unit/device/application_test.rb
|
@@ -269,6 +271,7 @@ test_files:
|
|
269
271
|
- test/resources/shared/bitmap_gp.dat
|
270
272
|
- test/test_helper.rb
|
271
273
|
- test/unit/da_funk/event_listener_test.rb
|
274
|
+
- test/unit/da_funk/secure_random.rb
|
272
275
|
- test/unit/da_funk/struct_test.rb
|
273
276
|
- test/unit/da_funk/support_test.rb
|
274
277
|
- test/unit/device/application_test.rb
|