Version 0.7.1 - Ajout des logs

This commit is contained in:
Raphix
2023-08-31 19:31:09 +02:00
parent 30a0208cf1
commit 51820268cd
12 changed files with 331 additions and 172 deletions

View File

@ -18,6 +18,7 @@ const __glob = {
NODES: root + path.sep + "data" + path.sep + "nodes.json",
README: root + path.sep + "README.md",
PLAYLIST: root + path.sep + "data" + path.sep + "playlist.json",
LOGS: root + path.sep + "src" + path.sep + "modules" + path.sep + "logs"
};
const webroot = __glob.WEB_DIR + path.sep

View File

@ -743,7 +743,7 @@ module.exports.updateMusicState = function (client, action) {
data["isOnline"] = false
}
clog.log("Actualisation de tous les clients - Titre : " + currentTitle + " - Loop : " + data.loop + " - Shuffle : " + data.shuffle + " - Playing : " + data.playing + " - Volume : " + Math.trunc(data.volume / 10) )
clog.log("Actualisation Clients - Titre : " + currentTitle + " - Loop : " + data.loop + " - Shuffle : " + data.shuffle + " - Playing : " + data.playing + " - Volume : " + Math.trunc(data.volume / 10) )
return data

View File

@ -8,7 +8,8 @@ const wlog = new LogType("Web")
const subplayer = require(__glob.SUBPLAYER);
const { List } = require("./sub-list")
const subplaylist = require("./sub-playlist")
var fs = require("fs")
var path = require("path")
module.exports.WebServer = class {
@ -213,6 +214,33 @@ function IOConnection(io) {
})
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)
}
})
@ -269,6 +297,8 @@ function IOConnection(io) {
})
GetRequest(io, socket, "SPECIAL/MJ", () => {

View File

@ -21,7 +21,7 @@ function get(request) {
socket.once("ANSWER/GET/" + request, (answer) => {
console.log("Réponse pour la requête : " + request)
resolve(answer)
})

View File

@ -13,9 +13,8 @@ const backward = document.getElementById("backward")
const play = document.getElementById("play")
const forward = document.getElementById("forward")
const settings_dialog = document.getElementById("SETTINGS_dialog")
const settings_close = document.getElementById("SETTINGS_close")
const settingsBtn = document.getElementById("settingsBtn")
const settingsBtn = document.getElementById("settings_btn")
@ -109,10 +108,6 @@ socket.on("DO_UPDATE_PLAYLIST", () => {
get("PLAYLIST")
})
get("PLAYLIST")
socket.on("ANSWER/GET/PLAYLIST", (data) => {
@ -644,10 +639,7 @@ disconnect.addEventListener("click", () => {
})
/*settingsBtn.addEventListener("click", () => {
settings_dialog.showModal()
})*/
reportBtn.addEventListener("click", () => {
@ -678,10 +670,6 @@ shuffle.addEventListener("click", () => {
})
settings_close.addEventListener("click",() => {
settings_dialog.close()
})
var durationAll = 0
var durationProgress = 0
@ -697,6 +685,8 @@ durationBar.addEventListener("change", () => {
userInfo.then(user => {
settingsBtn.style.display = "none"
var betastar = ""
if(user.beta) {
@ -704,6 +694,11 @@ userInfo.then(user => {
betastar = "<p class='beta'>BETA</p>"
}
if(user.admin == true) {
settingsBtn.style.display = "flex"
}
userInfoDiv.innerHTML = "<div class='INDEX_userInfo_name'><p class='INDEX_gbname'>" + user.user.global_name + "</p><p class='INDEX_usrname'>" + user.user.username + "</p></div><div class='INDEX_picture'><img src='https://cdn.discordapp.com/avatars/" + user.user.id + "/" + user.user.avatar + "'>" + betastar + "</div>"

View File

@ -0,0 +1,165 @@
settingsBtn.addEventListener("click", () => {
mainView.innerHTML = `
<div class="SETTINGS">
<div class='ssidebar'>
<div id="settings_logs" class="sside_line"><i class="fa-solid fa-newspaper"></i> Logs</div>
<div id="settings_connexion" class="sside_line"><i class="fa-solid fa-tower-cell"></i> Connexions</div>
<div id="settings_users" class="sside_line"><i class="fa-solid fa-people-group"></i> Utilisateurs</div>
</div>
<div id="settings_content" class='SETTINGS_content'>
<div class=""><i class="fa fa-search"></i> Logs</div>
</div>
</div>
`
const settings_logs = document.getElementById("settings_logs")
const settings_connexion = document.getElementById("settings_connexion")
const settings_users = document.getElementById("settings_users")
const settings_content = document.getElementById("settings_content")
loadLogs()
settings_logs.addEventListener("click", () => {
loadLogs()
})
settings_connexion.addEventListener("click", () => {
loadConnexion()
})
settings_users.addEventListener("click", () => {
loadUsers()
})
settings_logs.style.color = "white"
function loadLogs() {
settings_content.innerHTML = `
<select id="logs_selection">
<option>Test</option>
<option>Test</option>
<option>Test</option>
</select>
</div>
<div id="logs_content" class="logs_content">
</div>
`
const logs_selection = document.getElementById("logs_selection")
const logs_content = document.getElementById("logs_content")
const logs_data = get("LOGS")
logs_data.then(data => {
var optionToPush = new Array()
for(var log of data) {
optionToPush.push("<option>" + log.name + "</option>")
}
logs_selection.innerHTML = optionToPush.reverse().join("")
for(var log of data) {
if(logs_selection.value == log.name) {
var logToPush = new Array()
for(var line of log.value.split("\n")) {
line.toString()
line = line.replace("[INFO]", "<span style='color: #41f2ff !important;'>[INFO]</span>")
.replace("[ERROR]", "<span style='color: #ff3232;'>[ERROR]</span>")
.replace("[WARN]", "<span style='color: #ffea00;'>[WARN]</span>")
.replace("[FATAL]", "<span style='color: red;'>[FATAL]</span>")
.replace("[STEP]", "<span style='color: #ff6bf5;'>[STEP]</span>");
logToPush.push("<p class='log_line'>" +line+ "</p>")
}
logs_content.innerHTML = logToPush.join("")
}
}
logs_selection.addEventListener("change", () => {
for(var log of data) {
if(logs_selection.value == log.name) {
var logToPush = new Array()
for(var line of log.value.split("\n")) {
line.toString()
line = line.replace("[INFO]", "<span style='color: #41f2ff !important;'>[INFO]</span>")
.replace("[ERROR]", "<span style='color: #ff3232;'>[ERROR]</span>")
.replace("[WARN]", "<span style='color: #ffea00;'>[WARN]</span>")
.replace("[FATAL]", "<span style='color: red;'>[FATAL]</span>")
.replace("[STEP]", "<span style='color: #ff6bf5;'>[STEP]</span>");
logToPush.push("<p class='log_line'>" + line + "</p>")
}
logs_content.innerHTML = logToPush.join("")
}
}
})
})
}
function loadConnexion() {
settings_content.innerHTML = `
<p>Connexions</p>
`
}
function loadUsers() {
settings_content.innerHTML = `
<p>Users</p>
`
}
const buttons = document.querySelectorAll(".sside_line");
buttons.forEach(button => {
button.addEventListener("click", function () {
buttons.forEach(btn => {
if (btn === button) {
btn.style.color = "white";
} else {
btn.style.color = "";
}
});
});
});
})

View File

@ -442,33 +442,7 @@ p {
/*SETTINGS*/
.SETTINGS_dialog {
width: 40vw;
height: 25vw;
padding: 0;
background: linear-gradient(90deg, #515151 0%, #2e2e2e 100%);
border: none;
border-radius: 12px;
}
.SETTINGS_content {
display: flex;
width: 100%;
flex-direction: row;
}
.ssidebar {
width: 12vw;
position: sticky;
height: 25vw;
background-color: #2d2d2d;
border-radius: 12px 0 0 12px;
display: flex; /* Ajout : pour aligner les éléments verticalement à l'intérieur */
flex-direction: column; /* Ajout : pour aligner les éléments verticalement à l'intérieur */
}
.third-join {
@ -563,24 +537,7 @@ p {
text-align: center;
}
.SETTINGS_close {
color: red;
background-color: transparent;
border-radius: 50vw;
border-color: red;
border-style: solid;
padding: 5px;
width: 40px;
height: 40px;
transition: all 0.2s ease 0s;
}
.SETTINGS_close:hover {
color: white;
background-color: red;
cursor: pointer;
}
.invisible {
@ -1031,4 +988,65 @@ p {
.ppTile {
width: 180px;
}
/*SETTINGS*/
.SETTINGS_content {
width: 100%;
margin-left: 2%;
border-left: solid 1px #515151;
padding: 2%;
overflow: auto;
}
.ssidebar {
width: 20%;
height: 100%;
display: flex; /* Ajout : pour aligner les éléments verticalement à l'intérieur */
flex-direction: column;
align-items: center;
justify-content: center;
}
.SETTINGS {
width: 100%;
display: flex;
flex-direction: row;
height: 64vh;
}
.sside_line {
width: 100%;
color: rgba(255, 255, 255, 0.719);
text-align: center;
padding: 10%;
font-size: 22px;
cursor: pointer;
}
#logs_selection {
width: 100%;
border-radius: 12px;
padding: 1%;
}
.logs_content {
margin-top: 50px;
color: white;
font-size: 12px;
font-family: 'Courier New', Courier, monospace;
display: flex;
flex-direction: column;
}
.log_line {
width: 100%;
}

View File

@ -4,6 +4,8 @@ var path = require("path")
var auth = require("../../modules/sub-auth")
var log = require("../../modules/sub-log")
var uuid = require("uuid")
var fs = require("fs");
const { __glob, __web } = require('../../modules/global-variables');
const wlog = log.getInstance("Web")
const alog = log.getInstance("Authentification")

View File

@ -16,7 +16,7 @@
<div id="userInfoglobal">
<div class="INDEX_userInfo" id="userInfo"></div>
<div class="INDEX_userPopup" id="userPopup">
<!--div id="settingsBtn" class="INDEX_line"><i class="fa-solid fa-wrench"></i> Paramètres</div>-->
<div id="reportBtn" class="INDEX_line"><i class="fa-solid fa-bug"></i> Rapport</div>
<div id="restartBtn" class="INDEX_line"><i class="fa-solid fa-power-off"></i> Redémarrer</div>
<a class="INDEX_signout" href="/internal/logout"><i class="fa fa-sign-out " aria-hidden="true"></i> Déconnexion</a>
@ -33,6 +33,10 @@
<p><i class="fa fa-search"></i> Rechercher</p>
</div>
<div id="settings_btn" class="pSearch checker">
<p><i class="fa fa-gear"></i> Paramètres</p>
</div>
<hr style="color: white;">
<div class="playlist-content" id="playlist-content">
@ -58,8 +62,6 @@
<%- welcome %>
</div>
</div>
</div>
@ -110,32 +112,6 @@
</div>
</div>
<dialog class="SETTINGS_dialog" id="SETTINGS_dialog">
<div class="SETTINGS_content">
<div class="ssidebar">
<h2 style=" padding: 1vw; position: absolute;" class="dialogTitle"><i class="fa fa-wrench"></i> Paramètres</h2>
<div class="ssidebar_content">
<div class="ssidebar_line"><i class="fa-solid fa-newspaper"></i> Logs</div>
<div class="ssidebar_line"><i class="fa-solid fa-tower-cell"></i> Connexions</div>
<div class="ssidebar_line"><i class="fa-solid fa-people-group"></i> Gestion d'accès</div>
<div class="ssidebar_line"><i class="fa-solid fa-shield"></i> Bêta</div>
</div>
</div>
<div class="scontent">
<div class="slineclose">
<button id="SETTINGS_close" class="SETTINGS_close"><i class="fa-solid fa-xmark"></i></button>
</div>
<p style="color: red; font-size: 72px; text-align: center; font-family: 'Gunship', sans-serif;" >NOT WORKING</p>
</div>
</div>
</dialog>
<dialog class="report_dialog" id="report_dialog">
<div class="rlineclose">
<p class="rtitle"><i class="fa fa-bug"></i> Rapport de bug</p>
@ -159,6 +135,7 @@
<script src="/socket.io/socket.io.js"></script>
<script src="/javascript/IO.js"></script>
<script src="/javascript/__index_script.js"></script>
<script src="/javascript/__settings_script.js"></script>
<script defer src="https://use.fontawesome.com/releases/v6.4.2/js/all.js" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</body>