summaryrefslogtreecommitdiff
path: root/server/hornchat.conversation.start.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-08-10 10:38:44 +0200
committerMinteck <contact@minteck.org>2022-08-10 10:38:44 +0200
commitc6dbf0450566c40efc4a26f4f0717452b6ef95cd (patch)
treeb4be2d508223820d0a77d5a3e35e82684da3b6ec /server/hornchat.conversation.start.js
downloadhornchat-c6dbf0450566c40efc4a26f4f0717452b6ef95cd.tar.gz
hornchat-c6dbf0450566c40efc4a26f4f0717452b6ef95cd.tar.bz2
hornchat-c6dbf0450566c40efc4a26f4f0717452b6ef95cd.zip
Initial commitHEADmane
Diffstat (limited to 'server/hornchat.conversation.start.js')
-rw-r--r--server/hornchat.conversation.start.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/server/hornchat.conversation.start.js b/server/hornchat.conversation.start.js
new file mode 100644
index 0000000..4c9e3cd
--- /dev/null
+++ b/server/hornchat.conversation.start.js
@@ -0,0 +1,38 @@
+const fs = require("fs");
+
+function generateConversationID(user1, user2) {
+ let user1hash = require('crypto').createHash("sha256").update(user1).digest("hex").split("")
+ let user2hash = require('crypto').createHash("sha256").update(user2).digest("hex").split("")
+ let characters = [...user1hash, ...user2hash].sort();
+
+ return require('crypto').createHash("sha256").update(characters.join("")).digest("hex");
+}
+
+module.exports = (socket, msg) => {
+ if (!msg.username) {
+ socket.send(JSON.stringify({error:"MISSING_OPERAND", fatal: false}));
+ console.log("[" + socket.id + "] Missing 'username' value");
+ return;
+ }
+
+ if (!keys[msg.username]) {
+ socket.send(JSON.stringify({error:"INVALID_USER", fatal: false}));
+ console.log("[" + socket.id + "] Invalid 'username' value");
+ return;
+ }
+
+ data[socket.id] = {
+ peer: msg.username,
+ conversation: generateConversationID(msg.username, socket.authenticated.user),
+ socket
+ }
+
+ if (!fs.existsSync(dataPath + "/conversations/" + data[socket.id].conversation)) fs.mkdirSync(dataPath + "/conversations/" + data[socket.id].conversation);
+ if (!fs.existsSync(dataPath + "/conversations/" + data[socket.id].conversation + "/conversation.json")) fs.writeFileSync(dataPath + "/conversations/" + data[socket.id].conversation + "/conversation.json", "{\n \"counter\": 0\n}");
+ if (!fs.existsSync(dataPath + "/conversations/" + data[socket.id].conversation + "/messages.json")) fs.writeFileSync(dataPath + "/conversations/" + data[socket.id].conversation + "/messages.json", "{}");
+ console.log("[" + socket.id + "] Conversation " + data[socket.id].conversation + " started");
+
+ socket.send(JSON.stringify({error: null, success: true, started: true}));
+
+ require('./hornchat.conversation.connect')(socket);
+} \ No newline at end of file