async function generateServiceView() {
class Service {
name = null
description = null
icon = null
url = null
canAccess = false
isOnline = false
constructor(properties) {
this.name = properties.name
this.description = properties.description
this.icon = properties.icon
this.url = properties.url
this.canAccess = properties.canAccess
}
generateHTML() {
return `
${this.name}
${this.description}
Etat : Vérification en cours ...
`
}
loadScript() {
return new Promise((resolve, reject) => {
const statusSpan = getID(`${this.name}_status`)
const request = post(`SV_GET_SERVICE_STATUS`, this.url)
request.then((answer) => {
if(answer.name == this.url) {
if(answer.answer == "ONLINE") {
statusSpan.innerHTML = ' En ligne'
this.isOnline = true
} else {
statusSpan.innerHTML = ' Hors ligne'
}
resolve("LOADED")
}
})
const powerButton = getID(`${this.name}_svpower`)
// Make a popup of View to select if you want to start, stop or restart the service by doing a request
powerButton.addEventListener("click", () => {
View.createPopup({
title: ` Gestion de l'alimentation du service`,
content: `
${this.name}
`
})
const startButton = getID(`${this.name}_start`)
const stopButton = getID(`${this.name}_stop`)
const restartButton = getID(`${this.name}_restart`)
const info = new InfoPop("sv-power-info")
if(this.isOnline) {
startButton.style.display = "none"
info.info("Verifiez que le service n'est pas utilisé par quelqu'un d'autre avant de le redémarrer ou de l'arrêter")
} else {
stopButton.style.display = "none"
restartButton.style.display = "none"
info.info("Si le service ne démarre pas, vérifiez l'intégrité du service")
}
startButton.addEventListener("click", () => {
const request = post(`SV_START_SERVICE`, this.url)
request.then((answer) => {
if(answer.answer == "OK") {
statusSpan.innerHTML = ' En ligne'
View.destroyPopup("` Gestion de l'alimentation du service`")
this.isOnline = true
} else {
info.err("Impossible de démarrer le service")
}
})
})
stopButton.addEventListener("click", () => {
const request = post(`SV_STOP_SERVICE`, this.url)
request.then((answer) => {
if(answer.answer == "OK") {
statusSpan.innerHTML = ' Hors ligne'
this.isOnline = false
View.destroyPopup("` Gestion de l'alimentation du service`")
} else {
info.err("Impossible d'arrêter le service")
}
})
})
restartButton.addEventListener("click", () => {
console.log("RESTART")
const request = post(`SV_RESTART_SERVICE`, this.url)
request.then((answer) => {
if(answer.answer == "OK") {
statusSpan.innerHTML = ' En ligne'
View.destroyPopup("` Gestion de l'alimentation du service`")
this.isOnline = true
} else {
info.err("Impossible de redémarrer le service")
}
})
})
})
})
}
}
/**
* CODE OF SERVICE.JS
*/
const allServices = new Array()
const View = new ViewWindow({
title: ' Gestion des services',
width: "700px",
height: "600px"
})
const subsonicsService = new Service({
name: "Subsonics",
description: "Bot de streaming musical sur Discord",
icon: "/images/services/subsonics.png",
url: "https://subsonics.raphix.fr" ,
canAccess: true
})
const giteaService = new Service({
name: "Gitea",
description: "Gestionnaire de dépôt Git",
icon: "/images/services/gitea.svg",
url: "https://git.raphix.fr" ,
canAccess: true
})
const jenkinsService = new Service({
name: "Jenkins",
description: "Gestionnaire de pipeline",
icon: "/images/services/jenkins.svg",
url: "https://jenkins.raphix.fr" ,
canAccess: true
})
const raphixwebsite = new Service({
name: "Raphix.fr",
description: "Site web de Raphix",
icon: "/images/services/raphix.png",
url: "https://raphix.fr",
canAccess: true
})
const cvraphix = new Service({
name: "CV Raphix",
description: "Curriculum Vitae de Raphix",
icon: "/images/services/cv.png",
url: "https://cv.raphix.fr",
canAccess: true
})
const lavalink = new Service({
name: "Lavalink",
description: "Serveur Lavalink pour Subsonics",
icon: "/images/services/lavalink.svg",
url: "http://omega.raphix.fr:2333",
canAccess: false
})
allServices.push(subsonicsService.generateHTML())
allServices.push(lavalink.generateHTML())
allServices.push(giteaService.generateHTML())
allServices.push(jenkinsService.generateHTML())
allServices.push(raphixwebsite.generateHTML())
allServices.push(cvraphix.generateHTML())
View.setContent(`${allServices.join("")}
`)
await subsonicsService.loadScript()
await giteaService.loadScript()
await jenkinsService.loadScript()
await raphixwebsite.loadScript()
await cvraphix.loadScript()
await lavalink.loadScript()
}