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 +4 -4
- data/lib/di.rb +7 -1
- data/lib/stf/interactor/connect_ios_interactor.rb +50 -0
- data/lib/stf/interactor/start_debug_session_interactor.rb +5 -3
- data/lib/stf/interactor/start_one_debug_session_interactor.rb +11 -4
- data/lib/stf/interactor/stop_debug_session_interactor.rb +5 -1
- data/lib/stf/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aecd7f3f68308d02daca89b7dde9ac29af0f591b9b6958156f88ad8b3220e392
|
4
|
+
data.tar.gz: 12ec2efbf1d1c92858e751991b7199d4c3eab74ea2fcca89cd89146f255a8456
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
50
|
-
|
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
|
-
|
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
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.
|
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-
|
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
|