diff options
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 |