smartdust-client 1.1.0 → 1.2.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: d5ad0e2e8968ddc2d92112ef56c8ad15403b99507f9699b45e18fd75c42adf76
4
- data.tar.gz: a44754161a3a0a3eb9ce069717c6c00e5ce2ffce12d00380c43764863172101d
3
+ metadata.gz: aecd7f3f68308d02daca89b7dde9ac29af0f591b9b6958156f88ad8b3220e392
4
+ data.tar.gz: 12ec2efbf1d1c92858e751991b7199d4c3eab74ea2fcca89cd89146f255a8456
5
5
  SHA512:
6
- metadata.gz: 9ff4070a8ba7c49778a713b777e149487747a9aa28462f5cbc8bbbc7f0e8d918a344312f6652c49a4a6a2469fd4ab56d0ef09f4f6cb1b3feb1cb49598df3a7df
7
- data.tar.gz: 84bd40b60b759ea84d4b498c96b0a91c139be9bc398bb0de72c3cc71d89347b5713b0c502d034bc3e75edd25447bd38c36832263059b632754bf5dd8145ad03f
6
+ metadata.gz: c9135de81485161d76a5d7f245a363eac06f37aafa64c7df012579a41d69b3000b76fe13b86629210de374e10015f636d453221e2dece03f29873320dbb3a839
7
+ data.tar.gz: 41aa90c194c5c10f9cde3a85ee694556ccd77a74d952e2458ef8e1f4260ca41fdd35fdb2e7cb94b98017df6dc24636d405033e0f6510830632de39cf8dfc71a3
data/lib/di.rb CHANGED
@@ -10,6 +10,7 @@ require 'stf/interactor/remove_all_user_devices_interactor'
10
10
  require 'stf/interactor/get_keys_interactor'
11
11
  require 'stf/interactor/get_values_interactor'
12
12
  require 'stf/interactor/add_adb_public_key'
13
+ require 'stf/interactor/connect_ios_interactor'
13
14
  require 'stf/validate/uri_validator'
14
15
  require 'stf/model/device_enhancer'
15
16
 
@@ -70,9 +71,14 @@ class DI
70
71
  c.register(:add_adb_public_key_interactor,
71
72
  -> {Stf::AddAdbPublicKeyInteractor.new},
72
73
  memoize: true)
74
+
73
75
  c.register(:device_enhancer,
74
76
  -> {Stf::DeviceEnhancer.new},
75
77
  memoize: true)
78
+
79
+ c.register(:connect_ios,
80
+ -> {Stf::ConnectIosInteractor.new("sd_remoteios", "idevice_id")},
81
+ memoize: true)
76
82
  end
77
83
 
78
84
  def [](what)
@@ -83,4 +89,4 @@ class DI
83
89
  @@container
84
90
  end
85
91
  end
86
- end
92
+ end
@@ -0,0 +1,50 @@
1
+ module Stf
2
+ class ConnectIosInteractor
3
+
4
+ @@connected_ios_urls = Array.new
5
+
6
+ def initialize(sd_remote_ios_path, ideviceid_path)
7
+ @sd_remote_ios = sd_remote_ios_path
8
+ @ideviceid = ideviceid_path
9
+ end
10
+
11
+ def connect(url, serial)
12
+ if connected_ios_devices().include? serial
13
+ @@connected_ios_urls.append(url)
14
+ else
15
+ `sudo rm -rf /tmp/usbfluxd`
16
+ `sudo systemctl restart usbmuxd`
17
+ disconnect()
18
+ connected_before = connected_ios_devices().count
19
+ fork do
20
+ `sudo #{@sd_remote_ios} -c #{url} &`
21
+ end
22
+ sleep 2
23
+ if connected_ios_devices().count > connected_before
24
+ @@connected_ios_urls.append(url)
25
+ else
26
+ raise "Cannot connect to iOS device"
27
+ end
28
+ end
29
+ end
30
+
31
+ def disconnect()
32
+ `sudo pkill -f #{@sd_remote_ios}`
33
+ @@connected_ios_urls = Array.new
34
+ end
35
+
36
+ def connected_ios_urls()
37
+ return @@connected_ios_urls
38
+ end
39
+
40
+ def connected_ios_devices()
41
+ ideviceid_output = `#{@ideviceid} -l`.split("\n")
42
+ if ((ideviceid_output.select {|line| line.include? " "}).size > 0) or ideviceid_output.empty?
43
+ return Array.new
44
+ else
45
+ return ideviceid_output
46
+ end
47
+ end
48
+
49
+ end
50
+ end
@@ -1,8 +1,10 @@
1
1
  require 'ADB'
