UNPKG

rrestjs

Version:

HIgh performance node.js ROA & RESTFUL web framework.

66 lines (63 loc) 2.85 kB
/* *restAdmin.js 是后台的controller 属于应用的文件 * *exports fn(req, res) */ var outerror = require('./Outerror'), RestUtils = require('./RestUtils'), fs = require('fs'), msg = require('./msg/msg'), adminAuthorIp = _restConfig.adminAuthorIp, startTime = RestUtils.fdate('y-m-d h:m:s'),//应用启动时间 logpath = _restConfig.baseDir+_restConfig.logPath,//获取日志存放路径 adminobj = { delete:function(req, res){//杀死子进程 if(req.method !== 'POST') return RestUtils.forbidden(res, 'Must has post method!'); var result = _restConfig._workobj.some(function(value){return value == req.postparam.pid}) if(result){ process.kill(req.postparam.pid, 'SIGTERM'); res.send('<h1>Has been killed <b>'+req.postparam.pid+' !</b><br/><a href="/">返回</a></h1>') } else RestUtils.forbidden(res, 'Pid error!'); }, download:function(req, res){//下载日志文件 if(req.method !== 'GET') return RestUtils.forbidden(res, 'Must has get method!'); if(req.path[2] !== 'logger' || req.path.length>4) return RestUtils.forbidden(res, 'Download path error'); res.download(logpath+'/'+req.path[3], function(err){ if(err) return RestUtils.forbidden(res, 'down load error!'); }) }, index:function(req, res){//输出模版 if(req.method !== 'GET') return RestUtils.forbidden(res, 'Must has get method!'); var loggerstr = '<a href="/index/download/logger/loggername">loggername</a>'; fs.readFile(__dirname+'/admin/admin.html', 'utf-8', function (err, htmldata) { if (err) return outerror('Read admin.html fail. '+err); fs.readdir(logpath, function(err, files){//读取日志路径下的文件 if (err) return outerror('Read logger dir fail. '+err); var loghtml = files.map(function(value){ return loggerstr.replace(/loggername/g, value); }).join('<br/>'); htmldata = htmldata.replace('$starttime', startTime); htmldata = htmldata.replace('$nowtime', RestUtils.fdate('y-m-d h:m:s')); htmldata = htmldata.replace('$listenport', _restConfig._worklistenPort); htmldata = htmldata.replace('$pid', _restConfig._workobj.join(', ')); htmldata = htmldata.replace('$logger', loghtml); res.send(htmldata); }) }); } } module.exports = function(req, res){//主入口 if(!req || !res) return; if(!adminAuthorIp.test(req.ip)) return RestUtils.forbidden(res, 'Not allowed to access'); if(req.path[0] !== 'index') return RestUtils.forbidden(res, 'No such admin path'); try{ adminobj[req.path[1]](req, res);//加载页面 } catch(err){ RestUtils.forbidden(res, 'No such admin path'); } } module.exports.create = function(err, data){}; module.exports.dead = function(err, data){}; module.exports.restart = function(err, data){};