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 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