mirror of
https://github.com/openstf/stf
synced 2025-10-04 18:29:17 +02:00
Show a dialog for new ADB key if using device.
This commit is contained in:
parent
e6c1de5194
commit
95347d91f0
9 changed files with 152 additions and 109 deletions
|
@ -58,6 +58,7 @@ dbapi.resetUserSettings = function(email) {
|
||||||
}
|
}
|
||||||
|
|
||||||
dbapi.insertUserAdbKey = function(email, key) {
|
dbapi.insertUserAdbKey = function(email, key) {
|
||||||
|
console.log('insertUserAdbKey', email, key)
|
||||||
return db.run(r.table('users').get(email).update({
|
return db.run(r.table('users').get(email).update({
|
||||||
adbKeys: r.row('adbKeys').default([]).append({
|
adbKeys: r.row('adbKeys').default([]).append({
|
||||||
title: key.title
|
title: key.title
|
||||||
|
|
|
@ -10,13 +10,11 @@ var csrf = require('csurf')
|
||||||
var Promise = require('bluebird')
|
var Promise = require('bluebird')
|
||||||
var httpProxy = require('http-proxy')
|
var httpProxy = require('http-proxy')
|
||||||
var compression = require('compression')
|
var compression = require('compression')
|
||||||
var adbkit = require('adbkit')
|
|
||||||
|
|
||||||
var logger = require('../../util/logger')
|
var logger = require('../../util/logger')
|
||||||
var pathutil = require('../../util/pathutil')
|
var pathutil = require('../../util/pathutil')
|
||||||
var dbapi = require('../../db/api')
|
var dbapi = require('../../db/api')
|
||||||
var datautil = require('../../util/datautil')
|
var datautil = require('../../util/datautil')
|
||||||
var requtil = require('../../util/requtil')
|
|
||||||
|
|
||||||
var auth = require('./middleware/auth')
|
var auth = require('./middleware/auth')
|
||||||
var deviceIconMiddleware = require('./middleware/device-icons')
|
var deviceIconMiddleware = require('./middleware/device-icons')
|
||||||
|
@ -149,78 +147,6 @@ module.exports = function(options) {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
app.post('/api/v1/app/user/keys/adb', function(req, res) {
|
|
||||||
requtil.validate(req, function() {
|
|
||||||
req.checkBody('title').notEmpty().len(1, 100)
|
|
||||||
req.checkBody('key').notEmpty()
|
|
||||||
})
|
|
||||||
.then(function() {
|
|
||||||
return adbkit.util.parsePublicKey(req.body.key)
|
|
||||||
})
|
|
||||||
.then(function(key) {
|
|
||||||
return dbapi.lookupUsersByAdbKey(key.fingerprint)
|
|
||||||
.then(function(users) {
|
|
||||||
if (users.length) {
|
|
||||||
throw new dbapi.DuplicateSecondaryIndexError()
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Well, this doesn't guarantee that no one else inserts the
|
|
||||||
// same key before we do, but it's hardly a big enough problem
|
|
||||||
// to consider right now.
|
|
||||||
return dbapi.insertUserAdbKey(req.user.email, {
|
|
||||||
title: req.body.title
|
|
||||||
, fingerprint: key.fingerprint
|
|
||||||
})
|
|
||||||
.then(function() {
|
|
||||||
res.send({
|
|
||||||
success: true
|
|
||||||
, key: {
|
|
||||||
title: req.body.title
|
|
||||||
, fingerprint: key.fingerprint
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(requtil.ValidationError, function(err) {
|
|
||||||
res.status(400).send({
|
|
||||||
success: false
|
|
||||||
, error: 'ValidationError'
|
|
||||||
, validationErrors: err.errors
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(dbapi.DuplicateSecondaryIndexError, function() {
|
|
||||||
res.status(400).send({
|
|
||||||
success: false
|
|
||||||
, error: 'DuplicateKeyError'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(function(err) {
|
|
||||||
log.error('Failed to insert ADB key: ', err.stack)
|
|
||||||
res.status(500).send({
|
|
||||||
success: false
|
|
||||||
, error: 'ServerError'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
app.delete('/api/v1/app/user/keys/adb/:id', function(req, res) {
|
|
||||||
dbapi.deleteUserAdbKey(req.user.email, req.params.id)
|
|
||||||
.then(function() {
|
|
||||||
res.send({
|
|
||||||
success: true
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(function(err) {
|
|
||||||
log.error('Failed to delete ADB key: ', err.stack)
|
|
||||||
res.status(500).send({
|
|
||||||
success: false
|
|
||||||
, error: 'ServerError'
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
app.get('/api/v1/app/group', function(req, res) {
|
app.get('/api/v1/app/group', function(req, res) {
|
||||||
dbapi.loadGroup(req.user.email)
|
dbapi.loadGroup(req.user.email)
|
||||||
.then(function(cursor) {
|
.then(function(cursor) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ var syrup = require('syrup')
|
||||||
var Promise = require('bluebird')
|
var Promise = require('bluebird')
|
||||||
|
|
||||||
var logger = require('../../../util/logger')
|
var logger = require('../../../util/logger')
|
||||||
|
var grouputil = require('../../../util/grouputil')
|
||||||
var wire = require('../../../wire')
|
var wire = require('../../../wire')
|
||||||
var wireutil = require('../../../wire/util')
|
var wireutil = require('../../../wire/util')
|
||||||
var lifecycle = require('../../../util/lifecycle')
|
var lifecycle = require('../../../util/lifecycle')
|
||||||
|
@ -33,6 +34,19 @@ module.exports = syrup.serial()
|
||||||
var resolver = Promise.defer()
|
var resolver = Promise.defer()
|
||||||
|
|
||||||
function notify() {
|
function notify() {
|
||||||
|
group.get()
|
||||||
|
.then(function(currentGroup) {
|
||||||
|
push.send([
|
||||||
|
solo.channel
|
||||||
|
, wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(
|
||||||
|
options.serial
|
||||||
|
, key.fingerprint
|
||||||
|
, key.comment
|
||||||
|
, currentGroup.group
|
||||||
|
))
|
||||||
|
])
|
||||||
|
})
|
||||||
|
.catch(grouputil.NoGroupError, function() {
|
||||||
push.send([
|
push.send([
|
||||||
solo.channel
|
solo.channel
|
||||||
, wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(
|
, wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(
|
||||||
|
@ -41,6 +55,7 @@ module.exports = syrup.serial()
|
||||||
, key.comment
|
, key.comment
|
||||||
))
|
))
|
||||||
])
|
])
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function joinListener(group, identifier) {
|
function joinListener(group, identifier) {
|
||||||
|
|
|
@ -86,9 +86,15 @@ module.exports = function(options) {
|
||||||
))
|
))
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
else {
|
else if (message.currentGroup) {
|
||||||
/* ask user */
|
appDealer.send([
|
||||||
log.debug('ask user')
|
message.currentGroup
|
||||||
|
, wireutil.envelope(new wire.JoinGroupByAdbFingerprintMessage(
|
||||||
|
message.serial
|
||||||
|
, message.fingerprint
|
||||||
|
, message.comment
|
||||||
|
))
|
||||||
|
])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(function(err) {
|
.catch(function(err) {
|
||||||
|
|
|
@ -7,6 +7,7 @@ var zmq = require('zmq')
|
||||||
var Promise = require('bluebird')
|
var Promise = require('bluebird')
|
||||||
var _ = require('lodash')
|
var _ = require('lodash')
|
||||||
var request = Promise.promisifyAll(require('request'))
|
var request = Promise.promisifyAll(require('request'))
|
||||||
|
var adbkit = require('adbkit')
|
||||||
|
|
||||||
var logger = require('../../util/logger')
|
var logger = require('../../util/logger')
|
||||||
var wire = require('../../wire')
|
var wire = require('../../wire')
|
||||||
|
@ -133,6 +134,12 @@ module.exports = function(options) {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
.on(wire.JoinGroupByAdbFingerprintMessage, function(channel, message) {
|
||||||
|
socket.emit('user.keys.adb.confirm', {
|
||||||
|
title: message.comment
|
||||||
|
, fingerprint: message.fingerprint
|
||||||
|
})
|
||||||
|
})
|
||||||
.on(wire.LeaveGroupMessage, function(channel, message) {
|
.on(wire.LeaveGroupMessage, function(channel, message) {
|
||||||
socket.emit('device.change', {
|
socket.emit('device.change', {
|
||||||
important: true
|
important: true
|
||||||
|
@ -254,6 +261,79 @@ module.exports = function(options) {
|
||||||
.on('user.settings.reset', function() {
|
.on('user.settings.reset', function() {
|
||||||
dbapi.resetUserSettings(user.email)
|
dbapi.resetUserSettings(user.email)
|
||||||
})
|
})
|
||||||
|
.on('user.keys.adb.add', function(data) {
|
||||||
|
return adbkit.util.parsePublicKey(data.key)
|
||||||
|
.then(function(key) {
|
||||||
|
return dbapi.lookupUsersByAdbKey(key.fingerprint)
|
||||||
|
.then(function(cursor) {
|
||||||
|
return cursor.toArray()
|
||||||
|
})
|
||||||
|
.then(function(users) {
|
||||||
|
if (users.length) {
|
||||||
|
throw new dbapi.DuplicateSecondaryIndexError()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return dbapi.insertUserAdbKey(user.email, {
|
||||||
|
title: data.title
|
||||||
|
, fingerprint: key.fingerprint
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
socket.emit('user.keys.adb.added', {
|
||||||
|
title: data.title
|
||||||
|
, fingerprint: key.fingerprint
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
push.send([
|
||||||
|
wireutil.global
|
||||||
|
, wireutil.envelope(new wire.AdbKeysUpdatedMessage())
|
||||||
|
])
|
||||||
|
})
|
||||||
|
.catch(dbapi.DuplicateSecondaryIndexError, function() {
|
||||||
|
// No-op
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.on('user.keys.adb.accept', function(data) {
|
||||||
|
return dbapi.lookupUsersByAdbKey(data.fingerprint)
|
||||||
|
.then(function(cursor) {
|
||||||
|
return cursor.toArray()
|
||||||
|
})
|
||||||
|
.then(function(users) {
|
||||||
|
if (users.length) {
|
||||||
|
throw new dbapi.DuplicateSecondaryIndexError()
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return dbapi.insertUserAdbKey(user.email, {
|
||||||
|
title: data.title
|
||||||
|
, fingerprint: data.fingerprint
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
socket.emit('user.keys.adb.added', {
|
||||||
|
title: data.title
|
||||||
|
, fingerprint: data.fingerprint
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.then(function() {
|
||||||
|
push.send([
|
||||||
|
user.group
|
||||||
|
, wireutil.envelope(new wire.AdbKeysUpdatedMessage())
|
||||||
|
])
|
||||||
|
})
|
||||||
|
.catch(dbapi.DuplicateSecondaryIndexError, function() {
|
||||||
|
// No-op
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.on('user.keys.adb.remove', function(data) {
|
||||||
|
return dbapi.deleteUserAdbKey(user.email, data.fingerprint)
|
||||||
|
.then(function() {
|
||||||
|
socket.emit('user.keys.adb.removed', data)
|
||||||
|
})
|
||||||
|
})
|
||||||
// Touch events
|
// Touch events
|
||||||
.on('input.touchDown', function(channel, data) {
|
.on('input.touchDown', function(channel, data) {
|
||||||
push.send([
|
push.send([
|
||||||
|
|
|
@ -251,6 +251,7 @@ message JoinGroupByAdbFingerprintMessage {
|
||||||
required string serial = 1;
|
required string serial = 1;
|
||||||
required string fingerprint = 2;
|
required string fingerprint = 2;
|
||||||
optional string comment = 3;
|
optional string comment = 3;
|
||||||
|
optional string currentGroup = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AdbKeysUpdatedMessage {
|
message AdbKeysUpdatedMessage {
|
||||||
|
|
|
@ -9,11 +9,9 @@ module.exports =
|
||||||
$scope.modal.title = data.title
|
$scope.modal.title = data.title
|
||||||
|
|
||||||
$scope.ok = function () {
|
$scope.ok = function () {
|
||||||
console.log('add key')
|
|
||||||
$modalInstance.close(true)
|
$modalInstance.close(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$scope.$watch('modal.showAdd', function (newValue) {
|
$scope.$watch('modal.showAdd', function (newValue) {
|
||||||
if (newValue === false) {
|
if (newValue === false) {
|
||||||
$scope.ok()
|
$scope.ok()
|
||||||
|
@ -36,9 +34,7 @@ module.exports =
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
modalInstance.result.then(function () {
|
return modalInstance.result
|
||||||
}, function () {
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return service
|
return service
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
module.exports = function UserServiceFactory($http, AppState) {
|
module.exports = function UserServiceFactory(
|
||||||
|
$rootScope
|
||||||
|
, socket
|
||||||
|
, AppState
|
||||||
|
, AddAdbKeyModalService
|
||||||
|
) {
|
||||||
var UserService = {}
|
var UserService = {}
|
||||||
|
|
||||||
var user = UserService.currentUser = AppState.user
|
var user = UserService.currentUser = AppState.user
|
||||||
|
@ -8,20 +13,38 @@ module.exports = function UserServiceFactory($http, AppState) {
|
||||||
}
|
}
|
||||||
|
|
||||||
UserService.addAdbKey = function(key) {
|
UserService.addAdbKey = function(key) {
|
||||||
return $http.post('/api/v1/app/user/keys/adb', key)
|
socket.emit('user.keys.adb.add', key)
|
||||||
.success(function(data) {
|
}
|
||||||
UserService.getAdbKeys().push(data.key)
|
|
||||||
})
|
UserService.acceptAdbKey = function(key) {
|
||||||
|
socket.emit('user.keys.adb.accept', key)
|
||||||
}
|
}
|
||||||
|
|
||||||
UserService.removeAdbKey = function(key) {
|
UserService.removeAdbKey = function(key) {
|
||||||
return $http.delete('/api/v1/app/user/keys/adb/' + key.fingerprint)
|
socket.emit('user.keys.adb.remove', key)
|
||||||
.success(function() {
|
}
|
||||||
|
|
||||||
|
socket.on('user.keys.adb.added', function(key) {
|
||||||
|
UserService.getAdbKeys().push(key)
|
||||||
|
$rootScope.$broadcast('user.keys.adb.updated', user.adbKeys)
|
||||||
|
$rootScope.$apply()
|
||||||
|
})
|
||||||
|
|
||||||
|
socket.on('user.keys.adb.removed', function(key) {
|
||||||
user.adbKeys = UserService.getAdbKeys().filter(function(someKey) {
|
user.adbKeys = UserService.getAdbKeys().filter(function(someKey) {
|
||||||
return someKey.fingerprint !== key.fingerprint
|
return someKey.fingerprint !== key.fingerprint
|
||||||
})
|
})
|
||||||
|
$rootScope.$broadcast('user.keys.adb.updated', user.adbKeys)
|
||||||
|
$rootScope.$apply()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
socket.on('user.keys.adb.confirm', function(data) {
|
||||||
|
AddAdbKeyModalService.open(data).then(function(result) {
|
||||||
|
if (result) {
|
||||||
|
UserService.acceptAdbKey(data)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
return UserService
|
return UserService
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,4 @@
|
||||||
module.exports = function AdbKeysCtrl($scope, $http, UserService, AddAdbKeyModalService) {
|
module.exports = function AdbKeysCtrl($scope, $http, UserService) {
|
||||||
|
|
||||||
//AddAdbKeyModalService.open({
|
|
||||||
// title: 'PC1264',
|
|
||||||
// fingerprint: 'bb:86:60:39:d7:a2:e3:09:93:09:cc:f6:e8:37:99:3f'
|
|
||||||
//})
|
|
||||||
|
|
||||||
$scope.adbKeys = []
|
$scope.adbKeys = []
|
||||||
|
|
||||||
function updateKeys() {
|
function updateKeys() {
|
||||||
|
@ -12,8 +6,9 @@ module.exports = function AdbKeysCtrl($scope, $http, UserService, AddAdbKeyModal
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.removeKey = function (key) {
|
$scope.removeKey = function (key) {
|
||||||
UserService.removeAdbKey(key).then(updateKeys)
|
UserService.removeAdbKey(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.$on('user.keys.adb.updated', updateKeys)
|
||||||
updateKeys()
|
updateKeys()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue