- matrix-crypt-file documentation updated (it cannot encrypt, only decrypts)
- matrix-js-sdk update from 15.5.0 to 16.0.0 - Fixed matrix-js-sdk breaking changes - @matrix-org_olm-3.2.8.tgz added to package since there is no npm release for this. It fixes some errors so we need it.
This commit is contained in:
parent
d304cb95f6
commit
ac68060825
BIN
@matrix-org_olm-3.2.8.tgz
Normal file
BIN
@matrix-org_olm-3.2.8.tgz
Normal file
Binary file not shown.
52
package-lock.json
generated
52
package-lock.json
generated
@ -1,19 +1,20 @@
|
|||||||
{
|
{
|
||||||
"name": "node-red-contrib-matrix-chat",
|
"name": "node-red-contrib-matrix-chat",
|
||||||
"version": "0.4.1",
|
"version": "0.4.6",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"version": "0.4.1",
|
"name": "node-red-contrib-matrix-chat",
|
||||||
|
"version": "0.4.6",
|
||||||
"license": "SEE LICENSE FILE",
|
"license": "SEE LICENSE FILE",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fs-extra": "^10.0.0",
|
"fs-extra": "^10.0.0",
|
||||||
"got": "^12.0.1",
|
"got": "^12.0.1",
|
||||||
"isomorphic-webcrypto": "^2.3.8",
|
"isomorphic-webcrypto": "^2.3.8",
|
||||||
"matrix-js-sdk": "^15.5.0",
|
"matrix-js-sdk": "^16.0.0",
|
||||||
"node-localstorage": "^2.2.1",
|
"node-localstorage": "^2.2.1",
|
||||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
"olm": "./@matrix-org_olm-3.2.8.tgz",
|
||||||
"utf8": "^3.0.0"
|
"utf8": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -7092,14 +7093,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/matrix-events-sdk": {
|
"node_modules/matrix-events-sdk": {
|
||||||
"version": "0.0.1-beta.6",
|
"version": "0.0.1-beta.7",
|
||||||
"resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.6.tgz",
|
"resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz",
|
||||||
"integrity": "sha512-VMqPXe3Bg4R9yC9PNqGv6bDFwWlVYadYxp0Ke1ihhXUCpGcx7e28kOYcqK2T3RxLXK4KK7VH4JRbY53Do3r+Fw=="
|
"integrity": "sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA=="
|
||||||
},
|
},
|
||||||
"node_modules/matrix-js-sdk": {
|
"node_modules/matrix-js-sdk": {
|
||||||
"version": "15.5.0",
|
"version": "16.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-15.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-16.0.0.tgz",
|
||||||
"integrity": "sha512-Y8BoJ5xEejTeO2vwGrE4hNrSSOKLP6/brqeTy+gjjgti/PUhf+foC+ww9lHv7MqiNYFl9a/8tBf3crhU8+3jVw==",
|
"integrity": "sha512-ZlrRjqo493pY6OwtQto+oNG2tFALbJKHUtIHUbay0eX100jQjbgMzXtWHrrFEU01+/aAccx+UP4ap0/MRcsALQ==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.12.5",
|
"@babel/runtime": "^7.12.5",
|
||||||
"another-json": "^0.2.0",
|
"another-json": "^0.2.0",
|
||||||
@ -7107,7 +7108,7 @@
|
|||||||
"bs58": "^4.0.1",
|
"bs58": "^4.0.1",
|
||||||
"content-type": "^1.0.4",
|
"content-type": "^1.0.4",
|
||||||
"loglevel": "^1.7.1",
|
"loglevel": "^1.7.1",
|
||||||
"matrix-events-sdk": "^0.0.1-beta.6",
|
"matrix-events-sdk": "^0.0.1-beta.7",
|
||||||
"p-retry": "^4.5.0",
|
"p-retry": "^4.5.0",
|
||||||
"qs": "^6.9.6",
|
"qs": "^6.9.6",
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
@ -8182,9 +8183,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/olm": {
|
"node_modules/olm": {
|
||||||
"version": "3.2.1",
|
"name": "@matrix-org/olm",
|
||||||
"resolved": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
"version": "3.2.8",
|
||||||
"integrity": "sha512-B87bTpGIGieuV2FNauChjjQtVltwTGagQFoHm+3Dcse4amKAAGJB/I54dnP/JtbHZ+RYVoApM2OQ46Z4VH6eNg==",
|
"resolved": "file:@matrix-org_olm-3.2.8.tgz",
|
||||||
|
"integrity": "sha512-yCJzEYY2aG1z+7nxKYZC4DFYwQO/5iG019qgotJhauYJRhEG9gLrKTvXO6lRHS8TjnZzsZFZyO/hQUlI4Dryig==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/on-finished": {
|
"node_modules/on-finished": {
|
||||||
@ -17088,14 +17090,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"matrix-events-sdk": {
|
"matrix-events-sdk": {
|
||||||
"version": "0.0.1-beta.6",
|
"version": "0.0.1-beta.7",
|
||||||
"resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.6.tgz",
|
"resolved": "https://registry.npmjs.org/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz",
|
||||||
"integrity": "sha512-VMqPXe3Bg4R9yC9PNqGv6bDFwWlVYadYxp0Ke1ihhXUCpGcx7e28kOYcqK2T3RxLXK4KK7VH4JRbY53Do3r+Fw=="
|
"integrity": "sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA=="
|
||||||
},
|
},
|
||||||
"matrix-js-sdk": {
|
"matrix-js-sdk": {
|
||||||
"version": "15.5.0",
|
"version": "16.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-15.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-16.0.0.tgz",
|
||||||
"integrity": "sha512-Y8BoJ5xEejTeO2vwGrE4hNrSSOKLP6/brqeTy+gjjgti/PUhf+foC+ww9lHv7MqiNYFl9a/8tBf3crhU8+3jVw==",
|
"integrity": "sha512-ZlrRjqo493pY6OwtQto+oNG2tFALbJKHUtIHUbay0eX100jQjbgMzXtWHrrFEU01+/aAccx+UP4ap0/MRcsALQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime": "^7.12.5",
|
"@babel/runtime": "^7.12.5",
|
||||||
"another-json": "^0.2.0",
|
"another-json": "^0.2.0",
|
||||||
@ -17103,7 +17105,7 @@
|
|||||||
"bs58": "^4.0.1",
|
"bs58": "^4.0.1",
|
||||||
"content-type": "^1.0.4",
|
"content-type": "^1.0.4",
|
||||||
"loglevel": "^1.7.1",
|
"loglevel": "^1.7.1",
|
||||||
"matrix-events-sdk": "^0.0.1-beta.6",
|
"matrix-events-sdk": "^0.0.1-beta.7",
|
||||||
"p-retry": "^4.5.0",
|
"p-retry": "^4.5.0",
|
||||||
"qs": "^6.9.6",
|
"qs": "^6.9.6",
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
@ -17233,6 +17235,7 @@
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"@babel/core": "^7.14.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
||||||
"@babel/plugin-proposal-export-default-from": "^7.0.0",
|
"@babel/plugin-proposal-export-default-from": "^7.0.0",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
||||||
@ -17457,6 +17460,7 @@
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"@babel/core": "^7.0.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
||||||
"@babel/plugin-proposal-export-default-from": "^7.0.0",
|
"@babel/plugin-proposal-export-default-from": "^7.0.0",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
||||||
@ -17504,6 +17508,7 @@
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"@babel/core": "^7.14.0",
|
||||||
"babel-preset-fbjs": "^3.4.0",
|
"babel-preset-fbjs": "^3.4.0",
|
||||||
"hermes-parser": "0.4.7",
|
"hermes-parser": "0.4.7",
|
||||||
"metro-babel-transformer": "0.66.2",
|
"metro-babel-transformer": "0.66.2",
|
||||||
@ -17519,6 +17524,7 @@
|
|||||||
"optional": true,
|
"optional": true,
|
||||||
"peer": true,
|
"peer": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
|
"@babel/core": "^7.14.0",
|
||||||
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
||||||
"@babel/plugin-proposal-export-default-from": "^7.0.0",
|
"@babel/plugin-proposal-export-default-from": "^7.0.0",
|
||||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
|
||||||
@ -18030,8 +18036,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"olm": {
|
"olm": {
|
||||||
"version": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
"version": "file:@matrix-org_olm-3.2.8.tgz",
|
||||||
"integrity": "sha512-B87bTpGIGieuV2FNauChjjQtVltwTGagQFoHm+3Dcse4amKAAGJB/I54dnP/JtbHZ+RYVoApM2OQ46Z4VH6eNg=="
|
"integrity": "sha512-yCJzEYY2aG1z+7nxKYZC4DFYwQO/5iG019qgotJhauYJRhEG9gLrKTvXO6lRHS8TjnZzsZFZyO/hQUlI4Dryig=="
|
||||||
},
|
},
|
||||||
"on-finished": {
|
"on-finished": {
|
||||||
"version": "2.3.0",
|
"version": "2.3.0",
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
"fs-extra": "^10.0.0",
|
"fs-extra": "^10.0.0",
|
||||||
"got": "^12.0.1",
|
"got": "^12.0.1",
|
||||||
"isomorphic-webcrypto": "^2.3.8",
|
"isomorphic-webcrypto": "^2.3.8",
|
||||||
"matrix-js-sdk": "^15.5.0",
|
"matrix-js-sdk": "^16.0.0",
|
||||||
"node-localstorage": "^2.2.1",
|
"node-localstorage": "^2.2.1",
|
||||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
"olm": "./@matrix-org_olm-3.2.8.tgz",
|
||||||
"utf8": "^3.0.0"
|
"utf8": "^3.0.0"
|
||||||
},
|
},
|
||||||
"node-red": {
|
"node-red": {
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
<script type="text/html" data-help-name="matrix-decrypt-file">
|
<script type="text/html" data-help-name="matrix-decrypt-file">
|
||||||
<h3>Details</h3>
|
<h3>Details</h3>
|
||||||
<p>Files sent in an encrypted room are themselves encrypted. Use this node to encrypt/decrypt files. Note: This node will download the encrypted file so be cautious of large downloads.</p>
|
<p>Files sent in an encrypted room are themselves encrypted. Use this node to decrypt files. Note: This node will download the encrypted file so be cautious of large downloads.</p>
|
||||||
|
|
||||||
<h3>Inputs</h3>
|
<h3>Inputs</h3>
|
||||||
<dl class="message-properties">
|
<dl class="message-properties">
|
||||||
|
@ -55,7 +55,7 @@ module.exports = function(RED) {
|
|||||||
msg.reason = '';
|
msg.reason = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
node.server.matrixClient.redactEvent(msg.topic,msg.eventId,undefined ,{
|
node.server.matrixClient.redactEvent(msg.topic, msg.eventId, undefined,{
|
||||||
reason: msg.reason
|
reason: msg.reason
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ const sdk = require("matrix-js-sdk");
|
|||||||
const { resolve } = require('path');
|
const { resolve } = require('path');
|
||||||
const { LocalStorage } = require('node-localstorage');
|
const { LocalStorage } = require('node-localstorage');
|
||||||
const { LocalStorageCryptoStore } = require('matrix-js-sdk/lib/crypto/store/localStorage-crypto-store');
|
const { LocalStorageCryptoStore } = require('matrix-js-sdk/lib/crypto/store/localStorage-crypto-store');
|
||||||
|
const {RoomEvent, RoomMemberEvent, HttpApiEvent, ClientEvent} = require("matrix-js-sdk");
|
||||||
|
|
||||||
module.exports = function(RED) {
|
module.exports = function(RED) {
|
||||||
function MatrixFolderNameFromUserId(name) {
|
function MatrixFolderNameFromUserId(name) {
|
||||||
@ -146,7 +147,7 @@ module.exports = function(RED) {
|
|||||||
return node.connected;
|
return node.connected;
|
||||||
};
|
};
|
||||||
|
|
||||||
node.matrixClient.on("Room.timeline", async function(event, room, toStartOfTimeline, removed, data) {
|
node.matrixClient.on(RoomEvent.Timeline, async function(event, room, toStartOfTimeline, removed, data) {
|
||||||
if (toStartOfTimeline) {
|
if (toStartOfTimeline) {
|
||||||
return; // ignore paginated results
|
return; // ignore paginated results
|
||||||
}
|
}
|
||||||
@ -167,6 +168,23 @@ module.exports = function(RED) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isDmRoom = (room) => {
|
||||||
|
// Find out if this is a direct message room.
|
||||||
|
let isDM = !!room.getDMInviter();
|
||||||
|
const allMembers = room.currentState.getMembers();
|
||||||
|
if (!isDM && allMembers.length <= 2) {
|
||||||
|
// if not a DM, but there are 2 users only
|
||||||
|
// double check DM (needed because getDMInviter works only if you were invited, not if you invite)
|
||||||
|
// hence why we check for each member
|
||||||
|
if (allMembers.some((m) => m.getDMInviter())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return allMembers.length <= 2 && isDM;
|
||||||
|
};
|
||||||
|
|
||||||
|
node.matrixClient.getRoom(event.getRoomId())
|
||||||
|
|
||||||
let msg = {
|
let msg = {
|
||||||
encrypted : event.isEncrypted(),
|
encrypted : event.isEncrypted(),
|
||||||
redacted : event.isRedacted(),
|
redacted : event.isRedacted(),
|
||||||
@ -177,6 +195,7 @@ module.exports = function(RED) {
|
|||||||
topic : event.getRoomId(),
|
topic : event.getRoomId(),
|
||||||
eventId : event.getId(),
|
eventId : event.getId(),
|
||||||
event : event,
|
event : event,
|
||||||
|
isDirectMessage: isDmRoom(event.getRoomId())
|
||||||
};
|
};
|
||||||
|
|
||||||
node.log("Received" + (msg.encrypted ? ' encrypted' : '') +" timeline event [" + msg.type + "]: (" + room.name + ") " + event.getSender() + " :: " + msg.content.body + (toStartOfTimeline ? ' [PAGINATED]' : ''));
|
node.log("Received" + (msg.encrypted ? ' encrypted' : '') +" timeline event [" + msg.type + "]: (" + room.name + ") " + event.getSender() + " :: " + msg.content.body + (toStartOfTimeline ? ' [PAGINATED]' : ''));
|
||||||
@ -189,9 +208,9 @@ module.exports = function(RED) {
|
|||||||
*
|
*
|
||||||
* @event module:client~MatrixClient#"crypto.suggestKeyRestore"
|
* @event module:client~MatrixClient#"crypto.suggestKeyRestore"
|
||||||
*/
|
*/
|
||||||
node.matrixClient.on("crypto.suggestKeyRestore", function(){
|
// node.matrixClient.on("crypto.suggestKeyRestore", function(){
|
||||||
|
//
|
||||||
});
|
// });
|
||||||
|
|
||||||
// node.matrixClient.on("RoomMember.typing", async function(event, member) {
|
// node.matrixClient.on("RoomMember.typing", async function(event, member) {
|
||||||
// let isTyping = member.typing;
|
// let isTyping = member.typing;
|
||||||
@ -210,7 +229,8 @@ module.exports = function(RED) {
|
|||||||
// });
|
// });
|
||||||
|
|
||||||
// handle auto-joining rooms
|
// handle auto-joining rooms
|
||||||
node.matrixClient.on("RoomMember.membership", async function(event, member) {
|
|
||||||
|
node.matrixClient.on(RoomMemberEvent.Membership, async function(event, member) {
|
||||||
if (member.membership === "invite" && member.userId === node.userId) {
|
if (member.membership === "invite" && member.userId === node.userId) {
|
||||||
if(node.autoAcceptRoomInvites) {
|
if(node.autoAcceptRoomInvites) {
|
||||||
node.matrixClient.joinRoom(member.roomId).then(function() {
|
node.matrixClient.joinRoom(member.roomId).then(function() {
|
||||||
@ -224,7 +244,7 @@ module.exports = function(RED) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
node.matrixClient.on("sync", async function(state, prevState, data) {
|
node.matrixClient.on(ClientEvent.Sync, async function(state, prevState, data) {
|
||||||
node.debug("SYNC [STATE=" + state + "] [PREVSTATE=" + prevState + "]");
|
node.debug("SYNC [STATE=" + state + "] [PREVSTATE=" + prevState + "]");
|
||||||
if(prevState === null && state === "PREPARED" ) {
|
if(prevState === null && state === "PREPARED" ) {
|
||||||
// Occurs when the initial sync is completed first time.
|
// Occurs when the initial sync is completed first time.
|
||||||
@ -292,7 +312,8 @@ module.exports = function(RED) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
node.matrixClient.on("Session.logged_out", async function(errorObj){
|
|
||||||
|
node.matrixClient.on(HttpApiEvent.SessionLoggedOut, async function(errorObj){
|
||||||
// Example if user auth token incorrect:
|
// Example if user auth token incorrect:
|
||||||
// {
|
// {
|
||||||
// errcode: 'M_UNKNOWN_TOKEN',
|
// errcode: 'M_UNKNOWN_TOKEN',
|
||||||
|
Loading…
Reference in New Issue
Block a user