1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-01-23 18:53:36 +02:00

Desktop: Fixes #9985: Filter Sync Target Info Logs (#10014)

This commit is contained in:
Sagnik Mandal 2024-03-02 21:27:29 +05:30 committed by GitHub
parent f6c7213f69
commit 9a2a251eec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 105 additions and 3 deletions

View File

@ -451,7 +451,7 @@ export default class Synchronizer {
try {
let remoteInfo = await fetchSyncInfo(this.api());
logger.info('Sync target remote info:', remoteInfo);
logger.info('Sync target remote info:', remoteInfo.filterSyncInfo());
eventManager.emit(EventName.SessionEstablished);
let syncTargetIsNew = false;
@ -471,8 +471,7 @@ export default class Synchronizer {
if (appVersion !== 'unknown') checkIfCanSync(remoteInfo, appVersion);
let localInfo = await localSyncInfo();
logger.info('Sync target local info:', localInfo);
logger.info('Sync target local info:', localInfo.filterSyncInfo());
localInfo = await this.setPpkIfNotExist(localInfo, remoteInfo);

View File

@ -200,6 +200,89 @@ describe('syncInfoUtils', () => {
logger.enabled = true;
});
// cSpell:disable
it('should filter unnecessary sync info', async () => {
const initialData = {
'version': 3,
'e2ee': {
'value': true,
'updatedTime': 0,
},
'activeMasterKeyId': {
'value': '400227d2222c4d3bb7346514861c643b',
'updatedTime': 0,
},
'masterKeys': [
{
'id': '400227d8a77c4d3bb7346514861c643b',
'created_time': 1515008161362,
'updated_time': 1708103706234,
'source_application': 'net.cozic.joplin-desktop',
'encryption_method': 4,
'checksum': '',
'content': '{"iv":"M1uezlW1Pu1g3dwrCTqcHg==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"0dqWvU/PUVQ=","ct":"wHXN5pk1s7qKX+2Y9puEGZGkojI1Pvc+TvZUKC6QCfwxtMK6C1Hmgvm53vAaeCMcCXPvGVLo9JwqINFhEgb0ux+KUFcCqgT1pNO2Sf/hJsH8PjaUvl0kwpC511zdnvY7Hk3WIpgXVKUevsQt9TkMK5e8y1JMsuuTD3fW7bEiv/ehe4CBSQ9eH1tWjr1qQ=="}',
'hasBeenUsed': true,
},
],
'ppk': {
'value': {
'id': 'SNQ5ZCs61KDVUW2qqqqHd3',
'keySize': 2048,
'privateKey': {
'encryptionMethod': 4,
'ciphertext': '{"iv":"Z2y11b4nCYvpmQ9gvxELug==","v":1,"iter":10000,"ks":256,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"0dqWvU/PUVQ=","ct":"8CvjYayXMpLsrAMwtu18liRfewKfZVpRlC0D0I2FYziyFhRf4Cjqi2+Uy8kIC8au7oBSBUnNU6jd04ooNozneKv2MzkhbGlXo3izxqCMVHboqa2vkPWbBAxGlvUYQUg213xG61FjZ19ZJdpti+AQy7qpQU7/h5kyC0iJ2aXG5TIGcBuDq3lbGAVfG/RlL/abMKLYb8KouFYAJe+0bUajUXa1KJsey+eD+2hFVc+nAxKOLe1UoZysB77Lq43DRTBFGH2gTSC1zOXxuZeSbFPPN0Cj+FvV7D5pF9LhUSLPDsIiRwF/q+E506YgDjirSZAvW1Y2EEM22F2Mh0I0pbVPFXhhBafqPLRwXmUGULCnA64gkGwctK5mEs985VVSrpQ0nMvf/drg2vUQrJ3exgl43ddVSOCjeJuF7F06IBL5FQ34iAujsOheRNvlWtG9xm008Vc19NxvhtzIl1RO7XLXrrTBzbFHDrcHjda/xNWNEKwU/LZrH0xPgwEcwBmLItvy/NojI/JKNeck8R431QWooFb7cTplO4qsgCQNL9MJ9avpmNSXJAUQx8VnifKVbzcY4T7X7TmJWSrpvBWV8MLfi3TOF4kahR75vg47kCrMbthFMw5bvrjvMmGOtyKxheqbS5IlSnSSz5x7wIVz0g3vzMbcbb5rF5MuzNhU97wNiz3L1Aonjmnu8r3vCyXTB/4GSiwYH7KfixwYM68T4crqJ0VneNy+owznCdJQXnG4cmjxek1wmJMEmurQ1JtANNv/m43gzoqd62V6Dq05vLJF+n7CS9HgJ3FTqYVCZLGGYrSilIYnEjhdaBpkcnFrCitbfYj+IpNC6eN6qg2hpGAbmKId7RLOGwJyda0jkuNP9mTqWOF+6eYn8Q+Y3YIY"}',
},
'publicKey': '-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEAiSTY5wBscae/WmU3PfVP5FYQiuTi5V7BjPcge/6pXvgF3zwe43uy\nTWdzO2YgK/a8f3H507clcGlZN4e0e1jZ/rh4lMfaN\nugfNo0RAvuwn8Yniqfb69reygJywbFBIauxbBpVKbc21MLuCbPkVFjKG7qGNYdF4\nc17mQ8nQsbFPZcuvxsZvgvvbza1q0rqVETdDUClyIrY8plAjMgTKCRwq2gafP6eX\nWpkENAyIbOFxSKXjWy0yFidvZfYLz4mIRwIDAQAB\n-----END RSA PUBLIC KEY-----',
'createdTime': 1633274368892,
},
'updatedTime': 1633274368892,
},
'appMinVersion': '0.0.0',
};
const syncInfo = new SyncInfo();
syncInfo.load(JSON.stringify(initialData));
const filteredSyncInfo = syncInfo.filterSyncInfo();
expect(filteredSyncInfo).toEqual({
'activeMasterKeyId': {
'updatedTime': 0,
'value': '400227d2222c4d3bb7346514861c643b',
},
'appMinVersion': '0.0.0',
'e2ee': {
'updatedTime': 0,
'value': true,
},
'masterKeys': [
{
'created_time': 1515008161362,
'encryption_method': 4,
'hasBeenUsed': true,
'id': '400227d8a77c4d3bb7346514861c643b',
'source_application': 'net.cozic.joplin-desktop',
'updated_time': 1708103706234,
},
],
'ppk': {
'updatedTime': 1633274368892,
'value': {
'createdTime': 1633274368892,
'id': 'SNQ5ZCs61KDVUW2qqqqHd3',
'keySize': 2048,
'privateKey': {
'ciphertext': '{"iv":"Z2y11b4nCYvpm...TqWOF+6eYn8Q+Y3YIY"}',
'encryptionMethod': 4,
},
'publicKey': '-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCA...',
},
},
'version': 3,
});
});
// cSpell:enable
test.each([
['1.0.0', '1.0.4', true],
['1.0.0', '0.0.5', false],

View File

@ -240,6 +240,26 @@ export class SyncInfo {
};
}
public filterSyncInfo() {
const filtered = JSON.parse(JSON.stringify(this.toObject()));
// Filter content and checksum properties from master keys
if (filtered.masterKeys) {
filtered.masterKeys = filtered.masterKeys.map((mk: MasterKeyEntity) => {
delete mk.content;
delete mk.checksum;
return mk;
});
}
// Truncate the private key and public key
if (filtered.ppk.value) {
filtered.ppk.value.privateKey.ciphertext = `${filtered.ppk.value.privateKey.ciphertext.substr(0, 20)}...${filtered.ppk.value.privateKey.ciphertext.substr(-20)}`;
filtered.ppk.value.publicKey = `${filtered.ppk.value.publicKey.substr(0, 40)}...`;
}
return filtered;
}
public serialize(): string {
return JSON.stringify(this.toObject(), null, '\t');
}