2
2
 
3
+ require 'di'
3
4
  require 'stf/client'
4
5
  require 'stf/log/log'
5
6
  require 'stf/model/device_list'
7
+ require 'stf/interactor/connect_ios_interactor'
6
8
 
7
9
  module Stf
8
10
  class StartDebugSessionInteractor
@@ -94,7 +96,7 @@ module Stf
94
96
  if all_flag
95
97
  to_connect = stf_devices.size
96
98
  else
97
- connected = devices & all_devices.as_connect_url_list
99
+ connected = (devices + DI[:connect_ios].connected_ios_urls()) & all_devices.as_connect_url_list
98
100
  to_connect = wanted - connected.size
99
101
  end
100
102
 
@@ -117,7 +119,7 @@ module Stf
117
119
  def count_connected_devices(filter)
118
120
  stf_devices = DeviceList.new(DI[:stf].get_user_devices)
119
121
  stf_devices = stf_devices.by_filter(filter) if filter
120
- connected = devices & stf_devices.as_connect_url_list
122
+ connected = (devices + DI[:connect_ios].connected_ios_urls()) & stf_devices.as_connect_url_list
121
123
  connected.size
122
124
  end
123
125
 
@@ -141,7 +143,7 @@ module Stf
141
143
  end
142
144
  end
143
145
 
144
- dead_persons = stf_devices.as_connect_url_list - devices
146
+ dead_persons = stf_devices.as_connect_url_list - (devices + DI[:connect_ios].connected_ios_urls())
145
147
  unless dead_persons.empty?
146
148
  logger.info 'will be disconnected because not present locally: ' + dead_persons.join(',')
147
149
  to_disconnect += dead_persons
@@ -44,10 +44,17 @@ module Stf
44
44
  end
45
45
  remote_connect_tunneled_url = DI[:device_enhancer].get_tunneled_remote_connect_url(device)
46
46
  logger.info remote_connect_tunneled_url
47
- execute_adb_with 30, "connect #{remote_connect_tunneled_url}"
48
47
 
49
- shell('echo adbtest', {serial: "#{remote_connect_tunneled_url}"}, 30)
50
- raise ADBError, "Could not execute shell test" unless stdout_contains "adbtest"
48
+ case device.getValue "platform"
49
+ when "Android"
50
+ execute_adb_with 30, "connect #{remote_connect_tunneled_url}"
51
+ shell('echo adbtest', {serial: "#{remote_connect_tunneled_url}"}, 30)
52
+ raise ADBError, "Could not execute shell test" unless stdout_contains "adbtest"
53
+ when "iOS"
54
+ DI[:connect_ios].connect(remote_connect_tunneled_url, device.getValue("serial"))
55
+ else
56
+ logger.error "Unrecognized device platform"
57
+ end
51
58
 
52
59
  return true
53
60
 
@@ -73,4 +80,4 @@ module Stf
73
80
  s.gsub(/["]/, '\"').gsub(/[ ]/, '\ ').gsub(/[=]/, '\=').gsub(/[,]/, '\,')
74
81
  end
75
82
  end
76
- end
83
+ end
@@ -14,7 +14,11 @@ module Stf
14
14
  device = remote_devices.find {|d| d.remoteConnect == true && DI[:device_enhancer].get_tunneled_remote_connect_url(d).eql?(remote_connect_url)}
15
15
 
16
16
  # try to disconnect anyway
17
- execute_adb_with 30, "disconnect #{remote_connect_url}"
17
+ if DI[:connect_ios].connected_ios_devices.include? remote_connect_url
18
+ DI[:connect_ios].disconnect()
19
+ else
20
+ execute_adb_with 30, "disconnect #{remote_connect_url}"
21
+ end
18
22
 
19
23
  if device.nil?
20
24
  logger.error "Device #{remote_connect_url} is not available"
data/lib/stf/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Stf
2
- VERSION = '1.1.0'
2
+ VERSION = '1.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartdust-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Smartdust
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-31 00:00:00.000000000 Z
11
+ date: 2023-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli
@@ -229,6 +229,7 @@ files:
229
229
  - lib/stf.rb
230
230
  - lib/stf/client.rb
231
231
  - lib/stf/interactor/add_adb_public_key.rb
232
+ - lib/stf/interactor/connect_ios_interactor.rb
232
233
  - lib/stf/interactor/get_keys_interactor.rb
233
234
  - lib/stf/interactor/get_values_interactor.rb
234
235
  - lib/stf/interactor/remove_all_user_devices_interactor.rb