From 6d394e27568f9dc2a0fe9e05cb37ece477eacbc5 Mon Sep 17 00:00:00 2001 From: wy Date: Mon, 6 Jun 2022 09:18:26 +0800 Subject: [PATCH] first commit --- .gitignore | 1 + README.md | 1 + app.js | 70 ++++++++++++++++++++++++++++++ bin/www | 93 ++++++++++++++++++++++++++++++++++++++++ package.json | 23 ++++++++++ public/favicon.ico | Bin 0 -> 1150 bytes routes/index.js | 23 ++++++++++ routes/mu/func.js | 40 ++++++++++++++++++ routes/mu/nodes.js | 87 ++++++++++++++++++++++++++++++++++++++ routes/mu/users.js | 103 +++++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 441 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app.js create mode 100644 bin/www create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 routes/index.js create mode 100644 routes/mu/func.js create mode 100644 routes/mu/nodes.js create mode 100644 routes/mu/users.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..096746c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b595980 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# node-panel \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..4f4b2a0 --- /dev/null +++ b/app.js @@ -0,0 +1,70 @@ +var createError = require('http-errors'); +var express = require('express'); +var path = require('path'); +var logger = require('morgan'); +var serveStatic = require('serve-static') +var favicon = require('serve-favicon') + + + +var app = express(); + +// view engine setup +//app.engine('html', require('express-art-template')); + +app.set('views', path.join(__dirname, 'views')); +//app.set('view engine', 'html'); + +app.use(logger('dev')); +app.use(express.json()); +app.use(express.urlencoded({ extended: false })); + +// app.use('/static', express.static(path.join(__dirname, 'public')),{ +// etag: false +// }) +app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))) +app.use('/static', serveStatic(path.join(__dirname, 'public'),{ + etag: false +})) +app.use(function(req, res, next) { + req.headers['if-none-match'] = 'no-match-for-this'; + next(); +}); + +//路由,前台 +let indexRouter = require('./routes/index'); + +app.use('/', indexRouter); + +//路由,后台 +let muNodesRouter=require('./routes/mu/nodes.js'); +app.use('/mod_mu/nodes', muNodesRouter); + +let muUsersRouter=require('./routes/mu/users.js'); +app.use('/mod_mu/users', muUsersRouter); + + +let muFuncRouter=require('./routes/mu/func.js'); +app.use('/mod_mu/func', muFuncRouter); + + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + if (req.path && !req.path.endsWith('.map')){ + 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 : {}; + console.error(err.stack); + // render the error page + res.status(err.status || 500); + res.render('error'); +}); + + +module.exports = app; diff --git a/bin/www b/bin/www new file mode 100644 index 0000000..6a2065a --- /dev/null +++ b/bin/www @@ -0,0 +1,93 @@ + +const path = require('path'); +let envPath = path.join(__dirname, `../env.${process.env.NODE_ENV}`) +require('dotenv').config({ path: envPath }) +var app = require('../app'); +var debug = require('debug')("mybot:www"); +var http = require('http'); + + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +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); + console.info("项目启动了", port) + //schedule.initSchedule(); + +} + diff --git a/package.json b/package.json new file mode 100644 index 0000000..31fcdb3 --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "node-panel", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "node ./bin/www NODE_ENV=development", + "start": "set NODE_ENV=development&nodemon --delay 1.5 bin/www ", + "prd": "pm2 start bin/www", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "debug": "^4.3.4", + "dotenv": "^16.0.1", + "express": "^4.18.1", + "morgan": "^1.10.0", + "nodemon": "^2.0.16", + "serve-favicon": "^2.5.0", + "serve-static": "^1.15.0" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b85f4071492903f0e83ad1c55d2fde8a41756847 GIT binary patch literal 1150 zcmb7^c}&z-5XZMk|85|q0x2|@fgA5A{}xs7S+f1Q`_OlIEuzRbLtJdx-P zVOd#;1nne>dQ&9YAQFk(1PCD^@=shaB9XB7y5t^mMIP?X<;ZOm$L`?zHvyEL2&Vkx zPAZdj3)sVrx5)(j9*t=Ydw5KI$BX?3=(VYE&uJkSRXMKcD=7lbM z2mLZ1`m=o*ko%*{4WKI{fZ9`j6ib4ThuQK|lnvDqJ5oYzhzog}q%ZBLlsYpg+st70 zR?4NWTs-0|-08)T!Ut`RAI+)0Lal))4%ku?ZH2L`h^6^io-NJOUQ@!6o%S>*IWcl6 z5YuQc=`kT_&UtWO?ul0BO-rgb*QNdx9dn~G-j3C4qJiPTyIhX2=24!X zg?~Q&0GVQYlwZGx{IC;+QSL&&KBo5U=L~$m3)9tIm`ehgE%Ibd;6EPKlNa$8lX>12 zes@PLHKiA+DN}MI|2!AO8!3wMqBZLvzZC3eR&|gibr_4PFL-Y3;PIGV$ln%Ifschh ztZm1vD`jD*f?w}m;Z~wMMbVyg{t(GT#Zl%OqM50V#8@t7d9n+`!y%zQcV;X1TKMv$ z{WM75LG!I6O+v5BV_nEUz7_4YM5gMJnZKP%ts;uF*u4zvG#DQZb2BBFg~ligKj(BL z(okm-zH&hlx`|_Z9FU3Kc%Z((j3$>q$8TBAy;7_5CXCe*mb=qlh5loEZpu(Zxbd*H zfZugxtc_Lk!q6n3ffo~M)<;TNz4s$4y_r1gJi}c5ai&W`7?HWqo9cu*&H-hFGn3sa z{&>*HszJkZQ#b3TPSz(|g?wsQ8>wVPFU(a>4(66*j1^*Ge!OW-u%S4@N|=2IrnC*1 zM}Ow2QOnBo04pXf%Z6^Aj<>NmT+f_d#ca=2Os!drRwdA<3`2dwgWOPS(mu21iM|8# zSTFMiJ&VTsEEoovo9M$l(#dZ_?M&