1305 lines
34 KiB
JavaScript
1305 lines
34 KiB
JavaScript
const internal = require("stream");
|
|
const { __glob, __web } = require("./global-variables");
|
|
const { LogType } = require("./sub-log");
|
|
const log = require("./sub-log");
|
|
const auth = require("./sub-auth");
|
|
const cook = require("cookie")
|
|
const wlog = new LogType("Web")
|
|
const subplayer = require('./sub-player');
|
|
const subradio = require("./sub-radio.js")
|
|
const { List } = require("./sub-list")
|
|
const subplaylist = require("./sub-playlist")
|
|
const nodesfinder = require("./nodes-finder")
|
|
var fs = require("fs")
|
|
var path = require("path")
|
|
|
|
module.exports.WebServer = class {
|
|
|
|
constructor() {
|
|
|
|
wlog.step.init("start_server", "Démarrage du serveur Express (Web)")
|
|
init()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function init() {
|
|
const createError = require('http-errors');
|
|
const express = require('express');
|
|
const path = require('path');
|
|
const cookieParser = require('cookie-parser');
|
|
const http = require("http");
|
|
const favicon = require('express-favicon');
|
|
|
|
const app = express();
|
|
|
|
const port = normalizePort(process.env.PORT || '4000');
|
|
|
|
|
|
const server = require('http').createServer(app);
|
|
const io = require('socket.io')(server)
|
|
|
|
const indexRouter = require(__web.ROUTER + "index.js");
|
|
const loginRouter = require(__web.ROUTER + "login.js");
|
|
const internalRouter = require(__web.ROUTER + "internal.js")
|
|
|
|
IOConnection(io)
|
|
|
|
|
|
app.set('views', __web.TEMPLATES); // general config
|
|
app.set('view engine', 'ejs');
|
|
app.use(express.json());
|
|
app.use(express.urlencoded({ extended: false }));
|
|
app.use(cookieParser());
|
|
app.use(express.static(__web.PUBLIC));
|
|
app.set('port', port);
|
|
app.use('/', indexRouter);
|
|
app.use('/login', loginRouter);
|
|
app.use("/internal", internalRouter)
|
|
app.use(favicon(__web.ICON));
|
|
|
|
app.use(function (req, res, next) {
|
|
next(createError(404));
|
|
});
|
|
|
|
app.use(function (err, req, res, next) {
|
|
|
|
// Set locals, only providing error
|
|
// in development
|
|
res.locals.message = err.message;
|
|
res.locals.error = req.app.get('env')
|
|
=== 'development' ? err : {};
|
|
|
|
// render the error page
|
|
res.status(err.status || 500);
|
|
res.render('error');
|
|
});
|
|
|
|
server.listen(port);
|
|
server.on('error', (error) => {
|
|
if (error.syscall !== 'listen') {
|
|
throw error;
|
|
}
|
|
|
|
let bind = typeof port === 'string'
|
|
? 'Pipe ' + port
|
|
: 'Port ' + port;
|
|
|
|
// Handle specific listen errors with
|
|
// friendly messages
|
|
switch (error.code) {
|
|
case 'EACCES':
|
|
console.error(bind
|
|
+ ' requires elevated privileges');
|
|
process.exit(1);
|
|
break;
|
|
case 'EADDRINUSE':
|
|
console.error(bind + ' is already in use');
|
|
process.exit(1);
|
|
break;
|
|
default:
|
|
throw error;
|
|
}
|
|
|
|
});
|
|
server.on('listening', () => {
|
|
|
|
let addr = server.address();
|
|
let bind = typeof addr === 'string'
|
|
? 'pipe ' + addr
|
|
: 'port ' + addr.port;
|
|
wlog.log("Serveur démarré sur le port : " + bind )
|
|
});
|
|
|
|
wlog.step.end("start_server")
|
|
|
|
}
|
|
|
|
// EXPRESS FUNCTIONS
|
|
|
|
function normalizePort(val) {
|
|
let port = parseInt(val, 10);
|
|
|
|
if (isNaN(port)) {
|
|
|
|
// Named pipe
|
|
return val;
|
|
}
|
|
|
|
if (port >= 0) {
|
|
|
|
// Port number
|
|
return port;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
function IOConnection(io) {
|
|
|
|
const alog = log.getInstance("Authentification")
|
|
|
|
const usersOnline = new Array()
|
|
|
|
|
|
process.on("UPDATE_NODES", () => {
|
|
|
|
if(io) {
|
|
|
|
const data = nodesfinder.getNodesData()
|
|
|
|
io.sockets.emit("ALWAYS/NODES", data)
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
process.on("UPDATE_RADIO", () => {
|
|
|
|
if(io) {
|
|
|
|
const radioList = subradio.get()
|
|
io.sockets.emit("ALWAYS/ALL_RADIO", radioList)
|
|
}
|
|
|
|
})
|
|
|
|
process.on("MUSIC_UPDATE_STATE", () => {
|
|
|
|
const data = subplayer.updateMusicState()
|
|
|
|
io.sockets.emit("/ALWAYS/MUSIC_STATE", data)
|
|
|
|
})
|
|
|
|
io.on("connection", (socket) => {
|
|
|
|
var ucookies = socket.handshake.headers.cookie
|
|
ucookies = cook.parse(ucookies)
|
|
|
|
if(ucookies.token) {
|
|
|
|
var utoken = ucookies.token
|
|
const online_users_data = auth.getSimpleUser(utoken)
|
|
|
|
|
|
usersOnline.push(online_users_data)
|
|
|
|
alog.log(online_users_data.username + " - Connexion du serveur")
|
|
}
|
|
|
|
io.sockets.emit("ALWAYS/ALL_CONNECTED_USER", usersOnline)
|
|
|
|
|
|
|
|
wlog.log("[SOCKET] - Nouvelle session : " + socket.id)
|
|
|
|
|
|
|
|
socket.on("disconnect", () => {
|
|
|
|
wlog.log("[SOCKET] - Fin de session : " + socket.id)
|
|
if(ucookies.token) {
|
|
|
|
var utoken = ucookies.token
|
|
const online_users_data = auth.getSimpleUser(utoken)
|
|
|
|
var userIndex = -1
|
|
|
|
for(var user of usersOnline) {
|
|
if(user.username == online_users_data.username) {
|
|
|
|
userIndex = usersOnline.indexOf(user)
|
|
}
|
|
|
|
}
|
|
|
|
alog.log(online_users_data.username + " - Deconnexion du serveur")
|
|
|
|
usersOnline.splice(userIndex, 1)
|
|
|
|
|
|
}
|
|
|
|
io.sockets.emit("ALWAYS/ALL_CONNECTED_USER", usersOnline)
|
|
|
|
})
|
|
|
|
|
|
// SPECIAL
|
|
|
|
socket.on("GET/DISCORD_LOGIN_LINK", () => {
|
|
|
|
|
|
var discordlink = null
|
|
|
|
if(process.env.DEV == "true") {
|
|
|
|
alog.log("Mode Developpeur Actif : Redirige vers LOCALHOST")
|
|
discordlink = "https://discord.com/api/oauth2/authorize?client_id=1094727789682380922&redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Finternal%2Fredirect&response_type=code&scope=identify%20guilds%20guilds.members.read" //DEV
|
|
} else {
|
|
discordlink = "https://discord.com/api/oauth2/authorize?client_id=1094727789682380922&redirect_uri=https%3A%2F%2Fsubsonics.raphix.fr%2Finternal%2Fredirect&response_type=code&scope=identify%20guilds%20guilds.members.read" //OFFICIEL
|
|
}
|
|
|
|
alog.log("Redirection de '" + socket.id + "' vers le service d'Authentification de Discord [ETAPE 1]")
|
|
io.emit("ANSWER/GET/DISCORD_LOGIN_LINK", discordlink )
|
|
})
|
|
|
|
GetRequest(io, socket, "USER_INFO", () => {
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
|
|
const user = auth.getUser(token)
|
|
alog.log("Envoi des informations Discord de '" + user.user.username + "' à '" + socket.id + "'" )
|
|
socket.emit("ANSWER/GET/USER_INFO",user)
|
|
})
|
|
|
|
GetRequest(io, socket, "MUSIC_STATE", () => {
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
|
|
const data = subplayer.updateMusicState()
|
|
const user = auth.getUser(token)
|
|
socket.emit("ANSWER/GET/MUSIC_STATE", "Bienvenue " + user.user.username + " ! ")
|
|
io.sockets.emit("/ALWAYS/MUSIC_STATE", data)
|
|
})
|
|
|
|
GetRequest(io, socket, "PLAYLIST", () => {
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
|
|
|
|
const user = auth.getUser(token)
|
|
const playlistResult = subplaylist.getUser(user.user.id)
|
|
socket.emit("ANSWER/GET/PLAYLIST", playlistResult)
|
|
|
|
})
|
|
|
|
|
|
GetRequest(io, socket, "LOGS", () => {
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
const logs_data = new Array()
|
|
|
|
if(user.admin == true) {
|
|
|
|
const logs_folder = fs.readdirSync(__glob.LOGS)
|
|
|
|
for(var log of logs_folder) {
|
|
|
|
logs_data.push({"name":log, "value": fs.readFileSync(__glob.LOGS + path.sep + log).toString()})
|
|
}
|
|
|
|
socket.emit("ANSWER/GET/LOGS", logs_data)
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
GetRequest(io, socket, "USERS", () => {
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
const users_data = auth.getUsers()
|
|
|
|
socket.emit("ALWAYS/USERS", users_data)
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "USER_LIST", () => {
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
const users_data = auth.getUsersList()
|
|
|
|
socket.emit("ANSWER/GET/USER_LIST", users_data)
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
GetRequest(io, socket, "PAUSE", () => {
|
|
|
|
subplayer.pause()
|
|
io.emit("ANSWER/GET/PAUSE", "OK")
|
|
|
|
})
|
|
|
|
|
|
GetRequest(io, socket, "BACKWARD", () => {
|
|
|
|
subplayer.previous()
|
|
io.emit("ANSWER/GET/BACKWARD", "OK")
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "FORWARD", () => {
|
|
|
|
subplayer.skip()
|
|
io.emit("ANSWER/GET/FORWARD", "OK")
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "LOOP", () => {
|
|
|
|
subplayer.loop()
|
|
io.emit("ANSWER/GET/LOOP", "OK")
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "SHUFFLE", () => {
|
|
|
|
subplayer.changeShuffle()
|
|
io.emit("ANSWER/GET/SHUFFLE", "OK")
|
|
|
|
})
|
|
|
|
|
|
GetRequest(io, socket, "DISCONNECT", () => {
|
|
|
|
subplayer.leave()
|
|
io.emit("ANSWER/GET/DISCONNECT", "OK")
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a déconnecté le Bot"})
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "RESTART", () => {
|
|
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a redémarré le Bot"})
|
|
|
|
|
|
const pm2 = require('pm2');
|
|
|
|
pm2.restart('SubSonics - Bot Discord')
|
|
})
|
|
|
|
GetRequest(io, socket, "NODES", () => {
|
|
|
|
process.emit("UPDATE_NODES")
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
GetRequest(io, socket, "SPECIAL/MJ", () => {
|
|
|
|
var cookiesA = socket.handshake.headers.cookie
|
|
cookiesA = cook.parse(cookiesA)
|
|
var tokenA = cookiesA.token
|
|
|
|
var userA = auth.getUser(tokenA)
|
|
var userId = userA.user.id
|
|
|
|
|
|
subplayer.SPECIAL_MJ(null, userId)
|
|
io.emit("ANSWER/GET/SPECIAL/MJ", "OK")
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "ALL_CONNECTED_USER", () => {
|
|
|
|
|
|
io.sockets.emit("ALWAYS/ALL_CONNECTED_USER", usersOnline)
|
|
|
|
})
|
|
|
|
GetRequest(io, socket, "ALL_RADIO", () => {
|
|
|
|
const radioList = subradio.get()
|
|
io.sockets.emit("ALWAYS/ALL_RADIO", radioList)
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// SEND REQUEST
|
|
|
|
socket.on("SEND/NODES/ADD", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
nodesfinder.addNodes(data)
|
|
|
|
socket.emit("ANSWER/SEND/NODES/ADD", "OK")
|
|
process.emit("UPDATE_NODES")
|
|
}
|
|
|
|
} else {
|
|
io.emit("ANSWER/SEND/NODES/ADD", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/RADIO/ADD", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
const music_data = await (await subplayer.search(data)).results.tracks[0]
|
|
|
|
var radioContains = null
|
|
|
|
for(var title of subradio.get()) {
|
|
|
|
if(title.uri == music_data.uri) {
|
|
|
|
radioContains = true
|
|
}
|
|
}
|
|
|
|
|
|
if(!radioContains) {
|
|
|
|
subradio.add(music_data)
|
|
console.log("[Radio] - ADD : " + data)
|
|
|
|
} else {
|
|
|
|
subradio.remove(music_data)
|
|
console.log("[Radio] - REMOVE : " + data)
|
|
|
|
}
|
|
|
|
|
|
socket.emit("ANSWER/SEND/RADIO/ADD", "OK")
|
|
process.emit("UPDATE_RADIO")
|
|
}
|
|
|
|
} else {
|
|
io.emit("ANSWER/SEND/RADIO/ADD", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/NODES/DELETE", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
nodesfinder.deleteNode(data)
|
|
|
|
socket.emit("ANSWER/SEND/NODES/DELETE", "OK")
|
|
process.emit("UPDATE_NODES")
|
|
}
|
|
|
|
} else {
|
|
io.emit("ANSWER/SEND/USERS/ADMIN", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/NODES/RELOAD", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
nodesfinder.reloadNode(data)
|
|
|
|
socket.emit("ANSWER/SEND/NODES/RELOAD", "OK")
|
|
process.emit("UPDATE_NODES")
|
|
}
|
|
|
|
} else {
|
|
io.emit("ANSWER/SEND/NODES/RELOAD", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/USERS/ADMIN", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
auth.setAdmin(data)
|
|
|
|
socket.emit("ANSWER/GET/USERS/ADMIN", "OK")
|
|
|
|
const users_data = auth.getUsers()
|
|
|
|
io.sockets.emit("ALWAYS/USERS", users_data)
|
|
}
|
|
|
|
} else {
|
|
io.emit("ANSWER/SEND/USERS/ADMIN", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/USERS/DELETE", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
const user = auth.getUser(token)
|
|
|
|
|
|
if(user.admin == true) {
|
|
|
|
auth.removeUser(data.token)
|
|
|
|
socket.emit("ANSWER/GET/USERS/ADMIN", "OK")
|
|
|
|
const users_data = auth.getUsers()
|
|
|
|
io.sockets.emit("ALWAYS/USERS", users_data)
|
|
|
|
}
|
|
|
|
} else {
|
|
io.emit("ANSWER/SEND/USERS/ADMIN", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/SEEK", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
subplayer.seek(data)
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/SEEK", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/SEEK", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/VOLUME", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
subplayer.setVol(data)
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/VOLUME", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/VOLUME", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/DELETE_QUEUE", (data, title) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
var sublist = new List()
|
|
sublist.removeByIndex(data)
|
|
|
|
|
|
const user = auth.getUser(token)
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a supprimé un titre dans la liste de lecture : <strong>" + title + "</strong>" })
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/DELETE_QUEUE", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/DELETE_QUEUE", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/MOVE_QUEUE", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
var sublist = new List()
|
|
sublist.moveUp(data)
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/DELETE_QUEUE", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/DELETE_QUEUE", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/REPORT", (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
data.username = auth.getUser(token)
|
|
subplayer.report(null, null, data)
|
|
|
|
const user = auth.getUser(token)
|
|
socket.emit("NOTIFICATION", {"image_src": "https://static.vecteezy.com/system/resources/previews/019/521/981/non_2x/green-check-mark-icon-with-circle-checkmark-illustration-free-vector.jpg", "text": "Votre rapport de bug a été correctement envoyé !" })
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/REPORT", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/REPORT", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/SEARCH", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
const results = await subplayer.search(data)
|
|
|
|
|
|
io.emit("ANSWER/SEND/SEARCH", results)
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/SEARCH", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/SEARCH", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/ADD_SONG", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplayer.addSong(data, null, userId)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a ajouté un nouveau titre : <strong>" + data.title + "</strong>" })
|
|
io.emit("ANSWER/SEND/ADD_SONG/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/ADD_SONG", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/ADD_SONG", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/ADD_SONG_NOW", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplayer.addSong(data, null, userId, true)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a fait jouer maintenant un nouveau titre : <strong>" + data.title + "</strong>" })
|
|
io.emit("ANSWER/SEND/ADD_SONG_NOW/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/ADD_SONG_NOW", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/ADD_SONG_NOW", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/FP_ADD_SONG", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplayer.addSong(data, null, userId, false, true)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a ajouté un nouveau titre : <strong>" + data.title + "</strong>" })
|
|
io.emit("ANSWER/SEND/FP_ADD_SONG/OK")
|
|
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/FP_ADD_SONG", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/FP_ADD_SONG", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
socket.on("SEND/FP_ADD_SONG_NOW", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplayer.addSong(data, null, userId, true, true)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a fait jouer maintenant un nouveau titre : <strong>" + data.title + "</strong>" })
|
|
io.emit("ANSWER/SEND/FP_ADD_SONG_NOW/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/FP_ADD_SONG_NOW", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/FP_ADD_SONG_NOW", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
socket.on("SEND/FP_PLAY_PLAYLIST", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplayer.addSongsFromPlaylist(data, null, userId, true)
|
|
|
|
io.sockets.emit("NOTIFICATION", {"image_src": "https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar, "text": user.user.global_name + " (" + user.user.username + ") a ajouté une playlist à la liste de lecture !" })
|
|
io.emit("ANSWER/SEND/FP_PLAY_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/FP_PLAY_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/FP_PLAY_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/CREATE_PLAYLIST", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplaylist.addPlaylist(userId, data)
|
|
|
|
io.emit("DO_UPDATE_PLAYLIST")
|
|
io.emit("ANSWER/SEND/CREATE_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/CREATE_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/CREATE_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/DELETE_PLAYLIST", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplaylist.removePlaylist(userId, data)
|
|
|
|
io.emit("DO_UPDATE_PLAYLIST")
|
|
io.emit("ANSWER/SEND/DELETE_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/DELETE_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/DELETE_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/PLAY_PLAYLIST", async (data) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplaylist.playPlaylist(userId, data)
|
|
|
|
io.emit("DO_UPDATE_PLAYLIST")
|
|
io.emit("ANSWER/SEND/PLAY_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/PLAY_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/PLAY_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
socket.on("SEND/SEND_PLAYLIST", async (key, dest) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
|
|
subplaylist.copyPlaylist(userId, key, dest)
|
|
|
|
io.sockets.emit("DO_UPDATE_PLAYLIST")
|
|
socket.emit("NOTIFICATION", {"image_src": "https://static.vecteezy.com/system/resources/previews/019/521/981/non_2x/green-check-mark-icon-with-circle-checkmark-illustration-free-vector.jpg", "text": "La playlist a été correctement envoyé ! (Si le destinataire a déjà une playlist avec le même nom, l'opération est annulé" })
|
|
io.emit("ANSWER/SEND/SEND_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/SEND_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/SEND_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
socket.on("SEND/ADD_SONG_TO_PLAYLIST", async (data, song) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
subplaylist.addSong(userId, data, song)
|
|
|
|
io.emit("DO_UPDATE_PLAYLIST")
|
|
io.emit("ANSWER/SEND/ADD_SONG_TO_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/ADD_SONG_TO_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/ADD_SONG_TO_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
socket.on("SEND/DELETE_SONG_TO_PLAYLIST", async (data, song) => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
|
|
|
|
var user = auth.getUser(token)
|
|
var userId = user.user.id
|
|
|
|
subplaylist.removeSong(userId, data, song)
|
|
|
|
io.emit("DO_UPDATE_PLAYLIST")
|
|
io.emit("ANSWER/SEND/DELETE_SONG_TO_PLAYLIST/OK")
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/SEND/DELETE_SONG_TO_PLAYLIST", {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/SEND/DELETE_SONG_TO_PLAYLIST", {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
function GetRequest (io, socket, name, func) {
|
|
|
|
|
|
socket.on("GET/" + name, () => {
|
|
|
|
|
|
var cookies = socket.handshake.headers.cookie
|
|
|
|
if(cookies) {
|
|
|
|
cookies = cook.parse(cookies)
|
|
var token = cookies.token
|
|
|
|
if(auth.checkUser(token)) {
|
|
|
|
const user = auth.getUser(token)
|
|
wlog.log("Requête de " + user.user.username + " avec l'information \"" + name + "\"")
|
|
func()
|
|
|
|
} else {
|
|
|
|
io.emit("ANSWER/GET/" + name, {"error":"USER_DONT_EXIST"})
|
|
}
|
|
} else {
|
|
io.emit("ANSWER/GET/" + name, {"error":"TOKEN_NOT_FINDED"})
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|