da_funk 3.26.0 → 3.29.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74ed04e91a2835da1b6ac8a32738190f6f6ad3b1bfb867df409d70e138f7935e
4
- data.tar.gz: a39e91339b6e9a1ee64b6292a2bce50f2d384826bf1d9434438049bba2f5f918
3
+ metadata.gz: 37d7e3cf03459d285f8f3dc049befefc6857d63f8f9d3920c7a28e5ba128879e
4
+ data.tar.gz: 78e552609442541e0dec9badacbcabe081ef2541350f3b9e5c684d106dd72871
5
5
  SHA512:
6
- metadata.gz: 436ae480832d515c74f1d6ab89a97c3e3aacdcdaafefe6a434d7145291d66e1722d629cd77bb2e024a86b31ac40ad8ad5af2256120bcfb5ab1de177cde9869f9
7
- data.tar.gz: 22cd5633ff6197cbc0b9d8fcbe54dd17af8fcbcfc852fbc243c051e1a476ff5814c2e11f4e4dca29c8f986a2e8a0d6b5c62d04fcab1a0a27be49566da67b6ca1
6
+ metadata.gz: 7e08477af30c8b15a55b9b20d5132d90afb85d17609758bde631f09697cca24527e12069dc7a82b33dc2da3ccde99e62b8a1404cfc113d369be25ab645700f3a
7
+ data.tar.gz: 1bfe9676a867791075006151532f96b02fae0a3b2bf194b1389804b8aac5f29980671709567db2fe6a3de2d7b234a077168764da0db7f5f6f7ee4d9c49e5a1c7
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- da_funk (3.26.0)
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.20.0)
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.1.4)
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.7.1)
36
+ regexp_parser (1.8.2)
37
37
  rexml (3.2.4)
38
- rubocop (0.90.0)
38
+ rubocop (1.1.0)
39
39
  parallel (~> 1.10)
40
- parser (>= 2.7.1.1)
40
+ parser (>= 2.7.1.5)
41
41
  rainbow (>= 2.2.2, < 4.0)
42
- regexp_parser (>= 1.7)
42
+ regexp_parser (>= 1.8)
43
43
  rexml
44
- rubocop-ast (>= 0.3.0, < 1.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 (0.4.0)
48
- parser (>= 2.7.1.4)
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)
@@ -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
@@ -56,6 +56,7 @@ FILES = FileList[
56
56
  "lib/da_funk/notification_event.rb",
57
57
  "lib/da_funk/notification_callback.rb",
58
58
  "lib/da_funk/notification.rb",
59
+ "lib/da_funk/secure_random.rb",
59
60
 
60
61
  "lib/device.rb",
61
62
  "lib/device/audio.rb",
@@ -1,8 +1,13 @@
1
1
  module DaFunk
2
2
  class Engine
3
3
  def self.check
4
- DaFunk::EventListener.check
5
- ThreadScheduler.keep_alive
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)
@@ -73,7 +73,11 @@ class I18n
73
73
 
74
74
  def self.pt(symbol, options = {})
75
75
  if options[:line] || options[:column]
76
- Device::Display.print_line(t(symbol, options), options[:line] || 0, options[:column] || 0)
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
@@ -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
- I18n.pt(:admin_main_update_message)
155
- 3.times do |i|
156
- Device::Display.print("REBOOTING IN #{3 - i}",3,3)
157
- sleep(1)
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
@@ -231,8 +231,7 @@ module DaFunk
231
231
  if Context.development?
232
232
  ContextLog.exception(exception, exception.backtrace, "PaymentChannel error")
233
233
  end
234
- PaymentChannel.current = nil
235
- @client = nil
234
+ self.close
236
235
  end
237
236
 
238
237
  def handshake
@@ -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
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="3.26.0"
2
+ VERSION="3.29.0"
3
3
  end
4
4
 
@@ -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"] || method_missing(: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"] || method_missing(: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"] || method_missing(: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.26.0
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-09-14 00:00:00.000000000 Z
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