diff --git a/docker-compose-macos.yaml b/docker-compose-macos.yaml index 2d0840e20..70c5c484f 100644 --- a/docker-compose-macos.yaml +++ b/docker-compose-macos.yaml @@ -108,7 +108,14 @@ services: container_name: devicehub-processor env_file: - scripts/variables.env - command: stf processor --name processor --connect-app-dealer tcp://devicehub-triproxy-app:7160 --connect-dev-dealer tcp://devicehub-triproxy-dev:7260 + command: > + stf processor --name processor + --connect-app-dealer tcp://devicehub-triproxy-app:7160 + --connect-dev-dealer tcp://devicehub-triproxy-dev:7260 + --connect-push tcp://devicehub-triproxy-app:7170 + --connect-push-dev tcp://devicehub-triproxy-dev:7270 + --connect-sub tcp://devicehub-triproxy-app:7150 + --connect-sub-dev tcp://devicehub-triproxy-dev:7250 depends_on: devicehub-migrate: condition: service_completed_successfully @@ -233,7 +240,12 @@ services: container_name: devicehub-api-groups-engine env_file: - scripts/variables.env - command: stf groups-engine --connect-push tcp://devicehub-triproxy-app:7170 --connect-push-dev tcp://devicehub-triproxy-dev:7270 + command: > + stf groups-engine + --connect-push tcp://devicehub-triproxy-app:7170 + --connect-push-dev tcp://devicehub-triproxy-dev:7270 + --connect-sub tcp://devicehub-triproxy-app:7150 + --connect-sub-dev tcp://devicehub-triproxy-dev:7250 depends_on: devicehub-migrate: condition: service_completed_successfully diff --git a/lib/units/ios-provider/IOSObserver.ts b/lib/units/ios-provider/IOSObserver.ts index 7e769ba09..21e1ca963 100644 --- a/lib/units/ios-provider/IOSObserver.ts +++ b/lib/units/ios-provider/IOSObserver.ts @@ -80,12 +80,30 @@ export default class IOSObserver extends EventEmitter { return serial } + private isValidIosUsbSerial(rawSerial: string): boolean { + // Raw iOS UDID often comes as 24 hex chars from usb-hotplug. + const raw24 = /^[0-9A-Fa-f]{24}$/ + // Some tools expose 40-char lower/upper hex. + const raw40 = /^[0-9A-Fa-f]{40}$/ + // After formatting 24-char UDID becomes XXXXXXXX-XXXXXXXXXXXXXXXX. + const formatted8x16 = /^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{16}$/ + // Simulator UUID format (kept for completeness in case usb source changes). + const simUuid = /^[0-9A-Fa-f]{8}-([0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$/ + + const formatted = this.formatUDID(rawSerial) + return raw24.test(rawSerial) || + raw40.test(rawSerial) || + formatted8x16.test(formatted) || + simUuid.test(formatted) + } + listen = (): void => { new Promise(async() => { if (!this.usbListenerStarted) { const currentDevices = usb.listDevices() for (const device of currentDevices) { if (!device.serialNumber || device.vendorId !== 1452) continue + if (!this.isValidIosUsbSerial(device.serialNumber)) continue this.emit('attached', this.formatUDID(device.serialNumber), false) } @@ -93,6 +111,9 @@ export default class IOSObserver extends EventEmitter { if (!event.serialNumber) { return } + if (!this.isValidIosUsbSerial(event.serialNumber)) { + return + } if (event.eventType === 'Connected' && event.device?.vendorId === 1452) { this.emit('attached', this.formatUDID(event.serialNumber), false) @@ -117,4 +138,3 @@ export default class IOSObserver extends EventEmitter { clearTimeout(this.listnerInterval) } } -