appium-ios-remotexpc 0.24.0 → 0.24.2
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.
- package/CHANGELOG.md +12 -0
- package/build/src/lib/apple-tv/discovery/device-discovery.d.ts +0 -1
- package/build/src/lib/apple-tv/discovery/device-discovery.d.ts.map +1 -1
- package/build/src/lib/apple-tv/discovery/device-discovery.js +3 -3
- package/build/src/lib/apple-tv/pairing/user-input-service.d.ts +0 -1
- package/build/src/lib/apple-tv/pairing/user-input-service.d.ts.map +1 -1
- package/build/src/lib/apple-tv/pairing/user-input-service.js +3 -3
- package/build/src/lib/apple-tv/storage/pairing-storage.d.ts +0 -1
- package/build/src/lib/apple-tv/storage/pairing-storage.d.ts.map +1 -1
- package/build/src/lib/apple-tv/storage/pairing-storage.js +8 -8
- package/build/src/lib/apple-tv/tunnel/tunnel-service.d.ts +0 -1
- package/build/src/lib/apple-tv/tunnel/tunnel-service.d.ts.map +1 -1
- package/build/src/lib/apple-tv/tunnel/tunnel-service.js +15 -15
- package/build/src/lib/lockdown/index.d.ts.map +1 -1
- package/build/src/lib/lockdown/index.js +13 -13
- package/build/src/lib/types.d.ts +3 -2
- package/build/src/lib/types.d.ts.map +1 -1
- package/build/src/services/ios/mobile-config/index.d.ts +31 -4
- package/build/src/services/ios/mobile-config/index.d.ts.map +1 -1
- package/build/src/services/ios/mobile-config/index.js +5 -5
- package/package.json +3 -3
- package/src/lib/apple-tv/discovery/device-discovery.ts +4 -4
- package/src/lib/apple-tv/pairing/user-input-service.ts +4 -4
- package/src/lib/apple-tv/storage/pairing-storage.ts +9 -8
- package/src/lib/apple-tv/tunnel/tunnel-service.ts +15 -25
- package/src/lib/lockdown/index.ts +13 -15
- package/src/lib/types.ts +3 -2
- package/src/services/ios/mobile-config/index.ts +43 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [0.24.2](https://github.com/appium/appium-ios-remotexpc/compare/v0.24.1...v0.24.2) (2026-01-06)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* **mobile-config:** use `ProfileList` for semantics and details ([#127](https://github.com/appium/appium-ios-remotexpc/issues/127)) ([332fd31](https://github.com/appium/appium-ios-remotexpc/commit/332fd31f5fd20be40a40ed09be8a5905811b7d00))
|
|
6
|
+
|
|
7
|
+
## [0.24.1](https://github.com/appium/appium-ios-remotexpc/compare/v0.24.0...v0.24.1) (2026-01-02)
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* **deps-dev:** bump the dev-dependencies group across 1 directory with 2 updates ([#98](https://github.com/appium/appium-ios-remotexpc/issues/98)) ([fdb6156](https://github.com/appium/appium-ios-remotexpc/commit/fdb6156d04d9039c266a89f37d885e344cc7e906))
|
|
12
|
+
|
|
1
13
|
## [0.24.0](https://github.com/appium/appium-ios-remotexpc/compare/v0.23.0...v0.24.0) (2026-01-02)
|
|
2
14
|
|
|
3
15
|
### Features
|
|
@@ -3,7 +3,6 @@ import type { PairingConfig } from '../types.js';
|
|
|
3
3
|
/** Discovers Apple TV devices on the local network using Bonjour */
|
|
4
4
|
export declare class DeviceDiscoveryService {
|
|
5
5
|
private readonly config;
|
|
6
|
-
private readonly log;
|
|
7
6
|
constructor(config: PairingConfig);
|
|
8
7
|
discoverDevices(): Promise<AppleTVDevice[]>;
|
|
9
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-discovery.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/discovery/device-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"device-discovery.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/discovery/device-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAEnB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,oEAAoE;AACpE,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,eAAe,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAkBlD"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { BonjourDiscovery, } from '../../bonjour/bonjour-discovery.js';
|
|
2
2
|
import { getLogger } from '../../logger.js';
|
|
3
3
|
import { PairingError } from '../errors.js';
|
|
4
|
+
const log = getLogger('DeviceDiscoveryService');
|
|
4
5
|
/** Discovers Apple TV devices on the local network using Bonjour */
|
|
5
6
|
export class DeviceDiscoveryService {
|
|
6
7
|
config;
|
|
7
|
-
log = getLogger('DeviceDiscoveryService');
|
|
8
8
|
constructor(config) {
|
|
9
9
|
this.config = config;
|
|
10
10
|
}
|
|
11
11
|
async discoverDevices() {
|
|
12
12
|
try {
|
|
13
13
|
const discovery = new BonjourDiscovery();
|
|
14
|
-
|
|
14
|
+
log.info(`Discovering Apple TV devices (waiting ${this.config.discoveryTimeout / 1000} seconds)...`);
|
|
15
15
|
return await discovery.discoverAppleTVDevicesWithIP(this.config.discoveryTimeout);
|
|
16
16
|
}
|
|
17
17
|
catch (error) {
|
|
18
|
-
|
|
18
|
+
log.error('Device discovery failed:', error);
|
|
19
19
|
throw new PairingError('Device discovery failed', 'DISCOVERY_ERROR', error);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { UserInputInterface } from '../pairing-protocol/types.js';
|
|
2
2
|
/** Handles user interaction for PIN input during pairing */
|
|
3
3
|
export declare class UserInputService implements UserInputInterface {
|
|
4
|
-
private readonly log;
|
|
5
4
|
promptForPIN(): Promise<string>;
|
|
6
5
|
promptForInput(prompt: string): Promise<string>;
|
|
7
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-input-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/user-input-service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"user-input-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/pairing/user-input-service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIvE,4DAA4D;AAC5D,qBAAa,gBAAiB,YAAW,kBAAkB;IACnD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAyC/B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkBtD"}
|
|
@@ -2,9 +2,9 @@ import { createInterface } from 'node:readline';
|
|
|
2
2
|
import { getLogger } from '../../logger.js';
|
|
3
3
|
import { PairingError } from '../errors.js';
|
|
4
4
|
import { NETWORK_CONSTANTS } from '../network/constants.js';
|
|
5
|
+
const log = getLogger('UserInputService');
|
|
5
6
|
/** Handles user interaction for PIN input during pairing */
|
|
6
7
|
export class UserInputService {
|
|
7
|
-
log = getLogger('UserInputService');
|
|
8
8
|
async promptForPIN() {
|
|
9
9
|
const rl = createInterface({
|
|
10
10
|
input: process.stdin,
|
|
@@ -27,10 +27,10 @@ export class UserInputService {
|
|
|
27
27
|
});
|
|
28
28
|
const cleanPin = pin.trim();
|
|
29
29
|
if (!/^\d+$/.test(cleanPin)) {
|
|
30
|
-
|
|
30
|
+
log.error('Invalid PIN format');
|
|
31
31
|
throw new PairingError('PIN must contain only digits', 'INVALID_PIN');
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
log.debug('PIN received successfully');
|
|
34
34
|
return cleanPin;
|
|
35
35
|
}
|
|
36
36
|
finally {
|
|
@@ -3,7 +3,6 @@ import type { PairRecord, PairingStorageInterface } from './types.js';
|
|
|
3
3
|
/** Manages persistent storage of pairing credentials as plist files */
|
|
4
4
|
export declare class PairingStorage implements PairingStorageInterface {
|
|
5
5
|
private readonly config;
|
|
6
|
-
private readonly log;
|
|
7
6
|
private readonly box;
|
|
8
7
|
private strongboxDir?;
|
|
9
8
|
constructor(config: PairingConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairing-storage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/pairing-storage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"pairing-storage.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/storage/pairing-storage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAItE,uEAAuE;AACvE,qBAAa,cAAe,YAAW,uBAAuB;IAIhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;IACrB,OAAO,CAAC,YAAY,CAAC,CAAS;gBAED,MAAM,EAAE,aAAa;IAI5C,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,mBAAmB,SAAK,GACvB,OAAO,CAAC,MAAM,CAAC;IAyBZ,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAwClD,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBhD,OAAO,CAAC,kBAAkB;CAW3B"}
|
|
@@ -6,10 +6,10 @@ import { getLogger } from '../../logger.js';
|
|
|
6
6
|
import { createXmlPlist, parseXmlPlist } from '../../plist/index.js';
|
|
7
7
|
import { APPLETV_PAIRING_PREFIX } from '../constants.js';
|
|
8
8
|
import { PairingError } from '../errors.js';
|
|
9
|
+
const log = getLogger('PairingStorage');
|
|
9
10
|
/** Manages persistent storage of pairing credentials as plist files */
|
|
10
11
|
export class PairingStorage {
|
|
11
12
|
config;
|
|
12
|
-
log = getLogger('PairingStorage');
|
|
13
13
|
box;
|
|
14
14
|
strongboxDir;
|
|
15
15
|
constructor(config) {
|
|
@@ -22,11 +22,11 @@ export class PairingStorage {
|
|
|
22
22
|
const plistContent = this.createPlistContent(ltpk, ltsk, remoteUnlockHostKey);
|
|
23
23
|
const item = await this.box.createItemWithValue(itemName, plistContent);
|
|
24
24
|
const itemPath = item.id;
|
|
25
|
-
|
|
25
|
+
log.info(`Pairing record saved to: ${itemPath}`);
|
|
26
26
|
return itemPath;
|
|
27
27
|
}
|
|
28
28
|
catch (error) {
|
|
29
|
-
|
|
29
|
+
log.error('Save pairing record error:', error);
|
|
30
30
|
throw new PairingError('Failed to save pairing record', 'SAVE_ERROR', error);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -36,7 +36,7 @@ export class PairingStorage {
|
|
|
36
36
|
const item = this.box.getItem(itemName) ?? (await this.box.createItem(itemName));
|
|
37
37
|
const pairingData = await item.read();
|
|
38
38
|
if (!pairingData) {
|
|
39
|
-
|
|
39
|
+
log.debug(`No pair record found for device ${deviceId}`);
|
|
40
40
|
return null;
|
|
41
41
|
}
|
|
42
42
|
const parsed = parseXmlPlist(pairingData);
|
|
@@ -49,7 +49,7 @@ export class PairingStorage {
|
|
|
49
49
|
const publicKey = Buffer.isBuffer(parsed.public_key)
|
|
50
50
|
? parsed.public_key
|
|
51
51
|
: Buffer.from(parsed.public_key, 'base64');
|
|
52
|
-
|
|
52
|
+
log.debug(`Loaded pair record for ${deviceId}`);
|
|
53
53
|
return {
|
|
54
54
|
privateKey,
|
|
55
55
|
publicKey,
|
|
@@ -57,7 +57,7 @@ export class PairingStorage {
|
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
59
|
catch (error) {
|
|
60
|
-
|
|
60
|
+
log.error(`Failed to load pair record for ${deviceId}:`, error);
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -73,11 +73,11 @@ export class PairingStorage {
|
|
|
73
73
|
const deviceIds = files
|
|
74
74
|
.filter((file) => file.startsWith(APPLETV_PAIRING_PREFIX))
|
|
75
75
|
.map((file) => file.replace(APPLETV_PAIRING_PREFIX, ''));
|
|
76
|
-
|
|
76
|
+
log.debug(`Found ${deviceIds.length} pair record(s): ${deviceIds.join(', ')}`);
|
|
77
77
|
return deviceIds;
|
|
78
78
|
}
|
|
79
79
|
catch (error) {
|
|
80
|
-
|
|
80
|
+
log.debug('Error getting available device IDs:', error);
|
|
81
81
|
return [];
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -7,7 +7,6 @@ export declare class TunnelService {
|
|
|
7
7
|
private readonly networkClient;
|
|
8
8
|
private readonly keys;
|
|
9
9
|
private sequenceNumber;
|
|
10
|
-
private static readonly log;
|
|
11
10
|
private encryptedSequenceNumber;
|
|
12
11
|
constructor(networkClient: NetworkClientInterface, keys: VerificationKeys, sequenceNumber: number);
|
|
13
12
|
createTcpListener(): Promise<TcpListenerInfo>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/tunnel/tunnel-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAUxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAG1F,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tunnel-service.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/tunnel/tunnel-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAUxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAG1F,OAAO,KAAK,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAC;AAK3E,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,cAAc;IALxB,OAAO,CAAC,uBAAuB,CAAK;gBAGjB,aAAa,EAAE,sBAAsB,EACrC,IAAI,EAAE,gBAAgB,EAC/B,cAAc,EAAE,MAAM;IAG1B,iBAAiB,IAAI,OAAO,CAAC,eAAe,CAAC;IAkF7C,sBAAsB,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IA4DzB,iBAAiB,IAAI,MAAM;CAG5B;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,cAAc,CAAK;;IAO3B,UAAU,IAAI,IAAI;IAIZ,WAAW,CACf,QAAQ,CAAC,EAAE,MAAM,EACjB,wBAAwB,CAAC,EAAE,MAAM,GAChC,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC;IAiD5D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;OAEG;YACW,yBAAyB;IAgBvC;;OAEG;YACW,uBAAuB;IA2DrC;;OAEG;IACH,OAAO,CAAC,iBAAiB;YAWX,eAAe;YAoDf,gBAAgB;YA4BhB,uBAAuB;YAmBvB,iBAAiB;YAiBjB,sBAAsB;CAYrC"}
|
|
@@ -9,12 +9,12 @@ import { PairingError } from '../errors.js';
|
|
|
9
9
|
import { NetworkClient } from '../network/index.js';
|
|
10
10
|
import { PairVerificationProtocol } from '../pairing-protocol/index.js';
|
|
11
11
|
import { PairingStorage } from '../storage/pairing-storage.js';
|
|
12
|
+
const log = getLogger('TunnelService');
|
|
12
13
|
const appleTVLog = getLogger('AppleTVTunnelService');
|
|
13
14
|
export class TunnelService {
|
|
14
15
|
networkClient;
|
|
15
16
|
keys;
|
|
16
17
|
sequenceNumber;
|
|
17
|
-
static log = getLogger('TunnelService');
|
|
18
18
|
encryptedSequenceNumber = 0;
|
|
19
19
|
constructor(networkClient, keys, sequenceNumber) {
|
|
20
20
|
this.networkClient = networkClient;
|
|
@@ -22,7 +22,7 @@ export class TunnelService {
|
|
|
22
22
|
this.sequenceNumber = sequenceNumber;
|
|
23
23
|
}
|
|
24
24
|
async createTcpListener() {
|
|
25
|
-
|
|
25
|
+
log.debug('Creating TCP listener (Encrypted Request)');
|
|
26
26
|
const request = {
|
|
27
27
|
request: {
|
|
28
28
|
_0: {
|
|
@@ -73,20 +73,20 @@ export class TunnelService {
|
|
|
73
73
|
const responseJson = JSON.parse(decrypted.toString('utf8'));
|
|
74
74
|
const createListenerResponse = responseJson?.response?._1?.createListener;
|
|
75
75
|
if (!createListenerResponse?.port) {
|
|
76
|
-
|
|
76
|
+
log.error('Invalid createListener response:', responseJson);
|
|
77
77
|
throw new PairingError('TCP listener creation failed: missing port in response', 'LISTENER_PORT_MISSING', { response: responseJson });
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
log.debug(`TCP Listener created on port: ${createListenerResponse.port}`);
|
|
80
80
|
return createListenerResponse;
|
|
81
81
|
}
|
|
82
82
|
async createTlsPskConnection(hostname, port) {
|
|
83
|
-
|
|
83
|
+
log.debug(`Creating TLS-PSK connection to ${hostname}:${port}`);
|
|
84
84
|
return new Promise((resolve, reject) => {
|
|
85
85
|
const options = {
|
|
86
86
|
host: hostname,
|
|
87
87
|
port,
|
|
88
88
|
pskCallback: (hint) => {
|
|
89
|
-
|
|
89
|
+
log.debug(`PSK callback invoked with hint: ${hint}`);
|
|
90
90
|
return {
|
|
91
91
|
psk: this.keys.encryptionKey,
|
|
92
92
|
identity: '',
|
|
@@ -105,26 +105,26 @@ export class TunnelService {
|
|
|
105
105
|
checkServerIdentity: () => undefined,
|
|
106
106
|
};
|
|
107
107
|
const socket = tls.connect(options, () => {
|
|
108
|
-
|
|
108
|
+
log.debug('TLS-PSK connection established');
|
|
109
109
|
resolve(socket);
|
|
110
110
|
});
|
|
111
111
|
socket.on('error', (error) => {
|
|
112
|
-
|
|
112
|
+
log.error('TLS-PSK connection error:', error);
|
|
113
113
|
if (error.message?.includes('no shared cipher') ||
|
|
114
114
|
error.code === 'ECONNRESET') {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
115
|
+
log.error('PSK ciphers may not be available in your Node.js build');
|
|
116
|
+
log.error('You may need to:');
|
|
117
|
+
log.error('1. Use Node.js compiled with PSK-enabled OpenSSL');
|
|
118
|
+
log.error('2. Use a Python subprocess for the TLS-PSK connection');
|
|
119
|
+
log.error('3. Use a native module like node-openssl');
|
|
120
120
|
}
|
|
121
121
|
reject(error);
|
|
122
122
|
});
|
|
123
123
|
socket.on('secureConnect', () => {
|
|
124
|
-
|
|
124
|
+
log.debug('Secure connection event fired');
|
|
125
125
|
});
|
|
126
126
|
socket.on('tlsClientError', (error) => {
|
|
127
|
-
|
|
127
|
+
log.error('TLS client error:', error);
|
|
128
128
|
});
|
|
129
129
|
});
|
|
130
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/lockdown/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAY,EAAE,KAAK,iBAAiB,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAgB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/lockdown/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ import {} from '../pair-record/index.js';
|
|
|
6
6
|
import { PlistService } from '../plist/plist-service.js';
|
|
7
7
|
import { RelayService, createUsbmux } from '../usbmux/index.js';
|
|
8
8
|
const log = getLogger('Lockdown');
|
|
9
|
+
const tlsManagerLog = getLogger('TLSManager');
|
|
10
|
+
const deviceManagerLog = getLogger('DeviceManager');
|
|
9
11
|
// Constants
|
|
10
12
|
const LABEL = 'appium-internal';
|
|
11
13
|
const DEFAULT_TIMEOUT = 5000;
|
|
@@ -32,29 +34,28 @@ class DeviceNotFoundError extends Error {
|
|
|
32
34
|
}
|
|
33
35
|
// TLS Manager for handling TLS operations
|
|
34
36
|
class TLSManager {
|
|
35
|
-
log = getLogger('TLSManager');
|
|
36
37
|
/**
|
|
37
38
|
* Upgrades a socket to TLS
|
|
38
39
|
*/
|
|
39
40
|
async upgradeSocketToTLS(socket, tlsOptions = {}) {
|
|
40
41
|
return new Promise((resolve, reject) => {
|
|
41
42
|
socket.pause();
|
|
42
|
-
|
|
43
|
+
tlsManagerLog.debug('Upgrading socket to TLS...');
|
|
43
44
|
const secure = tls.connect({
|
|
44
45
|
socket,
|
|
45
46
|
rejectUnauthorized: false,
|
|
46
47
|
minVersion: 'TLSv1.2',
|
|
47
48
|
...tlsOptions,
|
|
48
49
|
}, () => {
|
|
49
|
-
|
|
50
|
+
tlsManagerLog.info('TLS handshake completed');
|
|
50
51
|
resolve(secure);
|
|
51
52
|
});
|
|
52
53
|
secure.on('error', (err) => {
|
|
53
|
-
|
|
54
|
+
tlsManagerLog.error(`TLS socket error: ${err}`);
|
|
54
55
|
reject(new TLSUpgradeError(`TLS socket error: ${err.message}`));
|
|
55
56
|
});
|
|
56
57
|
socket.on('error', (err) => {
|
|
57
|
-
|
|
58
|
+
tlsManagerLog.error(`Underlying socket error during TLS: ${err}`);
|
|
58
59
|
reject(new TLSUpgradeError(`Socket error during TLS: ${err.message}`));
|
|
59
60
|
});
|
|
60
61
|
});
|
|
@@ -62,16 +63,15 @@ class TLSManager {
|
|
|
62
63
|
}
|
|
63
64
|
// Device Manager for handling device operations
|
|
64
65
|
class DeviceManager {
|
|
65
|
-
log = getLogger('DeviceManager');
|
|
66
66
|
/**
|
|
67
67
|
* Lists all connected devices
|
|
68
68
|
*/
|
|
69
69
|
async listDevices() {
|
|
70
70
|
const usbmux = await createUsbmux();
|
|
71
71
|
try {
|
|
72
|
-
|
|
72
|
+
deviceManagerLog.debug('Listing connected devices...');
|
|
73
73
|
const devices = await usbmux.listDevices();
|
|
74
|
-
|
|
74
|
+
deviceManagerLog.debug(`Found ${devices.length} devices: ${devices.map((d) => d.Properties.SerialNumber).join(', ')}`);
|
|
75
75
|
return devices;
|
|
76
76
|
}
|
|
77
77
|
finally {
|
|
@@ -90,25 +90,25 @@ class DeviceManager {
|
|
|
90
90
|
if (!device) {
|
|
91
91
|
throw new DeviceNotFoundError(udid);
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
deviceManagerLog.info(`Found device: DeviceID=${device.DeviceID}, SerialNumber=${device.Properties.SerialNumber}, ConnectionType=${device.Properties.ConnectionType}`);
|
|
94
94
|
return device;
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
97
|
* Reads pair record for a device
|
|
98
98
|
*/
|
|
99
99
|
async readPairRecord(udid) {
|
|
100
|
-
|
|
100
|
+
deviceManagerLog.debug(`Retrieving pair record for UDID: ${udid}`);
|
|
101
101
|
const usbmux = await createUsbmux();
|
|
102
102
|
try {
|
|
103
103
|
const record = await usbmux.readPairRecord(udid);
|
|
104
104
|
if (!record?.HostCertificate || !record.HostPrivateKey) {
|
|
105
105
|
throw new LockdownError('Pair record missing certificate or key');
|
|
106
106
|
}
|
|
107
|
-
|
|
107
|
+
deviceManagerLog.info('Pair record retrieved successfully');
|
|
108
108
|
return record;
|
|
109
109
|
}
|
|
110
110
|
catch (err) {
|
|
111
|
-
|
|
111
|
+
deviceManagerLog.error(`Error getting pair record: ${err}`);
|
|
112
112
|
throw err;
|
|
113
113
|
}
|
|
114
114
|
finally {
|
|
@@ -120,7 +120,7 @@ class DeviceManager {
|
|
|
120
120
|
await usbmux.close();
|
|
121
121
|
}
|
|
122
122
|
catch (err) {
|
|
123
|
-
|
|
123
|
+
deviceManagerLog.error(`Error closing usbmux: ${err}`);
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
}
|
package/build/src/lib/types.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { iOSApplication } from '../services/ios/dvt/instruments/application
|
|
|
10
10
|
import type { LocationCoordinates } from '../services/ios/dvt/instruments/location-simulation.js';
|
|
11
11
|
import type { NotificationMessage } from '../services/ios/dvt/instruments/notifications.js';
|
|
12
12
|
import { ProvisioningProfile } from '../services/ios/misagent/provisioning-profile.js';
|
|
13
|
+
import type { ProfileList } from '../services/ios/mobile-config/index.js';
|
|
13
14
|
import type { PowerAssertionOptions } from '../services/ios/power-assertion/index.js';
|
|
14
15
|
import { PowerAssertionType } from '../services/ios/power-assertion/index.js';
|
|
15
16
|
import type { InterfaceOrientation } from '../services/ios/springboard-service/index.js';
|
|
@@ -215,7 +216,7 @@ export interface MobileConfigService extends BaseService {
|
|
|
215
216
|
connectToMobileConfigService(): Promise<ServiceConnection>;
|
|
216
217
|
/**
|
|
217
218
|
* Get all profiles of iOS devices
|
|
218
|
-
* @returns {Promise<
|
|
219
|
+
* @returns {Promise<ProfileList>}
|
|
219
220
|
* e.g.
|
|
220
221
|
* {
|
|
221
222
|
* OrderedIdentifiers: [ '2fac1c2b3d684843189b2981c718b0132854a847a' ],
|
|
@@ -236,7 +237,7 @@ export interface MobileConfigService extends BaseService {
|
|
|
236
237
|
* Status: 'Acknowledged'
|
|
237
238
|
* }
|
|
238
239
|
*/
|
|
239
|
-
getProfileList(): Promise<
|
|
240
|
+
getProfileList(): Promise<ProfileList>;
|
|
240
241
|
/**
|
|
241
242
|
* Install profile to iOS device
|
|
242
243
|
* @param {String} path must be a certificate file .PEM .CER and more formats
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,33 @@
|
|
|
1
|
-
import { type MobileConfigService as MobileConfigServiceInterface
|
|
1
|
+
import { type MobileConfigService as MobileConfigServiceInterface } from '../../../lib/types.js';
|
|
2
2
|
import { ServiceConnection } from '../../../service-connection.js';
|
|
3
3
|
import { BaseService } from '../base-service.js';
|
|
4
|
+
/**
|
|
5
|
+
* Profile manifest information
|
|
6
|
+
*/
|
|
7
|
+
interface ProfileManifest {
|
|
8
|
+
Description: string;
|
|
9
|
+
IsActive: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Profile metadata information
|
|
13
|
+
*/
|
|
14
|
+
interface ProfileMetadata {
|
|
15
|
+
PayloadDescription: string;
|
|
16
|
+
PayloadDisplayName: string;
|
|
17
|
+
PayloadOrganization: string;
|
|
18
|
+
PayloadRemovalDisallowed: boolean;
|
|
19
|
+
PayloadUUID: string;
|
|
20
|
+
PayloadVersion: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Profile list
|
|
24
|
+
*/
|
|
25
|
+
interface ProfileList {
|
|
26
|
+
OrderedIdentifiers: string[];
|
|
27
|
+
ProfileManifest: Record<string, ProfileManifest>;
|
|
28
|
+
ProfileMetadata: Record<string, ProfileMetadata>;
|
|
29
|
+
Status: 'Acknowledged';
|
|
30
|
+
}
|
|
4
31
|
/**
|
|
5
32
|
* MobileConfigService provides an API to:
|
|
6
33
|
* - Install configuration profiles
|
|
@@ -18,7 +45,7 @@ declare class MobileConfigService extends BaseService implements MobileConfigSer
|
|
|
18
45
|
connectToMobileConfigService(): Promise<ServiceConnection>;
|
|
19
46
|
/**
|
|
20
47
|
* Get all profiles of iOS devices
|
|
21
|
-
* @returns {Promise<
|
|
48
|
+
* @returns {Promise<ProfileList>}
|
|
22
49
|
* e.g.
|
|
23
50
|
* {
|
|
24
51
|
* OrderedIdentifiers: [ '2fac1c2b3d684843189b2981c718b0132854a847a' ],
|
|
@@ -39,7 +66,7 @@ declare class MobileConfigService extends BaseService implements MobileConfigSer
|
|
|
39
66
|
* Status: 'Acknowledged'
|
|
40
67
|
* }
|
|
41
68
|
*/
|
|
42
|
-
getProfileList(): Promise<
|
|
69
|
+
getProfileList(): Promise<ProfileList>;
|
|
43
70
|
/**
|
|
44
71
|
* Install profile from path to iOS device
|
|
45
72
|
* The phone must be unlocked before installing the profile
|
|
@@ -61,5 +88,5 @@ declare class MobileConfigService extends BaseService implements MobileConfigSer
|
|
|
61
88
|
private _sendPlistAndReceive;
|
|
62
89
|
private getServiceConfig;
|
|
63
90
|
}
|
|
64
|
-
export { MobileConfigService };
|
|
91
|
+
export { type ProfileManifest, type ProfileMetadata, type ProfileList, MobileConfigService, };
|
|
65
92
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/mobile-config/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,mBAAmB,IAAI,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/mobile-config/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,mBAAmB,IAAI,4BAA4B,EAEzD,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKjD;;GAEG;AACH,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;;;;GAKG;AACH,cAAM,mBACJ,SAAQ,WACR,YAAW,4BAA4B;IAEvC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,4CAA4C;IAC5E,OAAO,CAAC,KAAK,CAAkC;gBAEnC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAGrC;;;OAGG;IACG,4BAA4B,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAUhE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAS5C;;;;;OAKG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7D;;;;OAIG;IACG,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;;OAGG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAuCxC,oBAAoB;IAuBlC,OAAO,CAAC,gBAAgB;CASzB;AAED,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,mBAAmB,GACpB,CAAC"}
|
|
@@ -34,7 +34,7 @@ class MobileConfigService extends BaseService {
|
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Get all profiles of iOS devices
|
|
37
|
-
* @returns {Promise<
|
|
37
|
+
* @returns {Promise<ProfileList>}
|
|
38
38
|
* e.g.
|
|
39
39
|
* {
|
|
40
40
|
* OrderedIdentifiers: [ '2fac1c2b3d684843189b2981c718b0132854a847a' ],
|
|
@@ -59,7 +59,8 @@ class MobileConfigService extends BaseService {
|
|
|
59
59
|
const req = {
|
|
60
60
|
RequestType: 'GetProfileList',
|
|
61
61
|
};
|
|
62
|
-
|
|
62
|
+
const plistDict = await this._sendPlistAndReceive(req);
|
|
63
|
+
return plistDict;
|
|
63
64
|
}
|
|
64
65
|
/**
|
|
65
66
|
* Install profile from path to iOS device
|
|
@@ -116,8 +117,7 @@ class MobileConfigService extends BaseService {
|
|
|
116
117
|
if (!(identifier in profileMetadata)) {
|
|
117
118
|
// Get available identifiers from OrderedIdentifiers array or ProfileMetadata keys
|
|
118
119
|
let availableIdentifiers;
|
|
119
|
-
if (profileList.OrderedIdentifiers
|
|
120
|
-
Array.isArray(profileList.OrderedIdentifiers)) {
|
|
120
|
+
if (profileList.OrderedIdentifiers) {
|
|
121
121
|
availableIdentifiers = profileList.OrderedIdentifiers;
|
|
122
122
|
}
|
|
123
123
|
else {
|
|
@@ -164,4 +164,4 @@ class MobileConfigService extends BaseService {
|
|
|
164
164
|
};
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
export { MobileConfigService };
|
|
167
|
+
export { MobileConfigService, };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-ios-remotexpc",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.2",
|
|
4
4
|
"main": "build/src/index.js",
|
|
5
5
|
"types": "build/src/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@appium/tsconfig": "^1.0.0-rc.1",
|
|
71
71
|
"@semantic-release/changelog": "^6.0.3",
|
|
72
72
|
"@semantic-release/git": "^10.0.1",
|
|
73
|
-
"@trivago/prettier-plugin-sort-imports": "^
|
|
73
|
+
"@trivago/prettier-plugin-sort-imports": "^6.0.0",
|
|
74
74
|
"@types/chai": "^5.2.1",
|
|
75
75
|
"@types/chai-as-promised": "^8.0.2",
|
|
76
76
|
"@types/mocha": "^10.0.10",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"chai": "^6.0.1",
|
|
79
79
|
"chai-as-promised": "^8.0.1",
|
|
80
80
|
"conventional-changelog-conventionalcommits": "^9.1.0",
|
|
81
|
-
"eslint-plugin-unicorn": "^
|
|
81
|
+
"eslint-plugin-unicorn": "^62.0.0",
|
|
82
82
|
"husky": "^9.1.7",
|
|
83
83
|
"lint-staged": "^16.2.7",
|
|
84
84
|
"mocha": "^11.1.0",
|
|
@@ -6,23 +6,23 @@ import { getLogger } from '../../logger.js';
|
|
|
6
6
|
import { PairingError } from '../errors.js';
|
|
7
7
|
import type { PairingConfig } from '../types.js';
|
|
8
8
|
|
|
9
|
+
const log = getLogger('DeviceDiscoveryService');
|
|
10
|
+
|
|
9
11
|
/** Discovers Apple TV devices on the local network using Bonjour */
|
|
10
12
|
export class DeviceDiscoveryService {
|
|
11
|
-
private readonly log = getLogger('DeviceDiscoveryService');
|
|
12
|
-
|
|
13
13
|
constructor(private readonly config: PairingConfig) {}
|
|
14
14
|
|
|
15
15
|
async discoverDevices(): Promise<AppleTVDevice[]> {
|
|
16
16
|
try {
|
|
17
17
|
const discovery = new BonjourDiscovery();
|
|
18
|
-
|
|
18
|
+
log.info(
|
|
19
19
|
`Discovering Apple TV devices (waiting ${this.config.discoveryTimeout / 1000} seconds)...`,
|
|
20
20
|
);
|
|
21
21
|
return await discovery.discoverAppleTVDevicesWithIP(
|
|
22
22
|
this.config.discoveryTimeout,
|
|
23
23
|
);
|
|
24
24
|
} catch (error) {
|
|
25
|
-
|
|
25
|
+
log.error('Device discovery failed:', error);
|
|
26
26
|
throw new PairingError(
|
|
27
27
|
'Device discovery failed',
|
|
28
28
|
'DISCOVERY_ERROR',
|
|
@@ -5,10 +5,10 @@ import { PairingError } from '../errors.js';
|
|
|
5
5
|
import { NETWORK_CONSTANTS } from '../network/constants.js';
|
|
6
6
|
import type { UserInputInterface } from '../pairing-protocol/types.js';
|
|
7
7
|
|
|
8
|
+
const log = getLogger('UserInputService');
|
|
9
|
+
|
|
8
10
|
/** Handles user interaction for PIN input during pairing */
|
|
9
11
|
export class UserInputService implements UserInputInterface {
|
|
10
|
-
private readonly log = getLogger('UserInputService');
|
|
11
|
-
|
|
12
12
|
async promptForPIN(): Promise<string> {
|
|
13
13
|
const rl = createInterface({
|
|
14
14
|
input: process.stdin,
|
|
@@ -35,11 +35,11 @@ export class UserInputService implements UserInputInterface {
|
|
|
35
35
|
|
|
36
36
|
const cleanPin = pin.trim();
|
|
37
37
|
if (!/^\d+$/.test(cleanPin)) {
|
|
38
|
-
|
|
38
|
+
log.error('Invalid PIN format');
|
|
39
39
|
throw new PairingError('PIN must contain only digits', 'INVALID_PIN');
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
log.debug('PIN received successfully');
|
|
43
43
|
return cleanPin;
|
|
44
44
|
} finally {
|
|
45
45
|
// Clean up timeout if error occurred before clearing
|
|
@@ -10,9 +10,10 @@ import { PairingError } from '../errors.js';
|
|
|
10
10
|
import type { PairingConfig } from '../types.js';
|
|
11
11
|
import type { PairRecord, PairingStorageInterface } from './types.js';
|
|
12
12
|
|
|
13
|
+
const log = getLogger('PairingStorage');
|
|
14
|
+
|
|
13
15
|
/** Manages persistent storage of pairing credentials as plist files */
|
|
14
16
|
export class PairingStorage implements PairingStorageInterface {
|
|
15
|
-
private readonly log = getLogger('PairingStorage');
|
|
16
17
|
private readonly box;
|
|
17
18
|
private strongboxDir?: string;
|
|
18
19
|
|
|
@@ -37,11 +38,11 @@ export class PairingStorage implements PairingStorageInterface {
|
|
|
37
38
|
const item = await this.box.createItemWithValue(itemName, plistContent);
|
|
38
39
|
const itemPath = item.id;
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
log.info(`Pairing record saved to: ${itemPath}`);
|
|
41
42
|
|
|
42
43
|
return itemPath;
|
|
43
44
|
} catch (error) {
|
|
44
|
-
|
|
45
|
+
log.error('Save pairing record error:', error);
|
|
45
46
|
throw new PairingError(
|
|
46
47
|
'Failed to save pairing record',
|
|
47
48
|
'SAVE_ERROR',
|
|
@@ -60,7 +61,7 @@ export class PairingStorage implements PairingStorageInterface {
|
|
|
60
61
|
const pairingData = await item.read();
|
|
61
62
|
|
|
62
63
|
if (!pairingData) {
|
|
63
|
-
|
|
64
|
+
log.debug(`No pair record found for device ${deviceId}`);
|
|
64
65
|
return null;
|
|
65
66
|
}
|
|
66
67
|
|
|
@@ -77,7 +78,7 @@ export class PairingStorage implements PairingStorageInterface {
|
|
|
77
78
|
? parsed.public_key
|
|
78
79
|
: Buffer.from(parsed.public_key as string, 'base64');
|
|
79
80
|
|
|
80
|
-
|
|
81
|
+
log.debug(`Loaded pair record for ${deviceId}`);
|
|
81
82
|
|
|
82
83
|
return {
|
|
83
84
|
privateKey,
|
|
@@ -85,7 +86,7 @@ export class PairingStorage implements PairingStorageInterface {
|
|
|
85
86
|
remoteUnlockHostKey: (parsed.remote_unlock_host_key as string) || '',
|
|
86
87
|
};
|
|
87
88
|
} catch (error) {
|
|
88
|
-
|
|
89
|
+
log.error(`Failed to load pair record for ${deviceId}:`, error);
|
|
89
90
|
return null;
|
|
90
91
|
}
|
|
91
92
|
}
|
|
@@ -104,12 +105,12 @@ export class PairingStorage implements PairingStorageInterface {
|
|
|
104
105
|
.filter((file: string) => file.startsWith(APPLETV_PAIRING_PREFIX))
|
|
105
106
|
.map((file: string) => file.replace(APPLETV_PAIRING_PREFIX, ''));
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
log.debug(
|
|
108
109
|
`Found ${deviceIds.length} pair record(s): ${deviceIds.join(', ')}`,
|
|
109
110
|
);
|
|
110
111
|
return deviceIds;
|
|
111
112
|
} catch (error) {
|
|
112
|
-
|
|
113
|
+
log.debug('Error getting available device IDs:', error);
|
|
113
114
|
return [];
|
|
114
115
|
}
|
|
115
116
|
}
|
|
@@ -19,10 +19,10 @@ import { PairingStorage } from '../storage/pairing-storage.js';
|
|
|
19
19
|
import type { PairRecord } from '../storage/types.js';
|
|
20
20
|
import type { TcpListenerInfo, TlsPskConnectionOptions } from './types.js';
|
|
21
21
|
|
|
22
|
+
const log = getLogger('TunnelService');
|
|
22
23
|
const appleTVLog = getLogger('AppleTVTunnelService');
|
|
23
24
|
|
|
24
25
|
export class TunnelService {
|
|
25
|
-
private static readonly log = getLogger('TunnelService');
|
|
26
26
|
private encryptedSequenceNumber = 0;
|
|
27
27
|
|
|
28
28
|
constructor(
|
|
@@ -32,7 +32,7 @@ export class TunnelService {
|
|
|
32
32
|
) {}
|
|
33
33
|
|
|
34
34
|
async createTcpListener(): Promise<TcpListenerInfo> {
|
|
35
|
-
|
|
35
|
+
log.debug('Creating TCP listener (Encrypted Request)');
|
|
36
36
|
|
|
37
37
|
const request = {
|
|
38
38
|
request: {
|
|
@@ -100,7 +100,7 @@ export class TunnelService {
|
|
|
100
100
|
const createListenerResponse = responseJson?.response?._1?.createListener;
|
|
101
101
|
|
|
102
102
|
if (!createListenerResponse?.port) {
|
|
103
|
-
|
|
103
|
+
log.error('Invalid createListener response:', responseJson);
|
|
104
104
|
throw new PairingError(
|
|
105
105
|
'TCP listener creation failed: missing port in response',
|
|
106
106
|
'LISTENER_PORT_MISSING',
|
|
@@ -108,9 +108,7 @@ export class TunnelService {
|
|
|
108
108
|
);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
`TCP Listener created on port: ${createListenerResponse.port}`,
|
|
113
|
-
);
|
|
111
|
+
log.debug(`TCP Listener created on port: ${createListenerResponse.port}`);
|
|
114
112
|
|
|
115
113
|
return createListenerResponse;
|
|
116
114
|
}
|
|
@@ -119,16 +117,14 @@ export class TunnelService {
|
|
|
119
117
|
hostname: string,
|
|
120
118
|
port: number,
|
|
121
119
|
): Promise<tls.TLSSocket> {
|
|
122
|
-
|
|
123
|
-
`Creating TLS-PSK connection to ${hostname}:${port}`,
|
|
124
|
-
);
|
|
120
|
+
log.debug(`Creating TLS-PSK connection to ${hostname}:${port}`);
|
|
125
121
|
|
|
126
122
|
return new Promise((resolve, reject) => {
|
|
127
123
|
const options: TlsPskConnectionOptions = {
|
|
128
124
|
host: hostname,
|
|
129
125
|
port,
|
|
130
126
|
pskCallback: (hint: string | null) => {
|
|
131
|
-
|
|
127
|
+
log.debug(`PSK callback invoked with hint: ${hint}`);
|
|
132
128
|
return {
|
|
133
129
|
psk: this.keys.encryptionKey,
|
|
134
130
|
identity: '',
|
|
@@ -149,39 +145,33 @@ export class TunnelService {
|
|
|
149
145
|
};
|
|
150
146
|
|
|
151
147
|
const socket = tls.connect(options, () => {
|
|
152
|
-
|
|
148
|
+
log.debug('TLS-PSK connection established');
|
|
153
149
|
resolve(socket);
|
|
154
150
|
});
|
|
155
151
|
|
|
156
152
|
socket.on('error', (error: Error & { code?: string }) => {
|
|
157
|
-
|
|
153
|
+
log.error('TLS-PSK connection error:', error);
|
|
158
154
|
|
|
159
155
|
if (
|
|
160
156
|
error.message?.includes('no shared cipher') ||
|
|
161
157
|
error.code === 'ECONNRESET'
|
|
162
158
|
) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
'1. Use Node.js compiled with PSK-enabled OpenSSL',
|
|
169
|
-
);
|
|
170
|
-
TunnelService.log.error(
|
|
171
|
-
'2. Use a Python subprocess for the TLS-PSK connection',
|
|
172
|
-
);
|
|
173
|
-
TunnelService.log.error('3. Use a native module like node-openssl');
|
|
159
|
+
log.error('PSK ciphers may not be available in your Node.js build');
|
|
160
|
+
log.error('You may need to:');
|
|
161
|
+
log.error('1. Use Node.js compiled with PSK-enabled OpenSSL');
|
|
162
|
+
log.error('2. Use a Python subprocess for the TLS-PSK connection');
|
|
163
|
+
log.error('3. Use a native module like node-openssl');
|
|
174
164
|
}
|
|
175
165
|
|
|
176
166
|
reject(error);
|
|
177
167
|
});
|
|
178
168
|
|
|
179
169
|
socket.on('secureConnect', () => {
|
|
180
|
-
|
|
170
|
+
log.debug('Secure connection event fired');
|
|
181
171
|
});
|
|
182
172
|
|
|
183
173
|
socket.on('tlsClientError', (error) => {
|
|
184
|
-
|
|
174
|
+
log.error('TLS client error:', error);
|
|
185
175
|
});
|
|
186
176
|
});
|
|
187
177
|
}
|
|
@@ -9,6 +9,8 @@ import type { PlistMessage, PlistValue } from '../types.js';
|
|
|
9
9
|
import { RelayService, createUsbmux } from '../usbmux/index.js';
|
|
10
10
|
|
|
11
11
|
const log = getLogger('Lockdown');
|
|
12
|
+
const tlsManagerLog = getLogger('TLSManager');
|
|
13
|
+
const deviceManagerLog = getLogger('DeviceManager');
|
|
12
14
|
|
|
13
15
|
// Constants
|
|
14
16
|
const LABEL = 'appium-internal';
|
|
@@ -79,8 +81,6 @@ class DeviceNotFoundError extends Error {
|
|
|
79
81
|
|
|
80
82
|
// TLS Manager for handling TLS operations
|
|
81
83
|
class TLSManager {
|
|
82
|
-
private readonly log = getLogger('TLSManager');
|
|
83
|
-
|
|
84
84
|
/**
|
|
85
85
|
* Upgrades a socket to TLS
|
|
86
86
|
*/
|
|
@@ -90,7 +90,7 @@ class TLSManager {
|
|
|
90
90
|
): Promise<TLSSocket> {
|
|
91
91
|
return new Promise((resolve, reject) => {
|
|
92
92
|
socket.pause();
|
|
93
|
-
|
|
93
|
+
tlsManagerLog.debug('Upgrading socket to TLS...');
|
|
94
94
|
|
|
95
95
|
const secure = tls.connect(
|
|
96
96
|
{
|
|
@@ -100,18 +100,18 @@ class TLSManager {
|
|
|
100
100
|
...tlsOptions,
|
|
101
101
|
},
|
|
102
102
|
() => {
|
|
103
|
-
|
|
103
|
+
tlsManagerLog.info('TLS handshake completed');
|
|
104
104
|
resolve(secure);
|
|
105
105
|
},
|
|
106
106
|
);
|
|
107
107
|
|
|
108
108
|
secure.on('error', (err) => {
|
|
109
|
-
|
|
109
|
+
tlsManagerLog.error(`TLS socket error: ${err}`);
|
|
110
110
|
reject(new TLSUpgradeError(`TLS socket error: ${err.message}`));
|
|
111
111
|
});
|
|
112
112
|
|
|
113
113
|
socket.on('error', (err) => {
|
|
114
|
-
|
|
114
|
+
tlsManagerLog.error(`Underlying socket error during TLS: ${err}`);
|
|
115
115
|
reject(new TLSUpgradeError(`Socket error during TLS: ${err.message}`));
|
|
116
116
|
});
|
|
117
117
|
});
|
|
@@ -120,17 +120,15 @@ class TLSManager {
|
|
|
120
120
|
|
|
121
121
|
// Device Manager for handling device operations
|
|
122
122
|
class DeviceManager {
|
|
123
|
-
private readonly log = getLogger('DeviceManager');
|
|
124
|
-
|
|
125
123
|
/**
|
|
126
124
|
* Lists all connected devices
|
|
127
125
|
*/
|
|
128
126
|
async listDevices(): Promise<Device[]> {
|
|
129
127
|
const usbmux = await createUsbmux();
|
|
130
128
|
try {
|
|
131
|
-
|
|
129
|
+
deviceManagerLog.debug('Listing connected devices...');
|
|
132
130
|
const devices = await usbmux.listDevices();
|
|
133
|
-
|
|
131
|
+
deviceManagerLog.debug(
|
|
134
132
|
`Found ${devices.length} devices: ${devices.map((d) => d.Properties.SerialNumber).join(', ')}`,
|
|
135
133
|
);
|
|
136
134
|
return devices;
|
|
@@ -154,7 +152,7 @@ class DeviceManager {
|
|
|
154
152
|
throw new DeviceNotFoundError(udid);
|
|
155
153
|
}
|
|
156
154
|
|
|
157
|
-
|
|
155
|
+
deviceManagerLog.info(
|
|
158
156
|
`Found device: DeviceID=${device.DeviceID}, SerialNumber=${device.Properties.SerialNumber}, ConnectionType=${device.Properties.ConnectionType}`,
|
|
159
157
|
);
|
|
160
158
|
|
|
@@ -165,7 +163,7 @@ class DeviceManager {
|
|
|
165
163
|
* Reads pair record for a device
|
|
166
164
|
*/
|
|
167
165
|
async readPairRecord(udid: string): Promise<PairRecord> {
|
|
168
|
-
|
|
166
|
+
deviceManagerLog.debug(`Retrieving pair record for UDID: ${udid}`);
|
|
169
167
|
const usbmux = await createUsbmux();
|
|
170
168
|
|
|
171
169
|
try {
|
|
@@ -175,10 +173,10 @@ class DeviceManager {
|
|
|
175
173
|
throw new LockdownError('Pair record missing certificate or key');
|
|
176
174
|
}
|
|
177
175
|
|
|
178
|
-
|
|
176
|
+
deviceManagerLog.info('Pair record retrieved successfully');
|
|
179
177
|
return record;
|
|
180
178
|
} catch (err) {
|
|
181
|
-
|
|
179
|
+
deviceManagerLog.error(`Error getting pair record: ${err}`);
|
|
182
180
|
throw err;
|
|
183
181
|
} finally {
|
|
184
182
|
await this.closeUsbmux(usbmux);
|
|
@@ -189,7 +187,7 @@ class DeviceManager {
|
|
|
189
187
|
try {
|
|
190
188
|
await usbmux.close();
|
|
191
189
|
} catch (err) {
|
|
192
|
-
|
|
190
|
+
deviceManagerLog.error(`Error closing usbmux: ${err}`);
|
|
193
191
|
}
|
|
194
192
|
}
|
|
195
193
|
}
|
package/src/lib/types.ts
CHANGED
|
@@ -11,6 +11,7 @@ import type { iOSApplication } from '../services/ios/dvt/instruments/application
|
|
|
11
11
|
import type { LocationCoordinates } from '../services/ios/dvt/instruments/location-simulation.js';
|
|
12
12
|
import type { NotificationMessage } from '../services/ios/dvt/instruments/notifications.js';
|
|
13
13
|
import { ProvisioningProfile } from '../services/ios/misagent/provisioning-profile.js';
|
|
14
|
+
import type { ProfileList } from '../services/ios/mobile-config/index.js';
|
|
14
15
|
import type { PowerAssertionOptions } from '../services/ios/power-assertion/index.js';
|
|
15
16
|
import { PowerAssertionType } from '../services/ios/power-assertion/index.js';
|
|
16
17
|
import type { InterfaceOrientation } from '../services/ios/springboard-service/index.js';
|
|
@@ -258,7 +259,7 @@ export interface MobileConfigService extends BaseService {
|
|
|
258
259
|
connectToMobileConfigService(): Promise<ServiceConnection>;
|
|
259
260
|
/**
|
|
260
261
|
* Get all profiles of iOS devices
|
|
261
|
-
* @returns {Promise<
|
|
262
|
+
* @returns {Promise<ProfileList>}
|
|
262
263
|
* e.g.
|
|
263
264
|
* {
|
|
264
265
|
* OrderedIdentifiers: [ '2fac1c2b3d684843189b2981c718b0132854a847a' ],
|
|
@@ -279,7 +280,7 @@ export interface MobileConfigService extends BaseService {
|
|
|
279
280
|
* Status: 'Acknowledged'
|
|
280
281
|
* }
|
|
281
282
|
*/
|
|
282
|
-
getProfileList(): Promise<
|
|
283
|
+
getProfileList(): Promise<ProfileList>;
|
|
283
284
|
/**
|
|
284
285
|
* Install profile to iOS device
|
|
285
286
|
* @param {String} path must be a certificate file .PEM .CER and more formats
|
|
@@ -14,6 +14,36 @@ import { BaseService } from '../base-service.js';
|
|
|
14
14
|
const ERROR_CLOUD_CONFIGURATION_ALREADY_PRESENT = 14002;
|
|
15
15
|
const log = getLogger('MobileConfigService');
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Profile manifest information
|
|
19
|
+
*/
|
|
20
|
+
interface ProfileManifest {
|
|
21
|
+
Description: string;
|
|
22
|
+
IsActive: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Profile metadata information
|
|
27
|
+
*/
|
|
28
|
+
interface ProfileMetadata {
|
|
29
|
+
PayloadDescription: string;
|
|
30
|
+
PayloadDisplayName: string;
|
|
31
|
+
PayloadOrganization: string;
|
|
32
|
+
PayloadRemovalDisallowed: boolean;
|
|
33
|
+
PayloadUUID: string;
|
|
34
|
+
PayloadVersion: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Profile list
|
|
39
|
+
*/
|
|
40
|
+
interface ProfileList {
|
|
41
|
+
OrderedIdentifiers: string[];
|
|
42
|
+
ProfileManifest: Record<string, ProfileManifest>;
|
|
43
|
+
ProfileMetadata: Record<string, ProfileMetadata>;
|
|
44
|
+
Status: 'Acknowledged';
|
|
45
|
+
}
|
|
46
|
+
|
|
17
47
|
/**
|
|
18
48
|
* MobileConfigService provides an API to:
|
|
19
49
|
* - Install configuration profiles
|
|
@@ -46,7 +76,7 @@ class MobileConfigService
|
|
|
46
76
|
|
|
47
77
|
/**
|
|
48
78
|
* Get all profiles of iOS devices
|
|
49
|
-
* @returns {Promise<
|
|
79
|
+
* @returns {Promise<ProfileList>}
|
|
50
80
|
* e.g.
|
|
51
81
|
* {
|
|
52
82
|
* OrderedIdentifiers: [ '2fac1c2b3d684843189b2981c718b0132854a847a' ],
|
|
@@ -67,12 +97,13 @@ class MobileConfigService
|
|
|
67
97
|
* Status: 'Acknowledged'
|
|
68
98
|
* }
|
|
69
99
|
*/
|
|
70
|
-
async getProfileList(): Promise<
|
|
100
|
+
async getProfileList(): Promise<ProfileList> {
|
|
71
101
|
const req = {
|
|
72
102
|
RequestType: 'GetProfileList',
|
|
73
103
|
};
|
|
74
104
|
|
|
75
|
-
|
|
105
|
+
const plistDict = await this._sendPlistAndReceive(req);
|
|
106
|
+
return plistDict as unknown as ProfileList;
|
|
76
107
|
}
|
|
77
108
|
|
|
78
109
|
/**
|
|
@@ -132,15 +163,12 @@ class MobileConfigService
|
|
|
132
163
|
return;
|
|
133
164
|
}
|
|
134
165
|
|
|
135
|
-
const profileMetadata = profileList.ProfileMetadata
|
|
166
|
+
const profileMetadata = profileList.ProfileMetadata;
|
|
136
167
|
if (!(identifier in profileMetadata)) {
|
|
137
168
|
// Get available identifiers from OrderedIdentifiers array or ProfileMetadata keys
|
|
138
169
|
let availableIdentifiers: string[];
|
|
139
|
-
if (
|
|
140
|
-
profileList.OrderedIdentifiers
|
|
141
|
-
Array.isArray(profileList.OrderedIdentifiers)
|
|
142
|
-
) {
|
|
143
|
-
availableIdentifiers = profileList.OrderedIdentifiers as string[];
|
|
170
|
+
if (profileList.OrderedIdentifiers) {
|
|
171
|
+
availableIdentifiers = profileList.OrderedIdentifiers;
|
|
144
172
|
} else {
|
|
145
173
|
availableIdentifiers = Object.keys(profileMetadata);
|
|
146
174
|
}
|
|
@@ -202,4 +230,9 @@ class MobileConfigService
|
|
|
202
230
|
}
|
|
203
231
|
}
|
|
204
232
|
|
|
205
|
-
export {
|
|
233
|
+
export {
|
|
234
|
+
type ProfileManifest,
|
|
235
|
+
type ProfileMetadata,
|
|
236
|
+
type ProfileList,
|
|
237
|
+
MobileConfigService,
|
|
238
|
+
};
|