DEV_4
This commit is contained in:
		
							
								
								
									
										6
									
								
								app.js
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								app.js
									
									
									
									
									
								
							@@ -8,7 +8,7 @@ var fs = require("fs")
 | 
				
			|||||||
var uuid = require('uuid');
 | 
					var uuid = require('uuid');
 | 
				
			||||||
var CryptoJS = require("crypto-js")
 | 
					var CryptoJS = require("crypto-js")
 | 
				
			||||||
var fileUpload = require('express-fileupload')
 | 
					var fileUpload = require('express-fileupload')
 | 
				
			||||||
 | 
					var ntr = require("./neutral-functions.js")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var indexRouter = require('./routes/index');
 | 
					var indexRouter = require('./routes/index');
 | 
				
			||||||
@@ -18,6 +18,7 @@ var getRouter = require('./routes/get');
 | 
				
			|||||||
var setRouter = require('./routes/set');
 | 
					var setRouter = require('./routes/set');
 | 
				
			||||||
var uploadRouter = require('./routes/upload');
 | 
					var uploadRouter = require('./routes/upload');
 | 
				
			||||||
var userManagerRouter = require('./routes/usermanager');
 | 
					var userManagerRouter = require('./routes/usermanager');
 | 
				
			||||||
 | 
					var linkRouter = require('./routes/link');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,6 +45,7 @@ app.use('/get', getRouter);
 | 
				
			|||||||
app.use('/set', setRouter)
 | 
					app.use('/set', setRouter)
 | 
				
			||||||
app.use('/upload', uploadRouter)
 | 
					app.use('/upload', uploadRouter)
 | 
				
			||||||
