Compare commits
No commits in common. "d0ba67145275d546709b8388490167798f4c6bef" and "ae386b90a6d960459e4697e70a5cf6aeb2857334" have entirely different histories.
d0ba671452
...
ae386b90a6
@ -16,14 +16,6 @@ Build something cool with these nodes? Feel free to submit a pull request to sha
|
||||
- [Respond to "file" with an uploaded file](#respond-to-file-with-an-uploaded-file)
|
||||
- [Respond to "react" with a reaction](#respond-to-react-with-a-reaction)
|
||||
- [Respond to "users" with full list of server users](#respond-to-users-with-full-list-of-server-users)
|
||||
- [Respond to "newroom" by creating new room and inviting user](#respond-to-newroom-by-creating-new-room-and-inviting-user)
|
||||
- [Respond to "joinroom <room_id_or_alias>" by joining mentioned room](#respond-to-joinroom-room_id_or_alias-by-joining-mentioned-room)
|
||||
- [Respond to "rooms <user_id>" with user's rooms (list server's rooms if <user_id> is left blank)](#respond-to-rooms-user_id-with-users-rooms-list-servers-rooms-if-user_id-is-left-blank)
|
||||
- [Respond to "whois <user_id>" with information about the user's session](#respond-to-whois-user_id-with-information-about-the-users-session)
|
||||
- [Respond to "room_users" with current room's users](#respond-to-room_users-with-current-rooms-users)
|
||||
- [Download & store all received files/images](#download--store-all-received-filesimages)
|
||||
- [Kick/Ban user from room](#kickban-user-from-room)
|
||||
- [Deactivate user](#deactivate-user)
|
||||
|
||||
|
||||
### Create user with Shared Secret Registration
|
||||
@ -36,7 +28,7 @@ Edit the object on the inject node to the user/pass combo you want to create and
|
||||
|
||||
**Note:** This only works on Synapse servers.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
### Create/Edit Synapse User
|
||||
@ -45,7 +37,7 @@ Edit the object on the inject node to the user/pass combo you want to create and
|
||||
|
||||
Allows an administrator to create or modify a user account with a specified `msg.userId`.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
### Use function node to run any command
|
||||
@ -58,7 +50,7 @@ If we do not have a node for something you want to do (such as redacting events/
|
||||
|
||||
To view what sort of functions you have access to check out the `client.ts` file from `matrix-js-sdk` [here](https://github.com/matrix-org/matrix-js-sdk/blob/master/src/client.ts).
|
||||
|
||||

|
||||

|
||||
|
||||
### Respond to "ping" with "pong"
|
||||
|
||||
@ -66,7 +58,7 @@ To view what sort of functions you have access to check out the `client.ts` file
|
||||
|
||||
Use this flow to respond to anyone that says "ping" with "pong" into the same room.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@ -76,7 +68,7 @@ Use this flow to respond to anyone that says "ping" with "pong" into the same ro
|
||||
|
||||
Use this flow to respond to anyone that says "html" with an example HTML message. This shows how easy it is to send HTML.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@ -86,7 +78,7 @@ Use this flow to respond to anyone that says "html" with an example HTML message
|
||||
|
||||
You will need an image on the machine running Node-RED. In this case example.png exists inside the Node-RED directory.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@ -96,7 +88,7 @@ You will need an image on the machine running Node-RED. In this case example.png
|
||||
|
||||
You will need a file on the machine running Node-RED. In this case sample.pdf exists inside the Node-RED directory.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@ -106,7 +98,7 @@ You will need a file on the machine running Node-RED. In this case sample.pdf ex
|
||||
|
||||
Give a 👍 reaction when someone says "react"
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@ -114,109 +106,8 @@ Give a 👍 reaction when someone says "react"
|
||||
|
||||
[View JSON](respond-users-list.json)
|
||||
|
||||
When someone sends the text "users" they get a HTML message back containing all the current users on the server. If your server has a lot of users this paginates and sends a message with 25 users per message.
|
||||
When someone sends the text "users" they get a HTML message back containing all the current users on the server.
|
||||
|
||||
This requires admin privileges.
|
||||
|
||||

|
||||
|
||||
|
||||
### Respond to "newroom" by creating new room and inviting user
|
||||
|
||||
[View JSON](respond-users-list.json)
|
||||
|
||||
When someone sends "newroom" a new room will be created and the user that said the message will be invited. The client will also send a welcome message into the new room.
|
||||
|
||||

|
||||
|
||||
|
||||
### Respond to "joinroom <room_id_or_alias>" by joining mentioned room
|
||||
|
||||
[View JSON](respond-joinroom.json)
|
||||
|
||||
When someone sends "newroom" a new room will be created and the user that said the message will be invited. The client will also send a welcome message into the new room.
|
||||
|
||||

|
||||
|
||||
### Respond to "rooms <user_id>" with user's rooms (list server's rooms if <user_id> is left blank)
|
||||
|
||||
[View JSON](respond-rooms.json)
|
||||
|
||||
Responds to "rooms <user_id>" with that user's rooms. If the message is just "rooms" it responds with a list of all rooms the server is participating in.
|
||||
|
||||
Note: If there are a lot of rooms this may fail to send the message as it is too large. This also only works for user's that are on the current server.
|
||||
|
||||
This requires admin privileges.
|
||||
|
||||

|
||||
|
||||
|
||||
### Respond to "whois <user_id>" with information about the user's session
|
||||
|
||||
[View JSON](respond-whois.json)
|
||||
|
||||
This lists out the user's session info. Each session contains the IP address, when it was last seen, and the user agent. Useful to find out more about a specific user on your server.
|
||||
|
||||
Note: If there are a lot of sessions this may fail to send the message as it is too large. This also only works for user's that are on the current server.
|
||||
|
||||
This requires admin privileges.
|
||||
|
||||

|
||||
|
||||
|
||||
### Respond to "room_users" with current room's users
|
||||
|
||||
[View JSON](respond-room-users.json)
|
||||
|
||||
List out the users participating in a room.
|
||||
|
||||
Note: If there are a lot of users in the room this will fail to send due to a large message error.
|
||||
|
||||

|
||||
|
||||
|
||||
### Download & store all received files/images
|
||||
|
||||
[View JSON](store-received-files.json)
|
||||
|
||||
Download received files/images. If the file is encrypted it will decrypt it for you. The decrypt node downloads the file for you otherwise you need to use a HTTP Request node to download the file.
|
||||
|
||||
Note: You may need to edit the storage directory for this to work. Default action is to create a `downloads` folder in the Node-RED directory and places files in that but there is a good chance your Node-RED instance doesn't have access to write to this directory.
|
||||
|
||||

|
||||
|
||||
|
||||
### Kick/Ban user from room
|
||||
|
||||
[View JSON](room-kick-ban.json)
|
||||
|
||||
If you say "kick @test:example.com" the bot will kick @test:example.com from the current room.
|
||||
|
||||
If you say "ban @test:example.com" the bot will ban @test:example.com from the current room.
|
||||
|
||||
Note: This requires the bot to have permissions to kick/ban in the current room.
|
||||
|
||||

|
||||
|
||||
|
||||
### Deactivate user
|
||||
|
||||
[View JSON](deactivate-user.json)
|
||||
|
||||
If you say "deactivate_user @test:example.com" the bot will deactivate the @test:example.com account on the server.
|
||||
|
||||
Note: This requires the bot to be a server admin.
|
||||
|
||||
WARNING: Accounts that are deleted cannot be restored. If you want to temp-disable edit the user instead.
|
||||
|
||||

|
||||
|
||||
### Force user to join room
|
||||
|
||||
[View JSON](force-join-room.json)
|
||||
|
||||
If you say "force_join @test:example.com !320j90mf0394f:example.com" the bot will force the user `@test:example.com` into room `!320j90mf0394f:example.com`
|
||||
|
||||
Note: This requires the bot to be a server admin. This also only works for rooms on the same server.
|
||||
|
||||

|
||||

|
@ -1,116 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "843c48978ab1b0a0",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 590,
|
||||
"y": 3260,
|
||||
"wires": [
|
||||
[
|
||||
"b77d071077487ddc"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "93ea76ce5e65a250",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": false,
|
||||
"acceptStickers": false,
|
||||
"acceptReactions": false,
|
||||
"acceptFiles": false,
|
||||
"acceptImages": false,
|
||||
"x": 420,
|
||||
"y": 3260,
|
||||
"wires": [
|
||||
[
|
||||
"843c48978ab1b0a0"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "d6795b522954bccd",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"deactivate_user <user_id>\" by deactivating the user on the server",
|
||||
"info": "",
|
||||
"x": 590,
|
||||
"y": 3220,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "b77d071077487ddc",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload filter",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "regex",
|
||||
"v": "^deactivate_user",
|
||||
"vt": "str",
|
||||
"case": false
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 770,
|
||||
"y": 3260,
|
||||
"wires": [
|
||||
[
|
||||
"3c0e1e130e91206e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "3c0e1e130e91206e",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let matches = msg.payload.match(/^deactivate_user ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : null;\nif(!msg.userId) {\n return null;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 420,
|
||||
"y": 3320,
|
||||
"wires": [
|
||||
[
|
||||
"1f4870b7171cc70f"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "1f4870b7171cc70f",
|
||||
"type": "matrix-synapse-deactivate-user",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"x": 610,
|
||||
"y": 3320,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 24 KiB |
@ -1,117 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "897b8de477d7d0df",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 470,
|
||||
"y": 3460,
|
||||
"wires": [
|
||||
[
|
||||
"1f73f36092a9536b"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "973b2caeb68f3a60",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": false,
|
||||
"acceptStickers": false,
|
||||
"acceptReactions": false,
|
||||
"acceptFiles": false,
|
||||
"acceptImages": false,
|
||||
"x": 300,
|
||||
"y": 3460,
|
||||
"wires": [
|
||||
[
|
||||
"897b8de477d7d0df"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "be5c7290e6223b7b",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Say \"force_join <user_id> <room_id_or_alias>\" to force a user into a room",
|
||||
"info": "",
|
||||
"x": 460,
|
||||
"y": 3420,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "1f73f36092a9536b",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload filter",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "regex",
|
||||
"v": "^deactivate_user",
|
||||
"vt": "str",
|
||||
"case": false
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 650,
|
||||
"y": 3460,
|
||||
"wires": [
|
||||
[
|
||||
"6a2a73bc9dfdaece"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "6a2a73bc9dfdaece",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let matches = msg.payload.match(/^force_join (\\@.*) (.*)/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : null;\nif(!msg.userId) {\n return null;\n}\nmsg.topic = matches[2].trim() ? matches[2].trim() : null;\nif(!msg.topic) {\n return null;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 300,
|
||||
"y": 3520,
|
||||
"wires": [
|
||||
[
|
||||
"212e060e320918d3"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "212e060e320918d3",
|
||||
"type": "matrix-synapse-join-room",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"x": 490,
|
||||
"y": 3520,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 23 KiB |
@ -1,90 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "9a737b0c57b35063",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 430,
|
||||
"y": 2020,
|
||||
"wires": [
|
||||
[
|
||||
"2a44927d9317a4b4"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "f377ad37af7dc49e",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": true,
|
||||
"acceptStickers": true,
|
||||
"acceptReactions": true,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 260,
|
||||
"y": 2020,
|
||||
"wires": [
|
||||
[
|
||||
"9a737b0c57b35063"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "f7112a1d2808cfbb",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"joinroom <room_id_or_alias>\" by joining the mentioned room",
|
||||
"info": "",
|
||||
"x": 440,
|
||||
"y": 1980,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "2a44927d9317a4b4",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload == \"joinroom\"",
|
||||
"func": "if(!msg.payload.startsWith(\"joinroom\")) {\n return null;\n}\n\nlet split = msg.payload.split(\" \");\nif(split.length < 2) {\n return; // no room provided\n}\n\nmsg.topic = split[1];\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 640,
|
||||
"y": 2020,
|
||||
"wires": [
|
||||
[
|
||||
"a34d05c3b6f6bd27"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "a34d05c3b6f6bd27",
|
||||
"type": "matrix-join-room",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"x": 850,
|
||||
"y": 2020,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 17 KiB |
@ -1,157 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "ea0921f33b58e337",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload is \"newroom\"",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "newroom",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 640,
|
||||
"y": 1820,
|
||||
"wires": [
|
||||
[
|
||||
"d7ce5027bc1e2eee"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "9f9a24376b94c977",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 430,
|
||||
"y": 1820,
|
||||
"wires": [
|
||||
[
|
||||
"ea0921f33b58e337"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "3bce23488138c013",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": true,
|
||||
"acceptStickers": true,
|
||||
"acceptReactions": true,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 260,
|
||||
"y": 1820,
|
||||
"wires": [
|
||||
[
|
||||
"9f9a24376b94c977"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "d7ce5027bc1e2eee",
|
||||
"type": "matrix-create-room",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"x": 250,
|
||||
"y": 1880,
|
||||
"wires": [
|
||||
[
|
||||
"735b9d9fd1401e96"
|
||||
],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "735b9d9fd1401e96",
|
||||
"type": "matrix-invite-room",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"x": 410,
|
||||
"y": 1880,
|
||||
"wires": [
|
||||
[
|
||||
"089f2a7f0c079b6b"
|
||||
],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "222ee3c08028c1df",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"messageType": "m.text",
|
||||
"messageFormat": "",
|
||||
"x": 760,
|
||||
"y": 1880,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "089f2a7f0c079b6b",
|
||||
"type": "change",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"rules": [
|
||||
{
|
||||
"t": "set",
|
||||
"p": "payload",
|
||||
"pt": "msg",
|
||||
"to": "Welcome to my new room!",
|
||||
"tot": "str"
|
||||
}
|
||||
],
|
||||
"action": "",
|
||||
"property": "",
|
||||
"from": "",
|
||||
"to": "",
|
||||
"reg": false,
|
||||
"x": 580,
|
||||
"y": 1880,
|
||||
"wires": [
|
||||
[
|
||||
"222ee3c08028c1df"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "48a1fd26227f277e",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"newroom\" by creating new room and inviting person that said it then send welcome message",
|
||||
"info": "",
|
||||
"x": 520,
|
||||
"y": 1780,
|
||||
"wires": []
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 28 KiB |
@ -1,134 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "a7581a6224cbd24d",
|
||||
"type": "matrix-room-users",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"x": 440,
|
||||
"y": 2800,
|
||||
"wires": [
|
||||
[
|
||||
"3e37b5fded58782d"
|
||||
],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "2764620d2d514996",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 610,
|
||||
"y": 2740,
|
||||
"wires": [
|
||||
[
|
||||
"f487951ea1b22a95"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "7ed8fc36ba75298a",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": true,
|
||||
"acceptStickers": true,
|
||||
"acceptReactions": true,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 440,
|
||||
"y": 2740,
|
||||
"wires": [
|
||||
[
|
||||
"2764620d2d514996"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "f487951ea1b22a95",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload filter",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "room_users",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 790,
|
||||
"y": 2740,
|
||||
"wires": [
|
||||
[
|
||||
"a7581a6224cbd24d"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "3e37b5fded58782d",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Room List (for user or all)",
|
||||
"func": "let payload = null;\nif(!msg.payload || !msg.payload.joined) {\n payload = 'No users in room.';\n} else {\n payload = `Room ${msg.topic} users:`;\n payload += '<ul>';\n for(let user_id in msg.payload.joined) {\n payload += `<li>${msg.payload.joined[user_id].display_name} - ${user_id}</li>`;\n }\n payload += '</ul>'\n}\n\nif(payload){\n msg.payload = payload;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 650,
|
||||
"y": 2800,
|
||||
"wires": [
|
||||
[
|
||||
"86a4895c4fe46657"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "86a4895c4fe46657",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Send HTML Message",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"messageType": "m.text",
|
||||
"messageFormat": "html",
|
||||
"x": 880,
|
||||
"y": 2800,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cae1a37fe034b8f8",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"room_users\" with that room's users",
|
||||
"info": "",
|
||||
"x": 600,
|
||||
"y": 2700,
|
||||
"wires": []
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 26 KiB |
@ -1,151 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "2eb2dd1b5dbdd03b",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Response to \"rooms\" with all rooms",
|
||||
"info": "",
|
||||
"x": 580,
|
||||
"y": 2500,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "f3415a10f124d586",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let matches = msg.payload.match(/^rooms ?(\\@.*)?/);\nmsg.userId = matches[1] ? matches[1] : null;\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 420,
|
||||
"y": 2620,
|
||||
"wires": [
|
||||
[
|
||||
"2cae98732747989d"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "2cae98732747989d",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Room List (for user or all)",
|
||||
"func": "let matrixClient = global.get(\"matrixClient['@bot:example.com']\"),\n matrixOnline = global.get(\"matrixClientOnline['@bot:example.com']\");\n\nif(!matrixOnline) {\n msg.payload = 'Matrix client not connected.';\n return [null, msg];\n}\n\nif(msg.userId) {\n matrixClient.http\n .authedRequest(\n undefined,\n 'GET',\n `/_synapse/admin/v1/users/${msg.userId}/joined_rooms`,\n {}, // query params\n undefined,\n { prefix: '' }\n ).then(function(e){\n msg.payload = e;\n if(!e.joined_rooms) {\n msg.payload = 'User is not part of any rooms.';\n } else {\n msg.payload = `${msg.userId}'s rooms:`;\n msg.payload += '<ul>';\n e.joined_rooms.forEach(function(room_id){\n msg.payload += `<li>${room_id}</li>`;\n });\n msg.payload += '</ul>'\n }\n node.send([msg, null]);\n }).catch(function(e){\n node.warn(\"Error fetching server user list \" + e);\n msg.payload = e;\n node.send([null, msg]);\n });\n} else {\n matrixClient.http\n .authedRequest(\n undefined,\n 'GET',\n `/_synapse/admin/v1/rooms`,\n {}, // query params\n undefined,\n { prefix: '' }\n ).then(function(e){\n msg.payload = e;\n if(!e.rooms) {\n msg.payload = 'Server has no rooms.';\n } else {\n msg.payload = `Server rooms:`;\n msg.payload += '<ul>';\n e.rooms.forEach(function(room){\n msg.payload += `<li>${room.name} - ${room.room_id} (members: ${room.joined_members} | creator: ${room.creator})</li>`;\n });\n msg.payload += '</ul>'\n }\n node.send([msg, null]);\n }).catch(function(e){\n node.warn(\"Error fetching server user list \" + e);\n msg.payload = e;\n node.send([null, msg]);\n });\n}",
|
||||
"outputs": 2,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 610,
|
||||
"y": 2620,
|
||||
"wires": [
|
||||
[
|
||||
"d7508993ec1ce895"
|
||||
],
|
||||
[
|
||||
"d7508993ec1ce895"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "2f8c696ec0dc8f6d",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"rooms <user_id>\" with that user's rooms",
|
||||
"info": "",
|
||||
"x": 590,
|
||||
"y": 2540,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "d7508993ec1ce895",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Send HTML Message",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"messageType": "m.text",
|
||||
"messageFormat": "html",
|
||||
"x": 840,
|
||||
"y": 2620,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "13a9a0331352338a",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 590,
|
||||
"y": 2580,
|
||||
"wires": [
|
||||
[
|
||||
"afe88b8e115f661f"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "e261cc12da739901",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": true,
|
||||
"acceptStickers": true,
|
||||
"acceptReactions": true,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 420,
|
||||
"y": 2580,
|
||||
"wires": [
|
||||
[
|
||||
"13a9a0331352338a"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "afe88b8e115f661f",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload filter",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "regex",
|
||||
"v": "^rooms",
|
||||
"vt": "str",
|
||||
"case": false
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 770,
|
||||
"y": 2580,
|
||||
"wires": [
|
||||
[
|
||||
"f3415a10f124d586"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 27 KiB |
@ -1,257 +1,27 @@
|
||||
[
|
||||
{
|
||||
"id": "49e4b3a1ee3e9e1e",
|
||||
"type": "matrix-synapse-users",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"x": 610,
|
||||
"y": 2240,
|
||||
"wires": [
|
||||
[
|
||||
"d4978f7c2dad7ecf"
|
||||
],
|
||||
[
|
||||
"da9d25c324cb727e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "e199d3db1ea6757c",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Send HTML Notice",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"messageType": "m.notice",
|
||||
"messageFormat": "html",
|
||||
"x": 970,
|
||||
"y": 2240,
|
||||
"wires": [
|
||||
[
|
||||
"e248881d6749ba70"
|
||||
],
|
||||
[
|
||||
"da9d25c324cb727e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "d4978f7c2dad7ecf",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "msg.next_token = msg.payload.next_token || false;\nlet new_payload = '<ul>';\nmsg.payload.users.forEach(function(user, index){\n if(msg.guests == 'false' && user.is_guest) {\n return;\n }\n new_payload += '<li>'+ JSON.stringify(user, null, 2).replace(/(?:\\r\\n|\\r|\\n)/g, \"\\n<br>\"); + '</li>'\n});\nmsg.payload = new_payload + '</ul>';\n\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 800,
|
||||
"y": 2240,
|
||||
"wires": [
|
||||
[
|
||||
"e199d3db1ea6757c"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "880cac7307d9a786",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Response to \"users\" with full server user list (excluding guests)",
|
||||
"info": "",
|
||||
"x": 620,
|
||||
"y": 2160,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "469d2ebd9995747a",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"messageType": "m.notice",
|
||||
"messageFormat": "",
|
||||
"x": 600,
|
||||
"y": 2300,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "da9d25c324cb727e",
|
||||
"type": "change",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"rules": [
|
||||
{
|
||||
"t": "set",
|
||||
"p": "payload",
|
||||
"pt": "msg",
|
||||
"to": "error",
|
||||
"tot": "msg"
|
||||
}
|
||||
],
|
||||
"action": "",
|
||||
"property": "",
|
||||
"from": "",
|
||||
"to": "",
|
||||
"reg": false,
|
||||
"x": 420,
|
||||
"y": 2300,
|
||||
"wires": [
|
||||
[
|
||||
"469d2ebd9995747a"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "86577e484ca26aca",
|
||||
"type": "change",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"rules": [
|
||||
{
|
||||
"t": "set",
|
||||
"p": "guests",
|
||||
"pt": "msg",
|
||||
"to": "false",
|
||||
"tot": "str"
|
||||
},
|
||||
{
|
||||
"t": "set",
|
||||
"p": "limit",
|
||||
"pt": "msg",
|
||||
"to": "25",
|
||||
"tot": "num"
|
||||
},
|
||||
{
|
||||
"t": "set",
|
||||
"p": "order_by",
|
||||
"pt": "msg",
|
||||
"to": "creation_ts",
|
||||
"tot": "str"
|
||||
}
|
||||
],
|
||||
"action": "",
|
||||
"property": "",
|
||||
"from": "",
|
||||
"to": "",
|
||||
"reg": false,
|
||||
"x": 420,
|
||||
"y": 2240,
|
||||
"wires": [
|
||||
[
|
||||
"49e4b3a1ee3e9e1e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "e248881d6749ba70",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "More to paginate?",
|
||||
"property": "next_token",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "istype",
|
||||
"v": "string",
|
||||
"vt": "string"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 1190,
|
||||
"y": 2240,
|
||||
"wires": [
|
||||
[
|
||||
"11d7fcf6335bc75b"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "11d7fcf6335bc75b",
|
||||
"type": "change",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"rules": [
|
||||
{
|
||||
"t": "set",
|
||||
"p": "from",
|
||||
"pt": "msg",
|
||||
"to": "next_token",
|
||||
"tot": "msg"
|
||||
}
|
||||
],
|
||||
"action": "",
|
||||
"property": "",
|
||||
"from": "",
|
||||
"to": "",
|
||||
"reg": false,
|
||||
"x": 1370,
|
||||
"y": 2240,
|
||||
"wires": [
|
||||
[
|
||||
"49e4b3a1ee3e9e1e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "8b48e27a118999ec",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 590,
|
||||
"y": 2200,
|
||||
"wires": [
|
||||
[
|
||||
"7a64319e26e8b689"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "553da6dd77e5e03b",
|
||||
"id": "a9b412957063b06c",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": true,
|
||||
"acceptStickers": true,
|
||||
"acceptReactions": true,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 420,
|
||||
"y": 2200,
|
||||
"ignoreText": false,
|
||||
"ignoreReactions": false,
|
||||
"ignoreFiles": false,
|
||||
"ignoreImages": false,
|
||||
"x": 460,
|
||||
"y": 120,
|
||||
"wires": [
|
||||
[
|
||||
"8b48e27a118999ec"
|
||||
"4aa45cd8653ba898"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "7a64319e26e8b689",
|
||||
"id": "4aa45cd8653ba898",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload filter",
|
||||
"name": "msg.payload == \"users\"",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
@ -264,12 +34,70 @@
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 770,
|
||||
"y": 2200,
|
||||
"x": 670,
|
||||
"y": 120,
|
||||
"wires": [
|
||||
[
|
||||
"86577e484ca26aca"
|
||||
"b95a674179d93416"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "b95a674179d93416",
|
||||
"type": "matrix-synapse-users",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"x": 890,
|
||||
"y": 120,
|
||||
"wires": [
|
||||
[
|
||||
"19b654e5f28d93c4"
|
||||
],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "8720c66e867f89f6",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Send HTML Notice",
|
||||
"roomId": "",
|
||||
"messageType": "m.notice",
|
||||
"messageFormat": "html",
|
||||
"x": 1230,
|
||||
"y": 120,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "19b654e5f28d93c4",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let new_payload = '<ul>';\nmsg.payload.users.forEach(function(user, index){\n new_payload += '<li>'+ JSON.stringify(user, null, 2).replace(/(?:\\r\\n|\\r|\\n)/g, \"\\n<br>\"); + '</li>'\n});\nmsg.payload = new_payload + '</ul>';\n\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 1060,
|
||||
"y": 120,
|
||||
"wires": [
|
||||
[
|
||||
"8720c66e867f89f6"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "563da45ab1747c2b",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Response to \"users\" with full server user list",
|
||||
"info": "",
|
||||
"x": 550,
|
||||
"y": 80,
|
||||
"wires": []
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 17 KiB |
@ -1,153 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "93df869346a728d3",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Response to \"whois <user_id>\" with user information",
|
||||
"info": "",
|
||||
"x": 610,
|
||||
"y": 2360,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "656ed1e444fd2e0a",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let matches = msg.payload.match(/^whois ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : msg.userId;\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 440,
|
||||
"y": 2440,
|
||||
"wires": [
|
||||
[
|
||||
"4869676dab929d20"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "4869676dab929d20",
|
||||
"type": "matrix-whois-user",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"x": 590,
|
||||
"y": 2440,
|
||||
"wires": [
|
||||
[
|
||||
"a894fcabf9e41dca"
|
||||
],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "a894fcabf9e41dca",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "try { \n var sessions = msg.payload.devices[\"\"].sessions || null;\n} catch (error) { \n var sessions = null;\n}\nlet html = \"whois (session) information for <strong>\" + msg.userId + \"</strong>\\n<ol>\";\nfor(let session of sessions) {\n try { \n var connections = session.connections;\n } catch (error) { \n var connections = null;\n }\n for(let connection of connections) {\n html += \"\\n<li><pre><code>\"+JSON.stringify(connection, null, 2)+\"</code></pre></li>\"\n }\n}\nhtml += \"</ol>\"\nmsg.payload = html;\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 740,
|
||||
"y": 2440,
|
||||
"wires": [
|
||||
[
|
||||
"898b8974f2b24861"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "898b8974f2b24861",
|
||||
"type": "matrix-send-message",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Send HTML Notice",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"messageType": "m.notice",
|
||||
"messageFormat": "html",
|
||||
"x": 910,
|
||||
"y": 2440,
|
||||
"wires": [
|
||||
[],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "c8855c79f194796e",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 590,
|
||||
"y": 2400,
|
||||
"wires": [
|
||||
[
|
||||
"ae1537a16b9e3b4c"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "39109d4f02d241ca",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": true,
|
||||
"acceptStickers": true,
|
||||
"acceptReactions": true,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 420,
|
||||
"y": 2400,
|
||||
"wires": [
|
||||
[
|
||||
"c8855c79f194796e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ae1537a16b9e3b4c",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "msg.payload filter",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "regex",
|
||||
"v": "^whois",
|
||||
"vt": "str",
|
||||
"case": false
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 770,
|
||||
"y": 2400,
|
||||
"wires": [
|
||||
[
|
||||
"656ed1e444fd2e0a"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 22 KiB |
@ -1,211 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "d78dd157085ed843",
|
||||
"type": "matrix-room-kick",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"x": 570,
|
||||
"y": 2980,
|
||||
"wires": [
|
||||
[
|
||||
"44d49fcaad67790c"
|
||||
],
|
||||
[
|
||||
"44d49fcaad67790c"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "32a99c44b50fe3f3",
|
||||
"type": "matrix-room-ban",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"x": 570,
|
||||
"y": 3080,
|
||||
"wires": [
|
||||
[
|
||||
"04628a976e7acf1b"
|
||||
],
|
||||
[
|
||||
"04628a976e7acf1b"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "5e786bbae3b1a368",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "is from me",
|
||||
"property": "userId",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "@skylord123:skylar.tech",
|
||||
"vt": "str"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 230,
|
||||
"y": 3020,
|
||||
"wires": [
|
||||
[
|
||||
"5b3ddae8335383e7"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ca278a6ffc3b9d6b",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": true,
|
||||
"acceptEmotes": false,
|
||||
"acceptStickers": false,
|
||||
"acceptReactions": false,
|
||||
"acceptFiles": false,
|
||||
"acceptImages": false,
|
||||
"x": 220,
|
||||
"y": 2960,
|
||||
"wires": [
|
||||
[
|
||||
"5e786bbae3b1a368"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "b6830f430157be4e",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"room_ban <user_id>\" by banning user from room",
|
||||
"info": "",
|
||||
"x": 580,
|
||||
"y": 3040,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "8bffe425d3c1bf24",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Respond to \"room_kick <user_id>\" by kicking user from room",
|
||||
"info": "",
|
||||
"x": 580,
|
||||
"y": 2940,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "5b3ddae8335383e7",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Kick or Ban",
|
||||
"property": "payload",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "regex",
|
||||
"v": "^room_kick",
|
||||
"vt": "str",
|
||||
"case": false
|
||||
},
|
||||
{
|
||||
"t": "regex",
|
||||
"v": "^room_ban",
|
||||
"vt": "str",
|
||||
"case": false
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 2,
|
||||
"x": 230,
|
||||
"y": 3060,
|
||||
"wires": [
|
||||
[
|
||||
"a19b38afd7b52834"
|
||||
],
|
||||
[
|
||||
"925c59f485bf7247"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "925c59f485bf7247",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let matches = msg.payload.match(/^room_ban ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : null;\nif(!msg.userId) {\n return null;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 420,
|
||||
"y": 3080,
|
||||
"wires": [
|
||||
[
|
||||
"32a99c44b50fe3f3"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "a19b38afd7b52834",
|
||||
"type": "function",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"func": "let matches = msg.payload.match(/^room_kick ?(\\@.*)?/);\nmsg.userId = matches[1].trim() ? matches[1].trim() : null;\nif(!msg.userId) {\n return null;\n}\nreturn msg;",
|
||||
"outputs": 1,
|
||||
"noerr": 0,
|
||||
"initialize": "",
|
||||
"finalize": "",
|
||||
"libs": [],
|
||||
"x": 420,
|
||||
"y": 2980,
|
||||
"wires": [
|
||||
[
|
||||
"d78dd157085ed843"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "04628a976e7acf1b",
|
||||
"type": "debug",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"active": true,
|
||||
"tosidebar": true,
|
||||
"console": false,
|
||||
"tostatus": false,
|
||||
"complete": "true",
|
||||
"targetType": "full",
|
||||
"statusVal": "",
|
||||
"statusType": "auto",
|
||||
"x": 710,
|
||||
"y": 3080,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "44d49fcaad67790c",
|
||||
"type": "debug",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"active": true,
|
||||
"tosidebar": true,
|
||||
"console": false,
|
||||
"tostatus": false,
|
||||
"complete": "true",
|
||||
"targetType": "full",
|
||||
"statusVal": "",
|
||||
"statusType": "auto",
|
||||
"x": 710,
|
||||
"y": 2980,
|
||||
"wires": []
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 36 KiB |
@ -1,166 +0,0 @@
|
||||
[
|
||||
{
|
||||
"id": "d7573ed76980dc64",
|
||||
"type": "matrix-receive",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"server": null,
|
||||
"roomId": "",
|
||||
"acceptText": false,
|
||||
"acceptEmotes": false,
|
||||
"acceptStickers": false,
|
||||
"acceptReactions": false,
|
||||
"acceptFiles": true,
|
||||
"acceptImages": true,
|
||||
"x": 1740,
|
||||
"y": 600,
|
||||
"wires": [
|
||||
[
|
||||
"4d4e992ed895413f"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "addcccdfea9935b1",
|
||||
"type": "comment",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "Download & store received files/images and decrypt if necessary",
|
||||
"info": "",
|
||||
"x": 1970,
|
||||
"y": 560,
|
||||
"wires": []
|
||||
},
|
||||
{
|
||||
"id": "4d4e992ed895413f",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"property": "encrypted",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "true"
|
||||
},
|
||||
{
|
||||
"t": "else"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 2,
|
||||
"x": 1890,
|
||||
"y": 600,
|
||||
"wires": [
|
||||
[
|
||||
"660782188696fc62"
|
||||
],
|
||||
[
|
||||
"857bce169036e3cb"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "660782188696fc62",
|
||||
"type": "matrix-decrypt-file",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": null,
|
||||
"x": 2050,
|
||||
"y": 600,
|
||||
"wires": [
|
||||
[
|
||||
"cdbaf88f6631322e"
|
||||
],
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "b62db6caf4697242",
|
||||
"type": "file",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"filename": "",
|
||||
"appendNewline": true,
|
||||
"createDir": false,
|
||||
"overwriteFile": "true",
|
||||
"encoding": "none",
|
||||
"x": 2240,
|
||||
"y": 660,
|
||||
"wires": [
|
||||
[]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "857bce169036e3cb",
|
||||
"type": "http request",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"method": "GET",
|
||||
"ret": "bin",
|
||||
"paytoqs": "ignore",
|
||||
"url": "",
|
||||
"tls": "",
|
||||
"persist": false,
|
||||
"proxy": "",
|
||||
"authType": "",
|
||||
"senderr": false,
|
||||
"x": 1910,
|
||||
"y": 660,
|
||||
"wires": [
|
||||
[
|
||||
"7d0be52f8c3f1b54"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "7d0be52f8c3f1b54",
|
||||
"type": "switch",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "",
|
||||
"property": "statusCode",
|
||||
"propertyType": "msg",
|
||||
"rules": [
|
||||
{
|
||||
"t": "eq",
|
||||
"v": "200",
|
||||
"vt": "num"
|
||||
}
|
||||
],
|
||||
"checkall": "true",
|
||||
"repair": false,
|
||||
"outputs": 1,
|
||||
"x": 2050,
|
||||
"y": 660,
|
||||
"wires": [
|
||||
[
|
||||
"cdbaf88f6631322e"
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "cdbaf88f6631322e",
|
||||
"type": "change",
|
||||
"z": "f025a8b9fbd1b054",
|
||||
"name": "set directory",
|
||||
"rules": [
|
||||
{
|
||||
"t": "set",
|
||||
"p": "filename",
|
||||
"pt": "msg",
|
||||
"to": "\"downloads/\" & msg.filename",
|
||||
"tot": "jsonata"
|
||||
}
|
||||
],
|
||||
"action": "",
|
||||
"property": "",
|
||||
"from": "",
|
||||
"to": "",
|
||||
"reg": false,
|
||||
"x": 2230,
|
||||
"y": 600,
|
||||
"wires": [
|
||||
[
|
||||
"b62db6caf4697242"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
Before Width: | Height: | Size: 24 KiB |
997
package-lock.json
generated
13
package.json
@ -1,18 +1,18 @@
|
||||
{
|
||||
"name": "node-red-contrib-matrix-chat",
|
||||
"version": "0.4.6",
|
||||
"version": "0.4.1",
|
||||
"description": "Matrix chat server client for Node-RED",
|
||||
"dependencies": {
|
||||
"fs-extra": "^10.0.0",
|
||||
"got": "^12.0.1",
|
||||
"fs-extra": "^9.1.0",
|
||||
"got": "^11.8.2",
|
||||
"isomorphic-webcrypto": "^2.3.8",
|
||||
"matrix-js-sdk": "^15.5.0",
|
||||
"matrix-js-sdk": "^15.3.0",
|
||||
"node-localstorage": "^2.2.1",
|
||||
"olm": "https://packages.matrix.org/npm/olm/olm-3.2.1.tgz",
|
||||
"process": "^0.11.10",
|
||||
"utf8": "^3.0.0"
|
||||
},
|
||||
"node-red": {
|
||||
"version": ">=1.3.0",
|
||||
"nodes": {
|
||||
"matrix-server-config": "src/matrix-server-config.js",
|
||||
"matrix-receive": "src/matrix-receive.js",
|
||||
@ -35,9 +35,6 @@
|
||||
"matrix-room-users": "src/matrix-room-users.js"
|
||||
}
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0.0"
|
||||
},
|
||||
"keywords": [
|
||||
"node-red",
|
||||
"matrix",
|
||||
|
@ -1,4 +1,5 @@
|
||||
module.exports = function(RED) {
|
||||
const got = require('got');
|
||||
const crypto = require('isomorphic-webcrypto');
|
||||
|
||||
function MatrixDecryptFile(n) {
|
||||
@ -9,8 +10,6 @@ module.exports = function(RED) {
|
||||
this.name = n.name;
|
||||
|
||||
node.on("input", async function (msg) {
|
||||
const { got } = await import('got');
|
||||
|
||||
if(!msg.type) {
|
||||
node.error('msg.type is required.');
|
||||
return;
|
||||
|
@ -204,11 +204,6 @@
|
||||
</li>
|
||||
|
||||
<li><code>msg.type</code> == '<strong>m.file</strong>'
|
||||
<dl class="message-properties">
|
||||
<dt>msg.filename <span class="property-type">string</span></dt>
|
||||
<dd>the file's parsed filename</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="message-properties">
|
||||
<dt>msg.url <span class="property-type">string</span></dt>
|
||||
<dd>the file's URL</dd>
|
||||
@ -221,11 +216,6 @@
|
||||
</li>
|
||||
|
||||
<li><code>msg.type</code> == '<strong>m.image</strong>'
|
||||
<dl class="message-properties">
|
||||
<dt>msg.filename <span class="property-type">string</span></dt>
|
||||
<dd>the image's parsed filename</dd>
|
||||
</dl>
|
||||
|
||||
<dl class="message-properties">
|
||||
<dt>msg.url <span class="property-type">string</span></dt>
|
||||
<dd>the image's URL</dd>
|
||||
|
@ -62,7 +62,6 @@ module.exports = function(RED) {
|
||||
|
||||
case 'm.file':
|
||||
if(!node.acceptFiles) return;
|
||||
msg.filename = msg.content.filename || msg.content.body;
|
||||
if(msg.encrypted) {
|
||||
msg.url = node.server.matrixClient.mxcUrlToHttp(msg.content.file.url);
|
||||
msg.mxc_url = msg.content.file.url;
|
||||
@ -74,7 +73,7 @@ module.exports = function(RED) {
|
||||
|
||||
case 'm.image':
|
||||
if(!node.acceptImages) return;
|
||||
msg.filename = msg.content.filename || msg.content.body;
|
||||
|
||||
if(msg.encrypted) {
|
||||
msg.url = node.server.matrixClient.mxcUrlToHttp(msg.content.file.url);
|
||||
msg.mxc_url = msg.content.file.url;
|
||||
|
@ -31,6 +31,9 @@
|
||||
<label for="node-input-server"><i class="fa fa-user"></i> Room Id</label>
|
||||
<input type="text" id="node-input-roomId" placeholder="msg.topic">
|
||||
</div>
|
||||
<div class="form-tips">
|
||||
This only works on Synapse servers. The user also must be an administrator.
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" data-help-name="matrix-room-users">
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
<script type="text/html" data-help-name="matrix-send-image">
|
||||
<h3>Details</h3>
|
||||
<p>This node will send an image to a Matrix chat room. Supports direct linking to a File In node. It's recommended you set <code>msg.contentType</code> so the client knows how to render the image (otherwise the image could show blank).</p>
|
||||
<p>This node will send an image to a Matrix chat room. Supports direct linking to a File In node.</p>
|
||||
|
||||
<h3>Inputs</h3>
|
||||
<dl class="message-properties">
|
||||
|
@ -72,28 +72,20 @@ module.exports = function(RED) {
|
||||
})
|
||||
.then(function(file){
|
||||
node.server.matrixClient
|
||||
.sendImageMessage(
|
||||
msg.topic,
|
||||
file.content_uri,
|
||||
{},
|
||||
(msg.body || msg.filename) || null,
|
||||
null
|
||||
)
|
||||
.sendImageMessage(msg.topic, file.content_uri, {}, (msg.body || msg.filename) || "")
|
||||
.then(function(e) {
|
||||
node.log("Image message sent: " + e);
|
||||
msg.eventId = e.event_id;
|
||||
msg.content_uri_mxc = file.content_uri;
|
||||
msg.content_uri = node.server.matrixClient.mxcUrlToHttp(file.content_uri);
|
||||
node.send([msg, null]);
|
||||
})
|
||||
.catch(function(e){
|
||||
node.warn("Error sending image message: " + e);
|
||||
node.warn("Error sending image message " + e);
|
||||
msg.error = e;
|
||||
node.send([null, msg]);
|
||||
});
|
||||
})
|
||||
.catch(function(e){
|
||||
node.warn("Error uploading image message: " + e);
|
||||
node.warn("Error uploading image message " + e);
|
||||
msg.error = e;
|
||||
node.send([null, msg]);
|
||||
});
|
||||
|
@ -112,7 +112,7 @@
|
||||
style="width: auto; margin-left: 125px; vertical-align: top"
|
||||
/>
|
||||
<label for="node-config-input-enableE2ee" style="width: auto;max-width:50%;">
|
||||
Enable end-to-end encryption
|
||||
Enable end-to-end encryption (requires a Device ID to be set.)
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
global.Olm = require('olm');
|
||||
const fs = require("fs-extra");
|
||||
const sdk = require("matrix-js-sdk");
|
||||
const { resolve } = require('path');
|
||||
const { LocalStorage } = require('node-localstorage');
|
||||
const { LocalStorageCryptoStore } = require('matrix-js-sdk/lib/crypto/store/localStorage-crypto-store');
|
||||
|
||||
@ -11,17 +10,19 @@ module.exports = function(RED) {
|
||||
}
|
||||
|
||||
function MatrixServerNode(n) {
|
||||
let node = this,
|
||||
storageDir = RED.settings.userDir + '/matrix-client-storage';
|
||||
RED.nodes.createNode(this, n);
|
||||
node.setMaxListeners(1000);
|
||||
let storageDir = './matrix-client-storage';
|
||||
|
||||
RED.nodes.createNode(this, n);
|
||||
|
||||
let node = this;
|
||||
node.log("Initializing Matrix Server Config node");
|
||||
|
||||
if(!this.credentials) {
|
||||
this.credentials = {};
|
||||
}
|
||||
|
||||
node.setMaxListeners(1000);
|
||||
|
||||
this.connected = null;
|
||||
this.name = n.name;
|
||||
this.userId = this.credentials.userId;
|
||||
@ -33,12 +34,6 @@ module.exports = function(RED) {
|
||||
this.e2ee = (this.enableE2ee && this.deviceId);
|
||||
this.globalAccess = n.global;
|
||||
this.initializedAt = new Date();
|
||||
|
||||
if(!this.userId) {
|
||||
node.log("Matrix connection failed: missing user ID in configuration.");
|
||||
return;
|
||||
}
|
||||
|
||||
let localStorageDir = storageDir + '/' + MatrixFolderNameFromUserId(this.userId),
|
||||
localStorage = new LocalStorage(localStorageDir),
|
||||
initialSetup = false;
|
||||
@ -46,9 +41,11 @@ module.exports = function(RED) {
|
||||
let retryStartTimeout = null;
|
||||
|
||||
if(!this.credentials.accessToken) {
|
||||
node.error("Matrix connection failed: missing access token in configuration.");
|
||||
node.log("Matrix connection failed: missing access token.");
|
||||
} else if(!this.url) {
|
||||
node.error("Matrix connection failed: missing server URL in configuration.");
|
||||
node.log("Matrix connection failed: missing server URL.");
|
||||
} else if(!this.userId) {
|
||||
node.log("Matrix connection failed: missing user ID.");
|
||||
} else {
|
||||
node.setConnected = function(connected, cb) {
|
||||
if (node.connected !== connected) {
|
||||
@ -299,6 +296,7 @@ module.exports = function(RED) {
|
||||
// httpStatus: 401
|
||||
// }
|
||||
|
||||
console.log("Authentication failure: ", errorObj);
|
||||
node.error("Authentication failure: " + errorObj);
|
||||
stopClient();
|
||||
});
|
||||
@ -394,8 +392,7 @@ module.exports = function(RED) {
|
||||
});
|
||||
|
||||
function upgradeDirectoryIfNecessary(node, storageDir) {
|
||||
let oldStorageDir = './matrix-local-storage',
|
||||
oldStorageDir2 = './matrix-client-storage';
|
||||
let oldStorageDir = './matrix-local-storage';
|
||||
|
||||
// if the old storage location exists lets move it to it's new location
|
||||
if(fs.pathExistsSync(oldStorageDir)){
|
||||
@ -418,18 +415,6 @@ module.exports = function(RED) {
|
||||
node.log("archiving old config folder '" + oldStorageDir + "' to '" + oldStorageDir + "-backup");
|
||||
fs.renameSync(oldStorageDir, oldStorageDir + "-backup");
|
||||
}
|
||||
|
||||
if(RED.settings.userDir !== resolve('./')) {
|
||||
// user directory does not match running directory
|
||||
// check if we stored stuff in wrong directory and move it
|
||||
if(fs.pathExistsSync(oldStorageDir2)){
|
||||
fs.ensureDirSync(storageDir);
|
||||
node.log("found old '" + oldStorageDir2 + "' path, copying to new location '" + storageDir);
|
||||
fs.copySync(oldStorageDir2, storageDir);
|
||||
// rename folder to keep as a backup (and so we don't run again)
|
||||
fs.renameSync(oldStorageDir2, oldStorageDir2 + "-backup");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,4 +1,5 @@
|
||||
module.exports = function(RED) {
|
||||
const got = require("got");
|
||||
const utf8 = require('utf8');
|
||||
const crypto = require('crypto');
|
||||
|
||||
@ -21,8 +22,7 @@ module.exports = function(RED) {
|
||||
return;
|
||||
}
|
||||
|
||||
node.on("input", async function (msg) {
|
||||
const { got } = await import('got');
|
||||
node.on("input", function (msg) {
|
||||
|
||||
if(!msg.payload.username) {
|
||||
node.error("msg.payload.username is required");
|
||||
@ -34,7 +34,7 @@ module.exports = function(RED) {
|
||||
return;
|
||||
}
|
||||
|
||||
await (async () => {
|
||||
(async () => {
|
||||
try {
|
||||
var response = await got.get(this.server + '/_synapse/admin/v1/register', {
|
||||
responseType: 'json'
|
||||
|