option to debug browser extension transport

pull/1856/head
antelle 2021-04-11 17:59:05 +02:00
parent 6a9e5fd801
commit fa60d02129
No known key found for this signature in database
GPG Key ID: 63C9777AAB7C563C
1 changed files with 12 additions and 0 deletions

View File

@ -11,6 +11,9 @@ import { GeneratorPresets } from 'comp/app/generator-presets';
import { Logger } from 'util/logger';
const logger = new Logger('browser-extension-connector');
if (!localStorage.debugBrowserExtension) {
logger.level = Logger.Level.Info;
}
let appModel;
const connectedClients = new Map();
@ -58,6 +61,8 @@ function decryptRequest(request) {
const json = new TextDecoder().decode(data);
const payload = JSON.parse(json);
logger.debug('Extension -> KeeWeb -> (decrypted)', payload);
if (!payload) {
throw new Error('Empty request payload');
}
@ -69,6 +74,8 @@ function decryptRequest(request) {
}
function encryptResponse(request, payload) {
logger.debug('KeeWeb -> Extension (decrypted)', payload);
const nonceBytes = kdbxweb.ByteUtils.base64ToBytes(request.nonce);
incrementNonce(nonceBytes);
const nonce = kdbxweb.ByteUtils.bytesToBase64(nonceBytes);
@ -393,6 +400,8 @@ const BrowserExtensionConnector = {
return;
}
logger.debug('Extension -> KeeWeb', request);
const clientId = request?.clientID;
if (!clientId) {
logger.warn('Empty client ID in request', request);
@ -434,6 +443,7 @@ const BrowserExtensionConnector = {
if (e?.data?.kwConnect !== 'request') {
return;
}
logger.debug('Extension -> KeeWeb', e.data);
let response;
try {
const handler = ProtocolHandlers[e.data.action];
@ -458,11 +468,13 @@ const BrowserExtensionConnector = {
},
sendWebResponse(response) {
logger.debug('KeeWeb -> Extension', response);
response.kwConnect = 'response';
postMessage(response, window.location.origin);
},
sendSocketResponse(socket, response) {
logger.debug('KeeWeb -> Extension', response);
const responseData = Buffer.from(JSON.stringify(response));
const lengthBuf = kdbxweb.ByteUtils.arrayToBuffer(
new Uint32Array([responseData.byteLength])