summaryrefslogtreecommitdiff
path: root/server/hornchat.conversation.start.js
diff options
context:
space:
mode:
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