mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-18 08:03:30 +02:00
ADB connect now respects auth keys in the settings page.
This commit is contained in:
@@ -13,7 +13,8 @@ module.exports = syrup.serial()
|
||||
.dependency(require('../support/router'))
|
||||
.dependency(require('../support/push'))
|
||||
.dependency(require('./group'))
|
||||
.define(function(options, adb, router, push, group) {
|
||||
.dependency(require('./solo'))
|
||||
.define(function(options, adb, router, push, group, solo) {
|
||||
var log = logger.createLogger('device:plugins:connect')
|
||||
, plugin = Object.create(null)
|
||||
, activeServer = null
|
||||
@@ -27,7 +28,53 @@ module.exports = syrup.serial()
|
||||
return resolve(plugin.url)
|
||||
}
|
||||
|
||||
var server = adb.createTcpUsbBridge(options.serial)
|
||||
var server = adb.createTcpUsbBridge(options.serial, {
|
||||
auth: function(key) {
|
||||
var resolver = Promise.defer()
|
||||
|
||||
function notify() {
|
||||
push.send([
|
||||
solo.channel
|
||||
, wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(
|
||||
options.serial
|
||||
, key.fingerprint
|
||||
, key.comment
|
||||
))
|
||||
])
|
||||
}
|
||||
|
||||
function joinListener(group, identifier) {
|
||||
if (identifier !== key.fingerprint) {
|
||||
resolver.reject(new Error('Somebody else took the device'))
|
||||
}
|
||||
}
|
||||
|
||||
function autojoinListener(identifier, joined) {
|
||||
if (identifier === key.fingerprint) {
|
||||
if (joined) {
|
||||
resolver.resolve()
|
||||
}
|
||||
else {
|
||||
resolver.reject(new Error('Device is already in use'))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group.on('join', joinListener)
|
||||
group.on('autojoin', autojoinListener)
|
||||
router.on(wire.AdbKeysUpdatedMessage, notify)
|
||||
|
||||
notify()
|
||||
|
||||
return resolver.promise
|
||||
.timeout(120000)
|
||||
.finally(function() {
|
||||
group.removeListener('join', joinListener)
|
||||
group.removeListener('autojoin', autojoinListener)
|
||||
router.removeListener(wire.AdbKeysUpdatedMessage, notify)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
server.on('listening', function() {
|
||||
resolve(plugin.url)
|
||||
|
||||
Reference in New Issue
Block a user