From 5be37f2e4548e5a967c7baf81152f69678bfd964 Mon Sep 17 00:00:00 2001 From: yflory Date: Sat, 13 Jul 2019 15:23:32 +0200 Subject: [PATCH] Unified metadata --- historyKeeper.js | 46 +++++++++------------ www/common/common-messenger.js | 6 ++- www/common/outer/async-store.js | 11 +++-- www/common/outer/onlyoffice.js | 8 ++-- www/common/sframe-chainpad-netflux-outer.js | 11 ++--- www/common/sframe-common-outer.js | 10 +++-- 6 files changed, 43 insertions(+), 49 deletions(-) diff --git a/historyKeeper.js b/historyKeeper.js index 03c767506..342910ad5 100644 --- a/historyKeeper.js +++ b/historyKeeper.js @@ -396,32 +396,35 @@ module.exports.create = function (cfg) { // parsed[3] is the last known hash (optionnal) sendMsg(ctx, user, [seq, 'ACK']); channelName = parsed[1]; - var validateKey = parsed[2]; - var lastKnownHash = parsed[3]; - var owners; - var expire; - if (parsed[2] && typeof parsed[2] === "object") { - validateKey = parsed[2].validateKey; - lastKnownHash = parsed[2].lastKnownHash; - owners = parsed[2].owners; - if (parsed[2].expire) { - expire = +parsed[2].expire * 1000 + (+new Date()); + var config = parsed[2]; + var metadata = {}; + var lastKnownHash; + if (config && typeof config === "object") { + lastKnownHash = config.lastKnownHash; + metadata = config.metadata || {}; + if (metadata.expire) { + metadata.expire = +metadata.expire * 1000 + (+new Date()); } + } else if (config) { + // This is the old way: parsed[2] is the validateKey and parsed[3] is the last known hash + lastKnownHash = parsed[3]; + metadata.validateKey = parsed[2]; } + metadata.channel = channelName; nThen(function (waitFor) { if (!tasks) { return; } // tasks are not supported - if (typeof(expire) !== 'number' || !expire) { return; } + if (typeof(metadata.expire) !== 'number' || !metadata.expire) { return; } // the fun part... // the user has said they want this pad to expire at some point - tasks.write(expire, "EXPIRE", [ channelName ], waitFor(function (err) { + tasks.write(metadata.expire, "EXPIRE", [ channelName ], waitFor(function (err) { if (err) { // if there is an error, we don't want to crash the whole server... // just log it, and if there's a problem you'll be able to fix it // at a later date with the provided information Log.error('HK_CREATE_EXPIRE_TASK', err); - Log.info('HK_INVALID_EXPIRE_TASK', JSON.stringify([expire, 'EXPIRE', channelName])); + Log.info('HK_INVALID_EXPIRE_TASK', JSON.stringify([metadata.expire, 'EXPIRE', channelName])); } })); }).nThen(function (waitFor) { @@ -482,20 +485,9 @@ module.exports.create = function (cfg) { // the first message in the file const chan = ctx.channels[channelName]; if (msgCount === 0 && !historyKeeperKeys[channelName] && chan && chan.indexOf(user) > -1) { - var key = {}; - key.channel = channelName; - if (validateKey) { - key.validateKey = validateKey; - } - if (owners) { - key.owners = owners; - } - if (expire) { - key.expire = expire; - } - historyKeeperKeys[channelName] = key; - storeMessage(ctx, chan, JSON.stringify(key), false, undefined); - sendMsg(ctx, user, [0, HISTORY_KEEPER_ID, 'MSG', user.id, JSON.stringify(key)]); + historyKeeperKeys[channelName] = metadata; + storeMessage(ctx, chan, JSON.stringify(metadata), false, undefined); + sendMsg(ctx, user, [0, HISTORY_KEEPER_ID, 'MSG', user.id, JSON.stringify(metadata)]); } // End of history message: diff --git a/www/common/common-messenger.js b/www/common/common-messenger.js index 1102f94a2..365c8be40 100644 --- a/www/common/common-messenger.js +++ b/www/common/common-messenger.js @@ -422,8 +422,10 @@ define([ var friend = getFriendFromChannel(chan.id) || {}; var cfg = { - validateKey: keys ? keys.validateKey : undefined, - owners: [proxy.edPublic, friend.edPublic], + metadata: { + validateKey: keys ? keys.validateKey : undefined, + owners: [proxy.edPublic, friend.edPublic], + }, lastKnownHash: data.lastKnownHash }; var msg = ['GET_HISTORY', chan.id, cfg]; diff --git a/www/common/outer/async-store.js b/www/common/outer/async-store.js index ca7e4cd7c..063d23ad8 100644 --- a/www/common/outer/async-store.js +++ b/www/common/outer/async-store.js @@ -1191,10 +1191,7 @@ define([ }, noChainPad: true, channel: data.channel, - validateKey: data.validateKey, - owners: data.owners, - password: data.password, - expire: data.expire, + metadata: data.metadata, network: store.network, //readOnly: data.readOnly, onConnect: function (wc, sendMessage) { @@ -1441,14 +1438,16 @@ define([ websocketURL: NetConfig.getWebsocketURL(), channel: secret.channel, readOnly: false, - validateKey: secret.keys.validateKey || undefined, crypto: Crypto.createEncryptor(secret.keys), userName: 'sharedFolder', logLevel: 1, ChainPad: ChainPad, classic: true, network: store.network, - owners: owners + metadata: { + validateKey: secret.keys.validateKey || undefined, + owners: owners + } }; var rt = Listmap.create(listmapConfig); store.sharedFolders[id] = rt; diff --git a/www/common/outer/onlyoffice.js b/www/common/outer/onlyoffice.js index 70bc413ec..37359d757 100644 --- a/www/common/outer/onlyoffice.js +++ b/www/common/outer/onlyoffice.js @@ -92,9 +92,11 @@ define([ var hk = network.historyKeeper; var cfg = { validateKey: obj.validateKey, - lastKnownHash: chan.lastKnownHash || chan.lastCpHash, - owners: obj.owners, - expire: obj.expire + metadata: { + lastKnownHash: chan.lastKnownHash || chan.lastCpHash, + owners: obj.owners, + expire: obj.expire + } }; var msg = ['GET_HISTORY', wc.id, cfg]; // Add the validateKey if we are the channel creator and we have a validateKey diff --git a/www/common/sframe-chainpad-netflux-outer.js b/www/common/sframe-chainpad-netflux-outer.js index a91f9f6d1..9dbfb1816 100644 --- a/www/common/sframe-chainpad-netflux-outer.js +++ b/www/common/sframe-chainpad-netflux-outer.js @@ -23,14 +23,12 @@ define([], function () { var start = function (conf) { var channel = conf.channel; var Crypto = conf.crypto; - var validateKey = conf.validateKey; var isNewHash = conf.isNewHash; var readOnly = conf.readOnly || false; var padRpc = conf.padRpc; var sframeChan = conf.sframeChan; - var password = conf.password; - var owners = conf.owners; - var expire = conf.expire; + var metadata= conf.metadata || {}; + var validateKey = metadata.validateKey; var onConnect = conf.onConnect || function () { }; conf = undefined; @@ -127,11 +125,8 @@ define([], function () { // join the netflux network, promise to handle opening of the channel padRpc.joinPad({ channel: channel || null, - validateKey: validateKey, readOnly: readOnly, - owners: owners, - password: password, - expire: expire + metadata: metadata }); }; diff --git a/www/common/sframe-common-outer.js b/www/common/sframe-common-outer.js index 81ea43d81..72ebec240 100644 --- a/www/common/sframe-common-outer.js +++ b/www/common/sframe-common-outer.js @@ -1074,13 +1074,17 @@ define([ readOnly = false; updateMeta(); - var rtConfig = {}; + var rtConfig = { + metadata: {} + }; if (data.owned) { - rtConfig.owners = [edPublic]; + rtConfig.metadata.owners = [edPublic]; } if (data.expire) { - rtConfig.expire = data.expire; + rtConfig.metadata.expire = data.expire; } + rtConfig.metadata.validateKey = (secret.keys && secret.keys.validateKey) || undefined; + Utils.rtConfig = rtConfig; nThen(function(waitFor) { if (data.templateId) {