87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
const fs = require("fs");
|
|
const https = require("https");
|
|
const express = require("express");
|
|
const socketio = require("socket.io");
|
|
const app = express();
|
|
|
|
const https_options = {
|
|
key: fs.readFileSync("./privkey.pem"),
|
|
cert: fs.readFileSync("./fullchain.pem"),
|
|
requestCert: false,
|
|
rejectUnauthorized: false
|
|
}
|
|
const socketHTTPSServer = https.createServer(https_options, app);
|
|
const webHTTPSServer = https.createServer(https_options, app);
|
|
|
|
const io = socketio(socketHTTPSServer, {
|
|
cors: {
|
|
origin: "https://danby.aniere.fr",
|
|
},
|
|
secure: true
|
|
});
|
|
|
|
function getCurrentTime() {
|
|
|
|
function addZero(i) {
|
|
if (i < 10) {
|
|
i = "0" + i;
|
|
}
|
|
return i;
|
|
}
|
|
|
|
var d = new Date();
|
|
var h = addZero(d.getHours());
|
|
var m = addZero(d.getMinutes());
|
|
var s = addZero(d.getSeconds());
|
|
return h + ":" + m + ":" + s;
|
|
|
|
};
|
|
|
|
usersConnected = 0;
|
|
lastUsername = 0;
|
|
|
|
io.on("connection", (client) => {
|
|
|
|
usersConnected++;
|
|
io.sockets.emit("update-count", {value: usersConnected});
|
|
|
|
client.on("disconnect", () => {
|
|
usersConnected--;
|
|
io.sockets.emit("update-count", {value: usersConnected});
|
|
console.log(getCurrentTime() + ": Client disconnection (" + client.usernameDenis + ")");
|
|
});
|
|
|
|
client.on("message", (data) => {
|
|
if(data.message.toLowerCase().includes("denis")) {
|
|
io.sockets.emit("new-message", {author: client.usernameDenis, message: data.message});
|
|
console.log(getCurrentTime() + ": (" + client.usernameDenis + ") : " + data.message);
|
|
|
|
} else {
|
|
client.emit("warning");
|
|
console.log(getCurrentTime() + ": (" + client.usernameDenis + ") : " + data.message + "(invalid)");
|
|
}
|
|
});
|
|
|
|
lastUsername++;
|
|
client.usernameDenis = "DenisFan" + lastUsername;
|
|
client.emit("username", {username: "DenisFan" + lastUsername});
|
|
console.log(getCurrentTime() + ": Client connection (" + client.usernameDenis + ")");
|
|
|
|
});
|
|
|
|
|
|
app.use(express.static("src"));
|
|
|
|
|
|
app.listen(80, () => {
|
|
console.log(getCurrentTime() + ": Web server started on port 80")
|
|
});
|
|
|
|
webHTTPSServer.listen(443, () => {
|
|
console.log(getCurrentTime() + ": Web HTTPS server started on port 443");
|
|
});
|
|
|
|
socketHTTPSServer.listen(3000, () => {
|
|
console.log(getCurrentTime() + ": Socket HTTPS server started on port 3000");
|
|
});
|