DEV_5.0 #12
							
								
								
									
										3
									
								
								app.js
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								app.js
									
									
									
									
									
								
							@@ -19,7 +19,7 @@ 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');
 | 
					var linkRouter = require('./routes/link');
 | 
				
			||||||
 | 
					var fileRouter = require("./routes/filemanager")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var app = express();
 | 
					var app = express();
 | 
				
			||||||
@@ -46,6 +46,7 @@ app.use('/set', setRouter)
 | 
				
			|||||||
app.use('/upload', uploadRouter)
 | 
					app.use('/upload', uploadRouter)
 | 
				
			||||||
app.use('/usermanager', userManagerRouter)
 | 
					app.use('/usermanager', userManagerRouter)
 | 
				
			||||||
app.use('/link', linkRouter)
 | 
					app.use('/link', linkRouter)
 | 
				
			||||||
 | 
					app.use("/filemanager", fileRouter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// catch 404 and forward to error handler
 | 
					// catch 404 and forward to error handler
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,10 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "Git GeekSchool": {
 | 
					 | 
				
			||||||
    "src": "https://git.geekschool.fr",
 | 
					 | 
				
			||||||
    "dest": "gitschool"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "Gmail": {
 | 
					  "Gmail": {
 | 
				
			||||||
    "src": "https://mail.google.com/mail/",
 | 
					    "src": "https://mail.google.com/mail/",
 | 
				
			||||||
    "dest": "gmail"
 | 
					    "dest": "gmail"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "Git GeekSchool": {
 | 
				
			||||||
 | 
					    "src": "https://git.geekschool.fr",
 | 
				
			||||||
 | 
					    "dest": "gitschool"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "neutral",
 | 
					  "name": "neutral",
 | 
				
			||||||
  "version": "DEV_2.0",
 | 
					  "version": "DEV_3.0",
 | 
				
			||||||
  "lockfileVersion": 2,
 | 
					  "lockfileVersion": 2,
 | 
				
			||||||
  "requires": true,
 | 
					  "requires": true,
 | 
				
			||||||
  "packages": {
 | 
					  "packages": {
 | 
				
			||||||
    "": {
 | 
					    "": {
 | 
				
			||||||
      "name": "neutral",
 | 
					      "name": "neutral",
 | 
				
			||||||
      "version": "DEV_2.0",
 | 
					      "version": "DEV_3.0",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@popperjs/core": "^2.11.6",
 | 
					        "@popperjs/core": "^2.11.6",
 | 
				
			||||||
        "bootstrap": "^5.2.2",
 | 
					        "bootstrap": "^5.2.2",
 | 
				
			||||||
@@ -21,6 +21,7 @@
 | 
				
			|||||||
        "http-errors": "~1.6.3",
 | 
					        "http-errors": "~1.6.3",
 | 
				
			||||||
        "jimp": "^0.22.4",
 | 
					        "jimp": "^0.22.4",
 | 
				
			||||||
        "jquery": "^3.6.3",
 | 
					        "jquery": "^3.6.3",
 | 
				
			||||||
 | 
					        "mime-types": "^2.1.35",
 | 
				
			||||||
        "morgan": "~1.9.1",
 | 
					        "morgan": "~1.9.1",
 | 
				
			||||||
        "nodemon": "^2.0.20",
 | 
					        "nodemon": "^2.0.20",
 | 
				
			||||||
        "serve-favicon": "^2.5.0",
 | 
					        "serve-favicon": "^2.5.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "neutral",
 | 
					  "name": "neutral",
 | 
				
			||||||
  "version": "DEV_3.0",
 | 
					  "version": "DEV_5.0",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "nodemonConfig": {
 | 
					  "nodemonConfig": {
 | 
				
			||||||
    "ext": "js",
 | 
					    "ext": "js",
 | 
				
			||||||
@@ -26,6 +26,7 @@
 | 
				
			|||||||
    "http-errors": "~1.6.3",
 | 
					    "http-errors": "~1.6.3",
 | 
				
			||||||
    "jimp": "^0.22.4",
 | 
					    "jimp": "^0.22.4",
 | 
				
			||||||
    "jquery": "^3.6.3",
 | 
					    "jquery": "^3.6.3",
 | 
				
			||||||
 | 
					    "mime-types": "^2.1.35",
 | 
				
			||||||
    "morgan": "~1.9.1",
 | 
					    "morgan": "~1.9.1",
 | 
				
			||||||
    "nodemon": "^2.0.20",
 | 
					    "nodemon": "^2.0.20",
 | 
				
			||||||
    "serve-favicon": "^2.5.0",
 | 
					    "serve-favicon": "^2.5.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -156,28 +156,6 @@ body {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.edropdown {
 | 
					 | 
				
			||||||
  display: inline-block;
 | 
					 | 
				
			||||||
  position: relative;
 | 
					 | 
				
			||||||
  --bs-gutter-x: 0rem;
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
.edropdown-content {
 | 
					 | 
				
			||||||
  text-align: center;
 | 
					 | 
				
			||||||
  display: none;
 | 
					 | 
				
			||||||
  background-color: rgb(80, 80, 80);
 | 
					 | 
				
			||||||
  position: absolute;
 | 
					 | 
				
			||||||
  width: 90%;
 | 
					 | 
				
			||||||
  right: 5%;
 | 
					 | 
				
			||||||
  padding: 0%;
 | 
					 | 
				
			||||||
  bottom: 15%;
 | 
					 | 
				
			||||||
  overflow: auto;
 | 
					 | 
				
			||||||
  border-radius: 1vw;
 | 
					 | 
				
			||||||
  box-shadow: 5px 5px 5px rgba(0,0,0,0.4);
 | 
					 | 
				
			||||||
  transition: all 0.1s ease 0s;
 | 
					 | 
				
			||||||
  margin-left: 1%;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
.viewbar {
 | 
					.viewbar {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -229,6 +207,30 @@ body {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media (min-width: 992px) { 
 | 
					@media (min-width: 992px) { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					  .edropdown {
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    --bs-gutter-x: 0rem;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .edropdown-content {
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					    background-color: rgb(80, 80, 80);
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    width: 90%;
 | 
				
			||||||
 | 
					    right: 5%;
 | 
				
			||||||
 | 
					    padding: 0%;
 | 
				
			||||||
 | 
					    bottom: 15%;
 | 
				
			||||||
 | 
					    overflow: auto;
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    box-shadow: 5px 5px 5px rgba(0,0,0,0.4);
 | 
				
			||||||
 | 
					    transition: all 0.1s ease 0s;
 | 
				
			||||||
 | 
					    margin-left: 1%;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  .logo {
 | 
					  .logo {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -408,6 +410,29 @@ body {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@media (max-width: 992px) { 
 | 
					@media (max-width: 992px) { 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  .edropdown {
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    --bs-gutter-x: 0rem;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  .edropdown-content {
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					    background-color: rgb(80, 80, 80);
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    width: 90%;
 | 
				
			||||||
 | 
					    right: 5%;
 | 
				
			||||||
 | 
					    padding: 0%;
 | 
				
			||||||
 | 
					    overflow: auto;
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    box-shadow: 5px 5px 5px rgba(0,0,0,0.4);
 | 
				
			||||||
 | 
					    transition: all 0.1s ease 0s;
 | 
				
			||||||
 | 
					    margin-left: 1%;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .sidebar {
 | 
					  .sidebar {
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
    font-size: 7vw;
 | 
					    font-size: 7vw;
 | 
				
			||||||
@@ -450,17 +475,11 @@ body {
 | 
				
			|||||||
   
 | 
					   
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .sidebar:hover .sidebar-image {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    display: unset;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .sidebar-text {
 | 
					  .sidebar-text {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    display: none;
 | 
					 | 
				
			||||||
    -moz-user-select: none; /* Firefox */
 | 
					    -moz-user-select: none; /* Firefox */
 | 
				
			||||||
    -webkit-user-select: none; /* Chrome, Safari, Opéra depuis la version 15 */
 | 
					    -webkit-user-select: none; /* Chrome, Safari, Opéra depuis la version 15 */
 | 
				
			||||||
    -ms-user-select: none; /* Internet explorer depuis la version 10 et Edge */
 | 
					    -ms-user-select: none; /* Internet explorer depuis la version 10 et Edge */
 | 
				
			||||||
@@ -468,11 +487,6 @@ body {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .sidebar:hover .sidebar-text {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    display: unset;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .sidebar-item {
 | 
					  .sidebar-item {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										554
									
								
								public/templates/files.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										554
									
								
								public/templates/files.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,554 @@
 | 
				
			|||||||
 | 
					<div class="files">
 | 
				
			||||||
 | 
					    <h1>Gestionnnaire de fichiers</h1>
 | 
				
			||||||
 | 
					    </br>
 | 
				
			||||||
 | 
					    <div class="homepanel">
 | 
				
			||||||
 | 
					        <div class="row w-100">
 | 
				
			||||||
 | 
					            <div class="hbox col-lg">
 | 
				
			||||||
 | 
					                <div class="fi_act">
 | 
				
			||||||
 | 
					                    <h1><i class="fa fa-folder"></i> Fichiers</h1>
 | 
				
			||||||
 | 
					                    <div>
 | 
				
			||||||
 | 
					                        <button class="fi_act_btn"><i class="fa fa-folder"></i> Nouveau dossier</button>
 | 
				
			||||||
 | 
					                        <button class="fi_act_btn"><i class="fa fa-upload"></i> Upload</button>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div class="fi_current_directory">
 | 
				
			||||||
 | 
					                    <input id="fi_current_directory" class="fi_current_p" value="C:\Users\picot\OneDrive\Bureau\Developement\Neutral\neutral" type="text">
 | 
				
			||||||
 | 
					                </div>  
 | 
				
			||||||
 | 
					                <div id="fileExplorer" class="fi_container">
 | 
				
			||||||
 | 
					                    <p style="text-align: start; color: rgb(255, 48, 48);">Le répertoire n'existe pas ou est vide.</p>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if(typeof currentDir == "undefined") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const currentDir = document.getElementById("fi_current_directory")
 | 
				
			||||||
 | 
					        const fileExplorer = document.getElementById("fileExplorer")
 | 
				
			||||||
 | 
					        const fileExplorerError = fileExplorer.outerHTML
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        getDirectory(currentDir.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        currentDir.addEventListener("change", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            getDirectory(currentDir.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function getDirectory(directory) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var fileExplorerList = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fetch('/filemanager', {
 | 
				
			||||||
 | 
					                method: 'POST',
 | 
				
			||||||
 | 
					                redirect: 'follow',
 | 
				
			||||||
 | 
					                headers: {
 | 
				
			||||||
 | 
					                    'Accept': 'application/json',
 | 
				
			||||||
 | 
					                    'Content-Type': 'application/json'
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                body: JSON.stringify({"request":"get", "value": directory})
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					            .then(response => response.json())
 | 
				
			||||||
 | 
					            .then(response => showLink(response))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            function showLink(response) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					                const files = response.content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                console.log(files)
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                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 == "ERROR_NOT_EXIST") {
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                            fileExplorer.innerHTML = fileExplorerError
 | 
				
			||||||
 | 
					                            console.log("DENY")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        } else if(response.content == "ERROR_NOT_PERMITTED") {
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                            fileExplorer.innerHTML = '<p style="text-align: start; padding: 1vw; color: rgb(255, 48, 48);">Vous n\'avez pas la permission de regarder ce dossier.</p>'
 | 
				
			||||||
 | 
					                            console.log("DENY")
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            fileExplorerList.push('<div id="last_directory" class="fi_file"><p style="margin-left: 1vw;text-align:start;margin-bottom: 1vw !important;"><i class="fa fa-arrow-left"></i> Revenir au dossier parent</p></div>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            for(var file of files) {
 | 
				
			||||||
 | 
					                                const date = new Date(file.lastedition)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    var gmonth = date.getMonth()
 | 
				
			||||||
 | 
					                                    var gday = date.getDate()
 | 
				
			||||||
 | 
					                                    var gHour = date.getHours()
 | 
				
			||||||
 | 
					                                    var gMinute = date.getMinutes()
 | 
				
			||||||
 | 
					                                    var gSecondes = date.getSeconds()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getMonth() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gmonth = "0" + (date.getMonth() + 1)
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getDate() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gday = "0" + date.getDate()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getHours() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gHour = "0" + date.getHours()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getMinutes() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gMinute = "0" + date.getMinutes()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getSeconds() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gSecondes = "0" + date.getSeconds()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    var lastedition = gday + "-" + gmonth + "-" + date.getFullYear()  + " - " + gHour + ":" + gMinute
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                                if(file.directory == true) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    fileExplorerList.push('<div id="' + file.name + '_directory" class="fi_file row"> <p class="col-lg"><i style="color:yellow;" class="fa fa-folder"></i> ' + file.name + '</p> <p class="col-lg"><i class="fa fa-calendar"></i> Dernière édition : ' + lastedition + '</p> <p class="col-lg"><i class="fas fa-weight-hanging"></i> Taille : ' + file.size + ' octet(s)</p> <div class="col-lg fi_file_btn"> <button id="' + file.name + '_rename" class="fi_rename"><i class="fas fa-terminal"></i></button> <button id="' + file.name + '_delete" class="fi_delete"><i class="fa fa-trash"></i></button> </div> </div>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            for(var file of files) {
 | 
				
			||||||
 | 
					                                const date = new Date(file.lastedition)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    var gmonth = date.getMonth()
 | 
				
			||||||
 | 
					                                    var gday = date.getDate()
 | 
				
			||||||
 | 
					                                    var gHour = date.getHours()
 | 
				
			||||||
 | 
					                                    var gMinute = date.getMinutes()
 | 
				
			||||||
 | 
					                                    var gSecondes = date.getSeconds()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getMonth() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gmonth = "0" + (date.getMonth() + 1)
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getDate() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gday = "0" + date.getDate()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getHours() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gHour = "0" + date.getHours()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getMinutes() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gMinute = "0" + date.getMinutes()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(date.getSeconds() + 1 <= 9) {
 | 
				
			||||||
 | 
					                                        gSecondes = "0" + date.getSeconds()
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    var lastedition = gday + "-" + gmonth + "-" + date.getFullYear()  + " - " + gHour + ":" + gMinute
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                                if(file.directory == false) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    var icon = '<i class="fa fa-file">'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(file.type == "application/json") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(179, 141, 4);" class="fa-sharp fa-solid fa-code">'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "application/msword" | file.type == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(47, 94, 247);" class="fa-solid fa-file-word"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "application/vnd.ms-powerpoint") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(255, 112, 51);" class="fa-solid fa-file-powerpoint"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | file.type == "application/vnd.ms-excel") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(51, 255, 61);" class="fa-solid fa-file-excel"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(file.type == "application/java-archive") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(255, 202, 150);" class="fa-brands fa-java"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(file.type == "application/x-sh") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(171, 226, 255);" class="fa-solid fa-file-code"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    if(file.type == "application/x-msdos-program" | file.type == "application/x-msdownload") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(53, 191, 255);" class="fa-brands fa-windows"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "application/javascript") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(179, 141, 4);" class="fa-brands fa-js">'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "image/png" | file.type == "image/jpeg") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                       icon = '<i style="color:rgb(189, 104, 189);" class="fa-solid fa-file-image"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "text/html") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:tomato;" class="fa-brands fa-html5"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "text/css") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(66, 135, 245);" class="fa-brands fa-css3-alt"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "application/zip") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                         icon = '<i style="color:rgb(255, 139, 38);" class="fa-solid fa-file-zipper"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "audio/mpeg") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(38, 222, 255);" class="fa-solid fa-file-audio"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    if(file.type == "application/pdf") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        icon = '<i style="color:rgb(255, 71, 51);" class="fa-solid fa-file-pdf"></i>'
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                   
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                                        
 | 
				
			||||||
 | 
					                                    fileExplorerList.push('<div id="' + file.name + '_directory" class="fi_file row"> <p class="col-lg">' + icon+ '</i> ' + file.name + '</p> <p class="col-lg"><i class="fa fa-calendar"></i> Dernière édition : ' + lastedition + '</p> <p class="col-lg"><i class="fas fa-weight-hanging"></i> Taille : ' + file.size + ' octet(s)</p> <div class="col-lg fi_file_btn"> <button id="' + file.name + '_rename" class="fi_rename"><i class="fas fa-terminal"></i></button>  <button id="' + file + '_download" class="fi_rename"><i class="fas fa-download"></i></button><button id="' + file.name + '_delete" class="fi_delete"><i class="fa fa-trash"></i></button> </div> </div>')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            fileExplorer.innerHTML = fileExplorerList.join('')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            const last_dir = document.getElementById("last_directory")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            last_dir.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                var cdSplit = currentDir.value.split("\\")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if(cdSplit.slice(-1) == "") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    cdSplit.pop()
 | 
				
			||||||
 | 
					                                    cdSplit.pop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                } else {
 | 
				
			||||||
 | 
					                                    cdSplit.pop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                               
 | 
				
			||||||
 | 
					                                currentDir.value = cdSplit.join("\\")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                getDirectory(currentDir.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                              
 | 
				
			||||||
 | 
					                            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            for(var file of files ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                applyFile(file)                 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            function applyFile(file) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                const deleteBtn = document.getElementById(file.name + "_delete")
 | 
				
			||||||
 | 
					                                const renameBtn = document.getElementById(file.name + "_rename")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                deleteBtn.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    console.log(file.name)
 | 
				
			||||||
 | 
					                                })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                renameBtn.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    console.log(file.name)
 | 
				
			||||||
 | 
					                                })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                if(file.directory == true) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    const dir = document.getElementById(file.name + '_directory')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    dir.addEventListener("click", (event) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        console.log(event.target.id != file.name + "_delete" && event.target.id != file.name + "_rename")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        if((event.target.id != file.name + "_delete" & event.target.id != file.name + "_rename") == true) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            if(currentDir.value.slice(-1) != "\\" && currentDir.value.slice(-1) != "/") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                currentDir.value = currentDir.value + "\\" + file.name 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            } else if(currentDir.value.slice(-1) == "/") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                currentDir.value = currentDir.value + file.name 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                                currentDir.value = currentDir.value + file.name 
 | 
				
			||||||
 | 
					                                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                            getDirectory(currentDir.value)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*<div id="' + file + '_directory" class="fi_file row">  
 | 
				
			||||||
 | 
					        <p class="col-lg"><i class="fa fa-folder"></i> <span id="' + file + '_name"></span></p>
 | 
				
			||||||
 | 
					        <p class="col-lg"><i class="fa fa-calendar"></i> Dernière édition : <span id="' + file + '_dateofcreate"></span></p>
 | 
				
			||||||
 | 
					        <p class="col-lg"><i class="fas fa-weight-hanging"></i> Taille : <span id="' + file + '_dateofcreate"></span></p>
 | 
				
			||||||
 | 
					        <div class="col-lg fi_file_btn">
 | 
				
			||||||
 | 
					            <button id="' + file + '_rename" class="fi_rename"><i class="fas fa-terminal"></i></button>
 | 
				
			||||||
 | 
					            <button id="' + file + '_delete" class="fi_delete"><i class="fa fa-trash"></i></button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>  
 | 
				
			||||||
 | 
					    <div class="fi_file row ">  
 | 
				
			||||||
 | 
					        <p class="col-lg"><i class="fa fa-file"></i> <span id="' + file + '_name"></span</p>
 | 
				
			||||||
 | 
					        <p class="col-lg"><i class="fa fa-calendar"></i> Dernière édition : <span id="' + file + '_dateofcreate"></span></p>
 | 
				
			||||||
 | 
					        <p class="col-lg"><i class="fas fa-weight-hanging"></i> Taille : <span id="' + file + '_dateofcreate"></span></p>
 | 
				
			||||||
 | 
					        <div class="col-lg fi_file_btn">
 | 
				
			||||||
 | 
					            <button id="' + file + '_rename" class="fi_rename"><i class="fas fa-terminal"></i></button>
 | 
				
			||||||
 | 
					            <button id="' + file + '_download" class="fi_rename"><i class="fas fa-download"></i></button>
 | 
				
			||||||
 | 
					            <button id="' + file + '_delete" class="fi_delete"><i class="fa fa-trash"></i></button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- Style-->
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_file {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    padding-top: 1vw;
 | 
				
			||||||
 | 
					    border-bottom: 0.2vw solid rgb(80, 80, 80);
 | 
				
			||||||
 | 
					    transition: all 0.2s ease 0s;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_file:hover {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    background-color: rgb(80, 80, 80);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_current_directory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    margin-top: 1vw;
 | 
				
			||||||
 | 
					    margin-bottom: 1vw;
 | 
				
			||||||
 | 
					    padding: 0.7vw;
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    background-color: rgb(32, 32, 32);
 | 
				
			||||||
 | 
					    transition: all 0.15s ease 0s;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: space-between;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_current_directory:focus-within{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(0, 174, 255);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_current_p {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    margin-bottom: 0% !important;
 | 
				
			||||||
 | 
					    background: none;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_current_p:focus {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    outline: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_file * {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    margin-bottom: 0% !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_container {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    margin-top: 1vw ;
 | 
				
			||||||
 | 
					    background-color: rgb(32, 32, 32) ;
 | 
				
			||||||
 | 
					    border-radius: 1vw;
 | 
				
			||||||
 | 
					    padding: 1vw;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    overflow-x: hidden;
 | 
				
			||||||
 | 
					    overflow-y: auto;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_act {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: space-between;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.hbox h1 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    font-size: large;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table  {
 | 
				
			||||||
 | 
					    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) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_act_btn {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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-left: 0.5vw;
 | 
				
			||||||
 | 
					    margin-right: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 0.7vw;
 | 
				
			||||||
 | 
					    padding: 0.5vw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_act_btn:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    background-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_act_btn:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_rename {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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: 2vw;
 | 
				
			||||||
 | 
					    height: 2vw;
 | 
				
			||||||
 | 
					    margin-left: 0.5vw;
 | 
				
			||||||
 | 
					    margin-right: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 0.7vw;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_rename:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    background-color: rgb(0, 174, 255);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_rename:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_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: 2vw;
 | 
				
			||||||
 | 
					    height: 2vw;
 | 
				
			||||||
 | 
					    margin-left: 0.5vw;
 | 
				
			||||||
 | 
					    margin-right: 0.5vw;
 | 
				
			||||||
 | 
					    font-size: 0.7vw;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_delete:hover {
 | 
				
			||||||
 | 
					    box-shadow: 1px 1px 10px rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    background-color: rgb(255, 48, 48);
 | 
				
			||||||
 | 
					    color: black;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_delete:active {
 | 
				
			||||||
 | 
					    box-shadow: none;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.fi_file_btn {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    margin-bottom: 0.5vw !important;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@@ -70,29 +70,35 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                var links = response.content
 | 
					                var links = response.content
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for(var link of links) {
 | 
					                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>'
 | 
				
			||||||
                    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>')
 | 
					                    console.log("FAILED")
 | 
				
			||||||
                    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("")
 | 
					                } else if(response.result == "success") {
 | 
				
			||||||
                    lkdialogs.innerHTML = dialogContent.join("")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    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("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    } 
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                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("")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                } 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -187,7 +187,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                            fullname.innerHTML = response.content.fullname
 | 
					                            fullname.innerHTML = response.content.fullname
 | 
				
			||||||
                            permLevel.innerHTML = response.content.permLevel
 | 
					                            permLevel.innerHTML = response.content.permLevel
 | 
				
			||||||
                            lastco.innerHTML = currentDate
 | 
					                            lastco.innerHTML = currentDate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            const editBtn = document.getElementById(response.content.username + "_edit")
 | 
					                            const editBtn = document.getElementById(response.content.username + "_edit")
 | 
				
			||||||
                            const decoBtn = document.getElementById(response.content.username +"_deco")
 | 
					                            const decoBtn = document.getElementById(response.content.username +"_deco")
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										105
									
								
								routes/filemanager.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								routes/filemanager.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					var express = require('express');
 | 
				
			||||||
 | 
					var router = express.Router();
 | 
				
			||||||
 | 
					var ntr = require("../neutral-functions.js")
 | 
				
			||||||
 | 
					var fs = require("fs")
 | 
				
			||||||
 | 
					var path = require("path")
 | 
				
			||||||
 | 
					var mime = require('mime-types')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* GET home page. */
 | 
				
			||||||
 | 
					router.get('/', function(req, res, next) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    var check = ntr.checkToken(req, res) 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    if(check.name != false) {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					      res.redirect(302, "/")
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					      res.render('login', {error: ""});
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const bod = req.body
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(bod.request == "add") {
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					                res.send({"result":"failed", "content":"ERROR_NOT_MAKE"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else if(bod.request == "get") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var files = new Array()
 | 
				
			||||||
 | 
					                const directory = req.body.value
 | 
				
			||||||
 | 
					                fs.readdir(directory.replace("/", path.sep.replace("\\", path.sep)), (err, data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    if(err) {
 | 
				
			||||||
 | 
					                        res.send({"result":"success", "content": "ERROR_NOT_EXIST"})
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					                    } else {    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        try {
 | 
				
			||||||
 | 
					                       
 | 
				
			||||||
 | 
					                            for(var file of data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                           
 | 
				
			||||||
 | 
					                                const stat = fs.statSync(directory.replace("/", path.sep.replace("\\", path.sep)) + path.sep + file)
 | 
				
			||||||
 | 
					                              
 | 
				
			||||||
 | 
					                                files.push({"name":file, "type":mime.lookup(file), "size":stat.size, "lastedition":stat.mtimeMs, "directory":stat.isDirectory()})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            res.send({"result":"success", "content": files})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        } catch(err) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                res.send({"result":"success", "content": "ERROR_NOT_PERMITTED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            } else if(bod.request == "del") {
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                res.send({"result":"failed", "content":"ERROR_NOT_MAKE"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else if(bod.request == "rename") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                res.send({"result":"failed", "content":"ERROR_NOT_MAKE"})
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                res.send({"result":"failed", "content":"ERROR_REQUEST_MISSING_FIELDS", "additional": "REQUEST_MISSING"})
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            res.send({"result":"failed", "content":"ERROR_USER_PERMISSION_TOO_LOW"})
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports = router;
 | 
				
			||||||
@@ -33,7 +33,7 @@ router.post("/", function (req, res, next) {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(check.permLevel >= 3) {
 | 
					        if(check.permLevel >= 1) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if(req.body.request == "add") {
 | 
					            if(req.body.request == "add") {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,9 @@
 | 
				
			|||||||
  "fullname": "Raphael PICOT",
 | 
					  "fullname": "Raphael PICOT",
 | 
				
			||||||
  "permissionLevel": 4,
 | 
					  "permissionLevel": 4,
 | 
				
			||||||
  "token": {
 | 
					  "token": {
 | 
				
			||||||
    "tokenID": "1c80ca40-60e9-4e48-b986-753678de41ca",
 | 
					    "tokenID": "0c2ac628-848e-42dd-9def-aaccac08b058",
 | 
				
			||||||
    "livableToken": true,
 | 
					    "livableToken": true,
 | 
				
			||||||
    "createdAt": 1677159656255
 | 
					    "createdAt": 1677339339934
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "lastconnexion": 1677159976281
 | 
					  "lastconnexion": 1677421147948
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,13 +1,13 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "username": "root",
 | 
					  "username": "root",
 | 
				
			||||||
  "password": "U2FsdGVkX1/ICaOrZjiK+VFckzaSu/AcyQrpIPg2KuY=",
 | 
					  "password": "U2FsdGVkX19uiFCajX45dwmAqo3GpmAQho5U9g5RSww=",
 | 
				
			||||||
  "uuid": "c8f353a4-d0df-4c10-bccc-d4f47daf0f51",
 | 
					  "uuid": "c8f353a4-d0df-4c10-bccc-d4f47daf0f51",
 | 
				
			||||||
  "fullname": "Administrateur",
 | 
					  "fullname": "Administrateur",
 | 
				
			||||||
  "permissionLevel": 4,
 | 
					  "permissionLevel": 4,
 | 
				
			||||||
  "token": {
 | 
					  "token": {
 | 
				
			||||||
    "tokenID": "00e7bb54-cd31-4c60-92a5-5c45164ea6ed",
 | 
					    "tokenID": "c750c10a-f69d-4dd2-8a35-65d8a74897bb",
 | 
				
			||||||
    "livableToken": false,
 | 
					    "livableToken": false,
 | 
				
			||||||
    "createdAt": 1677159640804
 | 
					    "createdAt": 1677339320398
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "lastconnexion": 1677159652801
 | 
					  "lastconnexion": 1677339336836
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user