diff options
author | Minteck <contact@minteck.org> | 2022-08-10 10:38:44 +0200 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2022-08-10 10:38:44 +0200 |
commit | c6dbf0450566c40efc4a26f4f0717452b6ef95cd (patch) | |
tree | b4be2d508223820d0a77d5a3e35e82684da3b6ec /server/hornchat.conversation.start.js | |
download | hornchat-c6dbf0450566c40efc4a26f4f0717452b6ef95cd.tar.gz hornchat-c6dbf0450566c40efc4a26f4f0717452b6ef95cd.tar.bz2 hornchat-c6dbf0450566c40efc4a26f4f0717452b6ef95cd.zip |
Diffstat (limited to 'server/hornchat.conversation.start.js')
-rw-r--r-- | server/hornchat.conversation.start.js | 38 |
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 |