app.use('/usermanager', userManagerRouter)
 | 
					app.use('/usermanager', userManagerRouter)
 | 
				
			||||||
 | 
					app.use('/link', linkRouter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// catch 404 and forward to error handler
 | 
					// catch 404 and forward to error handler
 | 
				
			||||||
@@ -63,7 +65,7 @@ app.use(function(err, req, res, next) {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ntr.checkUser()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = app;
 | 
					module.exports = app;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								links.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								links.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "Git GeekSchool": {
 | 
				
			||||||
 | 
					    "src": "https://git.geekschool.fr",
 | 
				
			||||||
 | 
					    "dest": "gitschool"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "Gmail": {
 | 
				
			||||||
 | 
					    "src": "https://mail.google.com/mail/",
 | 
				
			||||||
 | 
					    "dest": "gmail"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,7 +3,20 @@ var uuid = require('uuid')
 | 
				
			|||||||
var path = require("path")
 | 
					var path = require("path")
 | 
				
			||||||
var CryptoJS = require("crypto-js")
 | 
					var CryptoJS = require("crypto-js")
 | 
				
			||||||
var Jimp = require("jimp")
 | 
					var Jimp = require("jimp")
 | 
				
			||||||
 | 
					const { compileString } = require("sass")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.checkUser = () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const userDir = fs.readdirSync(__dirname + path.sep + "users" + path.sep)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if(userDir.length == 0) {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					      this.createUser("root","neutral",4,"Administrateur")
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports.createUser = (name, password, level, fullname) =>  {
 | 
					module.exports.createUser = (name, password, level, fullname) =>  {
 | 
				
			||||||
@@ -46,6 +59,10 @@ module.exports.createUser = (name, password, level, fullname) =>  {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports.deleteUser = (name) =>  {
 | 
					module.exports.deleteUser = (name) =>  {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const userUUID = this.getUUID(name)
 | 
					    const userUUID = this.getUUID(name)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										526
									
								
								public/templates/link.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										526
									
								
								public/templates/link.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,526 @@
 | 
				
			|||||||
 | 
					<div class="link">
 | 
				
			||||||
 | 
					    <h1>Générateur de lien</button></h1>
 | 
				
			||||||
 | 
					    </br>
 | 
				
			||||||
 | 
					    <div class="homepanel">
 | 
				
			||||||
 | 
					        <div class="row w-100">
 | 
				
			||||||
 | 
					            <div class="hbox col-lg">    
 | 
				
			||||||
 | 
					                <h1><i class="fa fa-link"></i> Liens raccourcis</h1>
 | 
				
			||||||
 | 
					                </br>
 | 
				
			||||||
 | 
					                <div id="lkcontent">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                </br>
 | 
				
			||||||
 | 
					                <button id="lk_add" class="lk_add"><i class="fa fa-plus"></i> Ajouter</button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<dialog class="lk_adduser" id="lk_add_form">
 | 
				
			||||||
 | 
					    <h1><i class="fa fa-plus"></i> Ajouter un lien raccourci</h1>
 | 
				
			||||||
 | 
					        <p>Nom du raccourci :</p>
 | 
				
			||||||
 | 
					        <input class="inp" id="lk_add_name" type="text">
 | 
				
			||||||
 | 
					        <p>Lien à raccourcir :</p>
 | 
				
			||||||
 | 
					        <input class="inp" id="lk_add_src" type="text">
 | 
				
			||||||
 | 
					        <p>Nouveau lien (neutral.raphix.fr/link/<i>votrelien</i>):</p>
 | 
				
			||||||
 | 
					        <input class="inp" id="lk_add_dest" type="text">
 | 
				
			||||||
 | 
					        <div style="color: rgb(255, 76, 76);" id="lk_add_info"></div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <button onclick="getPage('link.html')" id="lk_add_close" class="lk_add_close">Annuler</button>
 | 
				
			||||||
 | 
					    <button id="lk_add_confirm" class="lk_add_confirm">Ajouter</button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</dialog>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div id="lk_dialog">
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(typeof lkaddform == 'undefined'){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const lkcontent = document.getElementById("lkcontent")
 | 
				
			||||||
 | 
					        const lkdialogs = document.getElementById("lk_dialog")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        getLinks()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function getLinks() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var linksContent = new Array()
 | 
				
			||||||
 | 
					            var dialogContent = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fetch('/link', {
 | 
				
			||||||
 | 
					                method: 'POST',
 | 
				
			||||||
 | 
					                redirect: 'follow',
 | 
				
			||||||
 | 
					                headers: {
 | 
				
			||||||
 | 
					                    'Accept': 'application/json',
 | 
				
			||||||
 | 
					                    'Content-Type': 'application/json'
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                body: JSON.stringify({"request":"get", "value": ""})
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					            .then(response => response.json())
 | 
				
			||||||
 | 
					            .then(response => showLink(response))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            function showLink(response) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var links = response.content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for(var link of links) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    linksContent.push('<div class="row lk_line"> <p class="col-lg"><i class="fas fa-sticky-note"></i> Nom du raccourci : ' + link.name + '</p> <p class="col-lg"><i class="fa-sharp fa-solid fa-link"></i> Lien raccourci : <a href="http://localhost/link/' + link.dest + '">http://localhost/link/' + link.dest + '</a></p> <p class="col-lg"><i class="fa-solid fa-up-right-from-square"></i> Lien réel : <a href="' + link.src + '"><strong>Vers le lien</strong></a></p> <div class="col-lg "> <button id="' + link.name + '_edit_btn" class="lk_edit"><i class="fa fa-pen"></i></button> <button id="' + link.name + '_delete" class="lk_delete"><i class="fa fa-trash"></i></button> </div> </div>')
 | 
				
			||||||
 | 
					                    dialogContent.push('<dialog class="lk_adduser" id="' + link.name + '_dialog"> <h1><i class="fa fa-pen"></i> Editer un lien raccourci</h1> <p>Nom du raccourci :</p> <input class="inp" id="' + link.name + '_edit_name" type="text"> <p>Lien à raccourcir :</p> <input class="inp" id="' + link.name + '_edit_src" type="text"> <p>Nouveau lien (neutral.raphix.fr/link/<i>votrelien</i>):</p> <input class="inp" id="' + link.name + '_edit_dest" type="text"> <div style="color: rgb(255, 76, 76);" id="' + link.name + '_edit_info"></div> </div> <button onclick="getPage(\'link.html\')" id="lk_add_close" class="lk_add_close">Annuler</button> <button id="' + link.name + '_edit_confirm" class="lk_add_confirm">Editer</button> </dialog>')
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    lkcontent.innerHTML = linksContent.join("")
 | 
				
			||||||
 | 
					                    lkdialogs.innerHTML = dialogContent.join("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for(var link of links) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    makeAction(link)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					             
 | 
				
			||||||
 | 
					                if(links.length == 0) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    lkcontent.innerHTML = '<span style="margin: 2vw;color: rgb(255, 76, 76);">Aucun lien raccourci n\'a été crée.</span>' // lkcontent.innerHTML = linksContent.join("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        function makeAction(link) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const lkdelete = document.getElementById(link.name + "_delete")
 | 
				
			||||||
 | 
					            const lkedit = document.getElementById(link.name + '_edit_btn')
 | 
				
			||||||
 | 
					            const lkdialog = document.getElementById(link.name + "_dialog")
 | 
				
			||||||
 | 
					            const lkname = document.getElementById(link.name + '_edit_name')
 | 
				
			||||||
 | 
					            const lksrc = document.getElementById(link.name + "_edit_src")
 | 
				
			||||||
 | 
					            const lkdest = document.getElementById(link.name + "_edit_dest")
 | 
				
			||||||
 | 
					            const lkinfo = document.getElementById(link.name + "_edit_info")
 | 
				
			||||||
 | 
					            const lkconfirm = document.getElementById(link.name + "_edit_confirm")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            lkdelete.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                fetch('/link', {
 | 
				
			||||||
 | 
					                    method: 'POST',
 | 
				
			||||||
 | 
					                    redirect: 'follow',
 | 
				
			||||||
 | 
					                    headers: {
 | 
				
			||||||
 | 
					                        'Accept': 'application/json',
 | 
				
			||||||
 | 
					                        'Content-Type': 'application/json'
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    body: JSON.stringify({"request":"del", "value": link.name})
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                getPage("link.html")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            lkedit.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                lkname.value = link.name
 | 
				
			||||||
 | 
					                lksrc.value = link.src
 | 
				
			||||||
 | 
					                lkdest.value = link.dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                lkdialog.showModal()
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            lkconfirm.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                lkinfo.innerHTML = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(lkname.value == "" | lkdest.value == "" | lksrc.value == "") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    lkinfo.innerHTML = "Tout les champs doivent être remplis."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    if(lkdest.value.includes(" ") | lksrc.value.includes(" ")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        lkinfo.innerHTML = "Aucun espace n'est accepté dans les liens"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        const requestData = {
 | 
				
			||||||
 | 
					                        "name":lkname.value,
 | 
				
			||||||
 | 
					                        "src":lksrc.value,
 | 
				
			||||||
 | 
					                        "dest":lkdest.value,
 | 
				
			||||||
 | 
					                        "original":link.name
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        fetch('/link', {
 | 
				
			||||||
 | 
					                        method: 'POST',
 | 
				
			||||||
 | 
					                        redirect: 'follow',
 | 
				
			||||||
 | 
					                        headers: {
 | 
				
			||||||
 | 
					                            'Accept': 'application/json',
 | 
				
			||||||
 | 
					                            'Content-Type': 'application/json'
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        body: JSON.stringify({"request":"edit", "value": requestData})
 | 
				
			||||||
 | 
					                        })
 | 
				
			||||||
 | 
					                        .then(response => response.json())
 | 
				
			||||||
 | 
					                        .then(response => afteredit(response))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        function afteredit(response) {
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					                            if(response.result == "failed") {
 | 
				
			||||||
 | 
					                                content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
 | 
				
			||||||
 | 
					                                console.log("FAILED")
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                            } else if(response.result == "success") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if(response.content == "EDI") {
 | 
				
			||||||
 | 
					                                    getPage("link.html") 
 | 
				
			||||||
 | 
					                                    
 | 
				
			||||||
 | 
					                                }else if(response.content == "NAME_ALREADY_USED") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    lkinfo.innerHTML = "Le nom du raccourci est déjà utilisé"
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                                }  else if(response.content == "DEST_ALREADY_USED") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    lkinfo.innerHTML = "L'URL de raccourci est déjà utilisé"
 | 
				
			||||||
 | 
					                                } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    lkinfo.innerHTML = "ECHEC - Réessayez plus tard !"
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                                            
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					                       
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }           
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const lkaddbtn = document.getElementById("lk_add")
 | 
				
			||||||
 | 
					        const lkaddform = document.getElementById("lk_add_form")
 | 
				
			||||||
 | 
					        const lkaddname = document.getElementById("lk_add_name")
 | 
				
			||||||
 | 
					        const lkaddsrc = document.getElementById("lk_add_src")
 | 
				
			||||||
 | 
					        const lkadddest = document.getElementById("lk_add_dest")
 | 
				
			||||||
 | 
					        const lkaddconfirm = document.getElementById("lk_add_confirm")
 | 
				
			||||||
 | 
					        const lkaddinfo = document.getElementById("lk_add_info")
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        lkaddbtn.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            lkaddform.showModal()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        lkaddconfirm.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            lkaddinfo.innerHTML = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(lkaddname.value == "" | lkadddest.value == "" | lkaddsrc.value == "") {
 | 
				
			||||||
 | 
					                lkaddinfo.innerHTML = "Tout les champs doivent être remplis."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(lkadddest.value.includes(" ") | lkaddsrc.value.includes(" ")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    lkaddinfo.innerHTML = "Aucun espace n'est accepté dans les liens"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    const requestData = {
 | 
				
			||||||
 | 
					                        "name":lkaddname.value,
 | 
				
			||||||
 | 
					                        "src":lkaddsrc.value,
 | 
				
			||||||
 | 
					                        "dest":lkadddest.value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    fetch('/link', {
 | 
				
			||||||
 | 
					                    method: 'POST',
 | 
				
			||||||
 | 
					                    redirect: 'follow',
 | 
				
			||||||
 | 
					                    headers: {
 | 
				
			||||||
 | 
					                        'Accept': 'application/json',
 | 
				
			||||||
 | 
					                        'Content-Type': 'application/json'
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    body: JSON.stringify({"request":"add", "value": requestData})
 | 
				
			||||||
 | 
					                    })
 | 
				
			||||||
 | 
					                    .then(response => response.json())
 | 
				
			||||||
 | 
					                    .then(response => af(response))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    function af(response) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if(response.result == "failed") {
 | 
				
			||||||
 | 
					                            content.innerHTML = ' <h1 style="color:red;"><i style="color:yellow; font-size: 2vw;" class="fa fa-warning"></i>  Erreur de chargement des données - Erreur : ' + response.content  + '</h1>'
 | 
				
			||||||
 | 
					                            console.log("FAILED")
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                        } else if(response.result == "success") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            if(response.content == "ADDED") {
 | 
				
			||||||
 | 
					                                getPage("link.html") 
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                            } else if(response.content == "NAME_ALREADY_USED") {
 | 
				
			||||||
 | 
					                                lkaddinfo.innerHTML = "Le nom du raccourci est déjà utilisé"
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                            } else if(response.content == "DEST_ALREADY_USED") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                lkaddinfo.innerHTML = "L'URL de raccourci est déjà utilisé"
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                lkaddinfo.innerHTML = "ECHEC - Réessayez plus tard !"
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                }         
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- Style-->
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.hbox h1 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    font-size: large;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table  {
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_line {
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    padding: 0.5vw;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					    vertical-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_line a {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.hbox {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    margin: 1%;
 | 
				
			||||||
 | 
					    padding: 1%;
 | 
				
			||||||
 | 
					    background-color: rgb(80, 80, 80);
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    box-shadow: 5px 5px 5px rgba(80, 80, 80, 0.477) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    border-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    border-width: 1%;
 | 
				
			||||||
 | 
					    border-style: solid;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background-color: transparent;
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					    padding: 0.5vw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    background-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_edit {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    border-radius: 100%;
 | 
				
			||||||
 | 
					    border-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    border-width: 1%;
 | 
				
			||||||
 | 
					    border-style: solid;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background-color: transparent;
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					    width: 2.5vw;
 | 
				
			||||||
 | 
					    height: 2.5vw;
 | 
				
			||||||
 | 
					    margin-left: 0.5vw;
 | 
				
			||||||
 | 
					    margin-right: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 1vw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_edit:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    background-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_edit:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_delete {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    border-radius: 100%;
 | 
				
			||||||
 | 
					    border-color: rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    border-width: 1%;
 | 
				
			||||||
 | 
					    border-style: solid;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background-color: transparent;
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					    width: 2.5vw;
 | 
				
			||||||
 | 
					    height: 2.5vw;
 | 
				
			||||||
 | 
					    margin-left: 0.5vw;
 | 
				
			||||||
 | 
					    margin-right: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 1vw;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_delete:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    background-color: rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_delete:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_adduser {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					border-radius: 1vw;
 | 
				
			||||||
 | 
					border-color: transparent;
 | 
				
			||||||
 | 
					background-color: rgb(80, 80, 80);
 | 
				
			||||||
 | 
					color: white;
 | 
				
			||||||
 | 
					text-align: center;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add_close {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    border-color: rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    border-width: 1%;
 | 
				
			||||||
 | 
					    border-style: solid;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background-color: transparent;
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					    margin: 0.5vw;
 | 
				
			||||||
 | 
					    padding: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 1vw;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add_close:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    background-color: rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add_close:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add_confirm {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    border-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    border-width: 1%;
 | 
				
			||||||
 | 
					    border-style: solid;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    background-color: transparent;
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					    margin: 0.5vw;
 | 
				
			||||||
 | 
					    padding: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 1vw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add_confirm:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    background-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.lk_add_confirm:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inp {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    border-style: hidden;
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    padding: 0.2vw;
 | 
				
			||||||
 | 
					    padding-left: 1vw;
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					    margin-bottom: 0.5vw;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inp:hover {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    box-shadow: 2px 2px 5px rgba(255, 255, 255, 0.477) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.inp:focus {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    box-shadow: 5px 5px 5px rgba(0, 174, 255, 0.477) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -4,6 +4,7 @@ var ntr = require("../neutral-functions.js");
 | 
				
			|||||||
var fs = require("fs")
 | 
					var fs = require("fs")
 | 
				
			||||||
var path = require("path")
 | 
					var path = require("path")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* GET home page. */
 | 
					/* GET home page. */
 | 
				
			||||||
router.get('/', function(req, res, next) {
 | 
					router.get('/', function(req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,9 @@ var ntr = require("../neutral-functions.js")
 | 
				
			|||||||
/* GET home page. */
 | 
					/* GET home page. */
 | 
				
			||||||
router.get('/', function(req, res, next) {
 | 
					router.get('/', function(req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  ntr.checkUser()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var check = ntr.checkToken(req, res) 
 | 
					  var check = ntr.checkToken(req, res) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(check.name == false) {
 | 
					  if(check.name == false) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										268
									
								
								routes/link.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										268
									
								
								routes/link.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,268 @@
 | 
				
			|||||||
 | 
					var express = require('express');
 | 
				
			||||||
 | 
					const { compileString } = require('sass');
 | 
				
			||||||
 | 
					var router = express.Router();
 | 
				
			||||||
 | 
					var fs = require("fs")
 | 
				
			||||||
 | 
					var ntr = require("../neutral-functions.js")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* GET home page. */
 | 
				
			||||||
 | 
					router.get('/', function(req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var check = ntr.checkToken(req, res) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(check.name == false) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    res.redirect(302, "/login")
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    res.render('index', { title: ntr.getFullName(check.name), username: ntr.getFullName(check.name), accountpic: '<img width="200" class="w-25 sidebar-image noside" src="images/userspics/' + check.name + '.png">' });
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					router.post("/", function (req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var check = ntr.checkToken(req, res) 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					     if(check.name == false) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        res.send({"result":"failed", "content":"ERROR_TOKEN_NOT_VALID"})
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(check.permLevel >= 3) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(req.body.request == "add") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const linkn = req.body.value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(linkn.src.includes(" ") | linkn.dest.includes(" ")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    res.send({"result":"failed", "content":"CONTAINS_SPACES"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else if(Object.keys(linkData).includes(linkn.name)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    res.send({"result":"success", "content":"NAME_ALREADY_USED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else if(checkDest(linkn.dest) == true) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    res.send({"result":"success", "content":"DEST_ALREADY_USED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    linkData[linkn.name] = {
 | 
				
			||||||
 | 
					                        "src": linkn.src.toLowerCase(),
 | 
				
			||||||
 | 
					                        "dest": linkn.dest.toLowerCase()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    fs.writeFileSync(__dirname.replace("routes",'links.json'), JSON.stringify(linkData, null, 2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    loadLinksSaved()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    res.send({"result":"success", "content":"ADDED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else if(req.body.request == "del") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                Reflect.deleteProperty(linkData,req.body.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                fs.writeFileSync(__dirname.replace("routes",'links.json'), JSON.stringify(linkData, null, 2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                loadLinksSaved()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else if(req.body.request == "get") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const links = Object.keys(linkData)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var allLink = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for(var link of links) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    allLink.push({"name": link, "src":linkData[link].src, "dest":linkData[link].dest})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                res.send({"result":"success", "content":allLink})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else if(req.body.request == "edit") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const linkn = req.body.value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(linkn.src.includes(" ") | linkn.dest.includes(" ")) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    res.send({"result":"failed", "content":"CONTAINS_SPACES"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }  else if(checkName(linkn.name, linkData) == true) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    res.send({"result":"success", "content":"NAME_ALREADY_USED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }else if(checkDest(linkn.dest, linkn.original) == true) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    res.send({"result":"success", "content":"DEST_ALREADY_USED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Reflect.deleteProperty(linkData, req.body.value.original)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    linkData[linkn.name] = {
 | 
				
			||||||
 | 
					                        "src": linkn.src.toLowerCase(),
 | 
				
			||||||
 | 
					                        "dest": linkn.dest.toLowerCase()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    fs.writeFileSync(__dirname.replace("routes",'links.json'), JSON.stringify(linkData, null, 2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    loadLinksSaved()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    res.send({"result":"success", "content":"EDI"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            res.send({"result":"failed", "content":"ERROR_USER_PERMISSION_TOO_LOW"})
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					loadLinksSaved()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function loadLinksSaved() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					    const links = Object.keys(linkData)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    for(var link of links) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const dest = linkData[link].dest
 | 
				
			||||||
 | 
					        const src = linkData[link].src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        router.get('/' + dest, function (req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            res.redirect(302, src)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function checkDest(src, name) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(name == null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					        const links = Object.keys(linkData)
 | 
				
			||||||
 | 
					        const destNotAvb = new Array()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        for(var link of links) {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            destNotAvb.push(linkData[link].dest)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        if(destNotAvb.includes(src)) {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const linkData = JSON.parse(fs.readFileSync(__dirname.replace("routes",'links.json')))
 | 
				
			||||||
 | 
					        const links = Object.keys(linkData)
 | 
				
			||||||
 | 
					        const destNotAvb = new Array()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        for(var link of links) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(link != name) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                destNotAvb.push(linkData[link].dest)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        if(destNotAvb.includes(src)) {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function checkName(name, linkData) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const names = Object.keys(linkData)
 | 
				
			||||||
 | 
					    const namewithout = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for(var namei of names) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(namei != name) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            namewithout.push(linkData[namei].name)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if(namewithout.includes(name)) {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = router;
 | 
				
			||||||
@@ -10,6 +10,7 @@ var ntr = require("../neutral-functions.js")
 | 
				
			|||||||
router.get('/', function(req, res, next) {
 | 
					router.get('/', function(req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  ntr.checkUser()
 | 
				
			||||||
  var check = ntr.checkToken(req, res) 
 | 
					  var check = ntr.checkToken(req, res) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if(check.name != false) {
 | 
					  if(check.name != false) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								users/0cee5da6-6812-49d8-97f5-2df5c1d78191.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "username": "raphix",
 | 
				
			||||||
 | 
					  "password": "U2FsdGVkX19eUkHlyqAgwuLYtNjlqzUmVAD7tBEBtaY=",
 | 
				
			||||||
 | 
					  "uuid": "0cee5da6-6812-49d8-97f5-2df5c1d78191",
 | 
				
			||||||
 | 
					  "fullname": "Raphael PICOT",
 | 
				
			||||||
 | 
					  "permissionLevel": 4,
 | 
				
			||||||
 | 
					  "token": {
 | 
				
			||||||
 | 
					    "tokenID": "1c80ca40-60e9-4e48-b986-753678de41ca",
 | 
				
			||||||
 | 
					    "livableToken": true,
 | 
				
			||||||
 | 
					    "createdAt": 1677159656255
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "lastconnexion": 1677159976281
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,13 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "username": "raphix",
 | 
					 | 
				
			||||||
  "password": "U2FsdGVkX1+y5WFBRAA0GITGyxl0AOq2lygx7XDu6BU=",
 | 
					 | 
				
			||||||
  "uuid": "9ace80e0-1ee3-4eed-924f-8a55fc55822b",
 | 
					 | 
				
			||||||
  "permissionLevel": 4,
 | 
					 | 
				
			||||||
  "fullname": "Raphael PICOT",
 | 
					 | 
				
			||||||
  "token": {
 | 
					 | 
				
			||||||
    "tokenID": "43b6f1bf-29be-4801-83f2-b1e85dcb3981",
 | 
					 | 
				
			||||||
    "livableToken": true,
 | 
					 | 
				
			||||||
    "createdAt": 1677070566103
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "lastconnexion": 1677070621299
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,9 +0,0 @@
 | 
				
			|||||||
{
 | 
					 | 
				
			||||||
  "username": "root",
 | 
					 | 
				
			||||||
  "password": "U2FsdGVkX18KoGGTPqZw/E9PiLQaUuEZxyHdbdAErO0=",
 | 
					 | 
				
			||||||
  "uuid": "aca3c9aa-5b42-477f-b179-f33211a425d3",
 | 
					 | 
				
			||||||
  "fullname": "Administrateur",
 | 
					 | 
				
			||||||
  "permissionLevel": 3,
 | 
					 | 
				
			||||||
  "token": {},
 | 
					 | 
				
			||||||
  "lastconnexion": 0
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										13
									
								
								users/c8f353a4-d0df-4c10-bccc-d4f47daf0f51.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								users/c8f353a4-d0df-4c10-bccc-d4f47daf0f51.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "username": "root",
 | 
				
			||||||
 | 
					  "password": "U2FsdGVkX1/ICaOrZjiK+VFckzaSu/AcyQrpIPg2KuY=",
 | 
				
			||||||
 | 
					  "uuid": "c8f353a4-d0df-4c10-bccc-d4f47daf0f51",
 | 
				
			||||||
 | 
					  "fullname": "Administrateur",
 | 
				
			||||||
 | 
					  "permissionLevel": 4,
 | 
				
			||||||
 | 
					  "token": {
 | 
				
			||||||
 | 
					    "tokenID": "00e7bb54-cd31-4c60-92a5-5c45164ea6ed",
 | 
				
			||||||
 | 
					    "livableToken": false,
 | 
				
			||||||
 | 
					    "createdAt": 1677159640804
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "lastconnexion": 1677159652801
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -32,6 +32,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            color: white;
 | 
					            color: white;
 | 
				
			||||||
            background-color: red;
 | 
					            background-color: red;
 | 
				
			||||||
 | 
					            cursor: pointer;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    </style>
 | 
					    </style>
 | 
				
			||||||
  </head>
 | 
					  </head>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user