Version 0.1.0 - Ajout du serveur Express
This commit is contained in:
		
							
								
								
									
										11
									
								
								bin/global-variables.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								bin/global-variables.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | const path = require("path"); | ||||||
|  | const root = path.resolve(__dirname, '../') | ||||||
|  |  | ||||||
|  | const __glob = { | ||||||
|  |     ROUTES: root + path.sep + "routes" + path.sep | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | module.exports = { __glob }; | ||||||
|  |  | ||||||
							
								
								
									
										90
									
								
								bin/www
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								bin/www
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | |||||||
|  | #!/usr/bin/env node | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Module dependencies. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | var app = require('../main'); | ||||||
|  | var debug = require('debug')('neutral:server'); | ||||||
|  | var http = require('http'); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Get port from environment and store in Express. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | var port = normalizePort(process.env.PORT || '3001'); | ||||||
|  | app.set('port', port); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Create HTTP server. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | var server = http.createServer(app); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Listen on provided port, on all network interfaces. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | server.listen(port); | ||||||
|  | server.on('error', onError); | ||||||
|  | server.on('listening', onListening); | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Normalize a port into a number, string, or false. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | function normalizePort(val) { | ||||||
|  |   var port = parseInt(val, 10); | ||||||
|  |  | ||||||
|  |   if (isNaN(port)) { | ||||||
|  |     // named pipe | ||||||
|  |     return val; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   if (port >= 0) { | ||||||
|  |     // port number | ||||||
|  |     return port; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return false; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Event listener for HTTP server "error" event. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | function onError(error) { | ||||||
|  |   if (error.syscall !== 'listen') { | ||||||
|  |     throw error; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   var bind = typeof port === 'string' | ||||||
|  |     ? 'Pipe ' + port | ||||||
|  |     : 'Port ' + port; | ||||||
|  |  | ||||||
|  |   // handle specific listen errors with friendly messages | ||||||
|  |   switch (error.code) { | ||||||
|  |     case 'EACCES': | ||||||
|  |       console.error(bind + ' requires elevated privileges'); | ||||||
|  |       process.exit(1); | ||||||
|  |       break; | ||||||
|  |     case 'EADDRINUSE': | ||||||
|  |       console.error(bind + ' is already in use'); | ||||||
|  |       process.exit(1); | ||||||
|  |       break; | ||||||
|  |     default: | ||||||
|  |       throw error; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Event listener for HTTP server "listening" event. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | function onListening() { | ||||||
|  |   var addr = server.address(); | ||||||
|  |   var bind = typeof addr === 'string' | ||||||
|  |     ? 'pipe ' + addr | ||||||
|  |     : 'port ' + addr.port; | ||||||
|  |   debug('Listening on ' + bind); | ||||||
|  | } | ||||||
							
								
								
									
										62
									
								
								main.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								main.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | |||||||
|  | const createError = require('http-errors'); | ||||||
|  | const express = require('express'); | ||||||
|  | const path = require('path'); | ||||||
|  | const cookieParser = require('cookie-parser'); | ||||||
|  | const app = express(); | ||||||
|  | const fs = require("fs"); | ||||||
|  | const { __glob } = require('./bin/global-variables'); | ||||||
|  |  | ||||||
|  | setup() | ||||||
|  |  | ||||||
|  | function getRouters() { | ||||||
|  |  | ||||||
|  |    for(var route of fs.readdirSync(__glob.ROUTES)) { | ||||||
|  |  | ||||||
|  |       if(route == "index.js") { | ||||||
|  |       | ||||||
|  |         app.use("/", require(__glob.ROUTES + "index")) | ||||||
|  |       } else { | ||||||
|  |        | ||||||
|  |         app.use("/" + route.replace(".js", ""), require(__glob.ROUTES + route)) | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |    } | ||||||
|  |     | ||||||
|  | } | ||||||
|  |  | ||||||
|  | function setup() { | ||||||
|  |  | ||||||
|  |   app.set('views', path.join(__dirname, 'views')); | ||||||
|  |   app.set('view engine', 'ejs'); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   app.use(express.json()); | ||||||
|  |   app.use(express.urlencoded({ extended: false })); | ||||||
|  |   app.use(cookieParser()); | ||||||
|  |   app.use(express.static(path.join(__dirname, 'public'))); | ||||||
|  |  | ||||||
|  |   getRouters() | ||||||
|  |  | ||||||
|  |   // catch 404 and forward to error handler | ||||||
|  |   app.use(function(req, res, next) { | ||||||
|  |     next(createError(404)); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   // error handler | ||||||
|  |   app.use(function(err, req, res, next) { | ||||||
|  |     // set locals, only providing error in development | ||||||
|  |     res.locals.message = err.message; | ||||||
|  |     res.locals.error = req.app.get('env') === 'development' ? err : {}; | ||||||
|  |  | ||||||
|  |     // render the error page | ||||||
|  |     res.status(err.status || 500); | ||||||
|  |     res.render('error'); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | module.exports = app; | ||||||
							
								
								
									
										1482
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1482
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										32
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | { | ||||||
|  |   "name": "neutral", | ||||||
|  |   "version": "0.1.0", | ||||||
|  |   "description": "Panel d'administration de Raphix", | ||||||
|  |   "main": "index.js", | ||||||
|  |   "scripts": { | ||||||
|  |     "start": "nodemon ./bin/www" | ||||||
|  |   }, | ||||||
|  |   "repository": { | ||||||
|  |     "type": "git", | ||||||
|  |     "url": "https://git.raphix.fr/infrastructure/neutral.git" | ||||||
|  |   }, | ||||||
|  |   "nodemonConfig": { | ||||||
|  |     "ext": "js, html", | ||||||
|  |     "ignore": [ | ||||||
|  |       "*.json" | ||||||
|  |     ], | ||||||
|  |     "delay": "10000000" | ||||||
|  |   }, | ||||||
|  |   "keywords": [], | ||||||
|  |   "dependencies": { | ||||||
|  |     "cookie-parser": "~1.4.4", | ||||||
|  |     "debug": "~2.6.9", | ||||||
|  |     "ejs": "~2.6.1", | ||||||
|  |     "express": "~4.16.1", | ||||||
|  |     "http-errors": "~1.6.3", | ||||||
|  |     "loguix": "^1.2.0", | ||||||
|  |     "nodemon": "^3.0.1" | ||||||
|  |   }, | ||||||
|  |   "author": "Raphix", | ||||||
|  |   "license": "ISC" | ||||||
|  | } | ||||||
							
								
								
									
										88
									
								
								public/stylesheets/style.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								public/stylesheets/style.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,88 @@ | |||||||
|  | @import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap'); | ||||||
|  |  | ||||||
|  | body { | ||||||
|  |   padding: 2%; | ||||||
|  |   background-color: #323031; | ||||||
|  |   color: white; | ||||||
|  |   font-size: 1vw; | ||||||
|  |   font-family: 'Roboto', sans-serif !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /*Button*/ | ||||||
|  |  | ||||||
|  | .btn { | ||||||
|  |  | ||||||
|  |   background-color: transparent; | ||||||
|  |   outline: none; | ||||||
|  |   border-radius: 0.5vw; | ||||||
|  |   border: 1px solid currentColor; | ||||||
|  |   color: currentColor; | ||||||
|  |   padding: 0.5vw; | ||||||
|  |   transition: 0.2s; | ||||||
|  |    | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .btn span { | ||||||
|  |   transition: 0.2s; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .btn:hover { | ||||||
|  |   box-shadow: 0px 0px 10px currentColor; | ||||||
|  |   background-color: currentColor; | ||||||
|  |   | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .btn:hover span { | ||||||
|  |   color: black | ||||||
|  |   | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .btn:active { | ||||||
|  |   box-shadow: 0px 0px 10px currentColor; | ||||||
|  |   background-color: transparent; | ||||||
|  |    | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .btn:active span { | ||||||
|  |   color: white | ||||||
|  |   | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* Miniaturiez Button */ | ||||||
|  |  | ||||||
|  | .min { | ||||||
|  |  | ||||||
|  |   width: 2vw !important; | ||||||
|  |   height: 2vw !important; | ||||||
|  |   border-radius: 100% !important; | ||||||
|  |   font-size: 1vw !important; | ||||||
|  |   display: flex; | ||||||
|  |   justify-content: center; | ||||||
|  |   align-items: center; | ||||||
|  |   transition: 0.2s; | ||||||
|  | } | ||||||
|  |    | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /*Colors*/ | ||||||
|  |  | ||||||
|  | .red { | ||||||
|  |  | ||||||
|  |   color: rgb(255, 63, 63) !important;  | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .blue { | ||||||
|  |  | ||||||
|  |   color: rgb(66, 242, 255) !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .yellow { | ||||||
|  |  | ||||||
|  |   color: rgb(255, 255, 27) !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .green { | ||||||
|  |  | ||||||
|  |   color: rgb(64, 248, 64) !important; | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								routes/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								routes/index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | var express = require('express'); | ||||||
|  | var router = express.Router(); | ||||||
|  |  | ||||||
|  | /* GET home page. */ | ||||||
|  | router.get('/', function(req, res, next) { | ||||||
|  |   res.render('index'); | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | module.exports = router; | ||||||
							
								
								
									
										9
									
								
								routes/stylepage.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								routes/stylepage.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | var express = require('express'); | ||||||
|  | var router = express.Router(); | ||||||
|  |  | ||||||
|  | /* GET home page. */ | ||||||
|  | router.get('/', function(req, res, next) { | ||||||
|  |   res.render('stylepage'); | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | module.exports = router; | ||||||
							
								
								
									
										49
									
								
								views/error.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								views/error.ejs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <title>Neutral - Erreur</title> | ||||||
|  |     <link rel='stylesheet' href='/stylesheets/style.css'/> | ||||||
|  |     <style> | ||||||
|  |         body { | ||||||
|  |  | ||||||
|  |             padding: 2%; | ||||||
|  |             | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         div { | ||||||
|  |  | ||||||
|  |             background-color: rgb(32, 32, 32); | ||||||
|  |             border-radius: 1vw; | ||||||
|  |             padding: 2%; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         button { | ||||||
|  |             color: red; | ||||||
|  |             background-color: transparent; | ||||||
|  |             border-radius: 1vw; | ||||||
|  |             border-color: red; | ||||||
|  |             border-style: solid; | ||||||
|  |             padding: 10px; | ||||||
|  |             transition: all 0.2s ease 0s; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         button:hover { | ||||||
|  |  | ||||||
|  |             color: white; | ||||||
|  |             background-color: red; | ||||||
|  |             cursor: pointer; | ||||||
|  |         } | ||||||
|  |     </style> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <div> | ||||||
|  |         <h1>Erreur</h1> | ||||||
|  |         <h2><%= message %> - <%= error.status %></h1> | ||||||
|  |         <pre><%= error.stack %></pre> | ||||||
|  |  | ||||||
|  |     </div> | ||||||
|  |     <br> | ||||||
|  |    <a href="/"><button>Retourner sur le panel</button></a> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
|  |  | ||||||
							
								
								
									
										13
									
								
								views/index.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								views/index.ejs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <title>Neutral</title> | ||||||
|  |     <link rel='stylesheet' href='/stylesheets/style.css' /> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <h1>Neutral - Home</h1> | ||||||
|  |     <p>Welcome to Neutral</p> | ||||||
|  |      | ||||||
|  |     <script defer="" src="https://use.fontawesome.com/releases/v6.4.2/js/all.js" crossorigin="anonymous"></script> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										70
									
								
								views/stylepage.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								views/stylepage.ejs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html> | ||||||
|  |   <head> | ||||||
|  |     <title>Neutral</title> | ||||||
|  |     <link rel='stylesheet' href='/stylesheets/style.css' /> | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <h1>Neutral - Style Page</h1> | ||||||
|  |     <p>Welcome to Neutral</p> | ||||||
|  |  | ||||||
|  |     <p>Police : 'Roboto', sans-serif </p> | ||||||
|  |     <style> | ||||||
|  |       .box-color { | ||||||
|  |  | ||||||
|  |         width: 5vw; | ||||||
|  |         height: 5vw; | ||||||
|  |         transition: 0.2s; | ||||||
|  |         border: 1px solid; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .box-color:hover { | ||||||
|  |  | ||||||
|  |         transform: scale(1.1); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .box-color:active { | ||||||
|  |  | ||||||
|  |         transform: scale(1); | ||||||
|  |         color: rgb(58, 255, 3); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |       button { | ||||||
|  |         width: fit-content ; | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       .list-items { | ||||||
|  |  | ||||||
|  |         display: flex; | ||||||
|  |         flex-direction: column; | ||||||
|  |         gap: 2vw; | ||||||
|  |       } | ||||||
|  |     </style> | ||||||
|  |  | ||||||
|  |     <div class="list-items"> | ||||||
|  |     <button class="btn red"><span>Error Button</span></button> | ||||||
|  |     <button class="btn blue "><span>Info Button</span></button> | ||||||
|  |     <button class="btn yellow"><span>Warning Button</span></button> | ||||||
|  |     <button class="btn green"><span>Confirm Button</span></button> | ||||||
|  |     <button class="btn"><span>Default Button</span></button> | ||||||
|  |     <button class="btn min red"><span><i class="fa fa-x"></i></span></button> | ||||||
|  |     <button class="btn min blue"><span><i class="fa fa-info"></i></span></button> | ||||||
|  |     <button class="btn min"><span><i class="fa fa-def"></i></span></button> | ||||||
|  |     <div onclick="copyToClipboard('#323031')" style='background-color: #323031;' class="box-color"><p style="text-align: center;">#323031</p></div> | ||||||
|  |     <div onclick="copyToClipboard('#3D3B3C')" style='background-color: #3D3B3C;' class="box-color"><p style="text-align: center;">#3D3B3C</p></div> | ||||||
|  |     <div onclick="copyToClipboard('#7F7979')" style='background-color: #7F7979;' class="box-color"><p style="text-align: center;">#7F7979</p></div> | ||||||
|  |     <div onclick="copyToClipboard('#C1BDB3')" style='background-color: #C1BDB3;' class="box-color"><p style="text-align: center;">#C1BDB3</p></div> | ||||||
|  |     <div onclick="copyToClipboard('#5f5b6b')" style='background-color: #5f5b6b;' class="box-color"><p style="text-align: center;">#5F5B6B</p></div> | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <script> | ||||||
|  |       function copyToClipboard(text) { | ||||||
|  |  | ||||||
|  |         navigator.clipboard.writeText(text) | ||||||
|  |       } | ||||||
|  |        | ||||||
|  |     </script> | ||||||
|  |     <script defer="" src="https://use.fontawesome.com/releases/v6.4.2/js/all.js" crossorigin="anonymous"></script> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
		Reference in New Issue
	
	Block a user