da_funk 3.28.0 → 3.30.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: 489f56230d69c2a02818b0e7ca0b33e9a5c425281c79def3a8c5c2361f213c95
4
- data.tar.gz: e135956873a9b50834d1672409fa9a3366647348b1da50859285a5c2289eff6a
3
+ metadata.gz: 58cb59f7b97099d4e94b66bdf46f9cfc7e4f39893cf88b56b23b352476f3bb2f
4
+ data.tar.gz: 2c81b4d5a3226c0c5d3cc25176625183f5a3766bea7a120b134604bfb030dc16
5
5
  SHA512:
6
- metadata.gz: 26fa00576ee5e90f59da9391bd13eaaf46cad4aa513d2d679f8e1de23d4190ba269c734a40b443ee954360436932f66d1a6ac691e5de72d2c58c838a50108f72
7
- data.tar.gz: 1c5de9a5fd5da14b6ee2c2d92a5af01f8227ff5e17bd4129fe4d6fecebbded54a9553502a17115e75c1237f8574f147f3d0aad7653ee7b8718e85e4d95a98c02
6
+ metadata.gz: dcea670e59016cb7b6a6b297239130ee3a9ff372a94acc8edd4f31a623a6db842f9a43d3cf92ff8253eb77108055ad213d82f12645f572f40548968d435ec7ec
7
+ data.tar.gz: bde518c1731e7ae15d864f87f423d518672ea856251263092f408875c8c6d8c4acc52f023015c90edbb9cc917b15243539e37c7f7f093684837718c8accac798
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- da_funk (3.28.0)
4
+ da_funk (3.30.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,32 @@
1
1
  # DaFunk
2
2
 
3
+ ### 3.30.0 - 2020-11-16
4
+
5
+ - Replace GPRS icon to 3G;
6
+ - Added new method main_image_format on Device::Display;
7
+ - Use main_image_format method to get the image name instead adapter;
8
+ - Added new class DaFunk::Transaction::Reversal.
9
+
10
+ ### 3.29.1 - 2020-11-04
11
+
12
+ - Fix battery charging status. When power supply is connected the SDK always returns 50% of battery, in this case it won't show the percentage until the SDK returns 100%.
13
+
14
+ ### 3.29.0 - 2020-11-03
15
+
16
+ - Added support to Ruby SecureRandom;
17
+ - Update cloudwalk_handshake (1.21.3).
18
+
19
+ ### 3.28.2 - 2020-10-07
20
+
21
+ - Added support of params.dat file restore if it was corrupted;
22
+ - Wait 3 seconds before restart after main update;
23
+ - Fixed method_missing exception;
24
+
25
+ ### 3.28.1 - 2020-09-26
26
+
27
+ - Close socket in case of ssl exceptions;
28
+ - Do not assign nil to PaymentChannel#current and client on error because this is already being done on PaymentChannel#close.
29
+
3
30
  ### 3.28.0 - 2020-09-25
4
31
 
5
32
  - Check if system update file is present after device restart in order to continue with system update process;
data/Rakefile CHANGED
@@ -53,9 +53,11 @@ FILES = FileList[
53
53
  "lib/da_funk/application.rb",
54
54
  "lib/da_funk/transaction/iso.rb",
55
55
  "lib/da_funk/transaction/download.rb",
56
+ "lib/da_funk/transaction/reversal.rb",
56
57
  "lib/da_funk/notification_event.rb",
57
58
  "lib/da_funk/notification_callback.rb",
58
59
  "lib/da_funk/notification.rb",
60
+ "lib/da_funk/secure_random.rb",
59
61
 
60
62
  "lib/device.rb",
61
63
  "lib/device/audio.rb",
@@ -123,7 +123,7 @@ module DaFunk
123
123
  self.signal = sig
124
124
 
125
125
  if Device::Network.gprs?
126
- Device::Display.print_status_bar(SLOT_MEDIA, "./shared/GPRS.png")
126
+ Device::Display.print_status_bar(SLOT_MEDIA, "./shared/3G.png")
127
127
  Device::Display.print_status_bar(SLOT_SIGNAL_LEVEL,
128
128
  get_image_path(:gprs, self.signal))
129
129
  elsif Device::Network.wifi?
@@ -146,8 +146,13 @@ module DaFunk
146
146
  self.battery = bat
147
147
  self.power = dock
148
148
 
149
- Device::Display.print_status_bar(SLOT_BATTERY_PERCENTUAL,
150
- get_image_path(:battery_percentual, self.battery))
149
+ if self.power && self.battery == 50
150
+ Device::Display.print_status_bar(SLOT_BATTERY_PERCENTUAL, nil)
151
+ else
152
+ percentual = get_image_path(:battery_percentual, self.battery)
153
+ Device::Display.print_status_bar(SLOT_BATTERY_PERCENTUAL, percentual)
154
+ end
155
+
151
156
  if self.power
152
157
  Device::Display.print_status_bar(
153
158
  SLOT_BATTERY_LEVEL, get_image_path(:battery_charge, self.battery))
@@ -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
@@ -153,6 +163,7 @@ module DaFunk
153
163
  Device::Display.clear
154
164
  if File.exists?('./shared/init_reboot.bmp')
155
165
  Device::Display.print_bitmap('./shared/init_reboot.bmp')
166
+ getc(3000)
156
167
  else
157
168
  I18n.pt(:admin_main_update_message)
158
169
  3.times do |i|
@@ -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
@@ -0,0 +1,13 @@
1
+ module DaFunk
2
+ class Transaction
3
+ class Reversal
4
+ def self.filename
5
+ DaFunk::ParamsDat.file['reversal_file_name'] || 'cw_reversal_transact.dat'
6
+ end
7
+
8
+ def self.exists?
9
+ File.exists? "./shared/#{filename}"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="3.28.0"
2
+ VERSION="3.30.0"
3
3
  end
4
4
 
@@ -71,13 +71,22 @@ class Device
71
71
  end
72
72
 
73
73
  def self.main_image
74
- if adapter.respond_to?(:main_image) &&
75
- File.exists?("./shared/#{adapter.main_image}")
76
- adapter.main_image
74
+ file = main_image_format
75
+ if File.exists?("./shared/#{file}")
76
+ file
77
77
  else
78
78
  MAIN_BMP
79
79
  end
80
80
  end
81
+
82
+ private
83
+ def self.main_image_format
84
+ if DaFunk::Transaction::Reversal.exists?
85
+ "main_#{Device::System.model}_reversal.bmp"
86
+ else
87
+ "main_#{Device::System.model}.bmp"
88
+ end
89
+ end
81
90
  end
82
91
  end
83
92
 
@@ -152,16 +152,16 @@ class Device
152
152
 
153
153
  # Custom Attributes
154
154
  def self.tcp_recv_timeout
155
- DaFunk::ParamsDat.file["tcp_recv_timeout"] || method_missing(:tcp_recv_timeout)
155
+ DaFunk::ParamsDat.file["tcp_recv_timeout"] || @file&.dig("tcp_recv_timeout")
156
156
  end
157
157
 
158
158
  def self.attach_gprs_timeout
159
- 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"))
160
160
  value.to_s.empty? ? nil : value.to_s.to_i
161
161
  end
162
162
 
163
163
  def self.heartbeat
164
- DaFunk::ParamsDat.file["heartbeat"] || method_missing(:heartbeat)
164
+ DaFunk::ParamsDat.file["heartbeat"] || @file&.dig("heartbeat")
165
165
  end
166
166
 
167
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.28.0
4
+ version: 3.30.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-25 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -174,10 +174,12 @@ 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
180
181
  - lib/da_funk/transaction/iso.rb
182
+ - lib/da_funk/transaction/reversal.rb
181
183
  - lib/da_funk/version.rb
182
184
  - lib/device.rb
183
185
  - lib/device/audio.rb
@@ -220,6 +222,7 @@ files:
220
222
  - test/resources/shared/bitmap_gp.dat
221
223
  - test/test_helper.rb
222
224
  - test/unit/da_funk/event_listener_test.rb
225
+ - test/unit/da_funk/secure_random.rb
223
226
  - test/unit/da_funk/struct_test.rb
224
227
  - test/unit/da_funk/support_test.rb
225
228
  - test/unit/device/application_test.rb
@@ -269,6 +272,7 @@ test_files:
269
272
  - test/resources/shared/bitmap_gp.dat
270
273
  - test/test_helper.rb
271
274
  - test/unit/da_funk/event_listener_test.rb
275
+ - test/unit/da_funk/secure_random.rb
272
276
  - test/unit/da_funk/struct_test.rb
273
277
  - test/unit/da_funk/support_test.rb
274
278
  - test/unit/device/application_test.rb