2017-10-31 11:41:02 +08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Module dependencies
|
|
|
|
|
*/
|
|
|
|
|
var path = require('path'),
|
|
|
|
|
fs = require('fs'),
|
|
|
|
|
config = require(path.resolve('./config/config')),
|
|
|
|
|
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
|
|
|
|
|
traceLogCreate = require(path.resolve('./config/lib/tracelog')).create;
|
|
|
|
|
|
|
|
|
|
var traceConfig = config.meanTorrentConfig.trace;
|
|
|
|
|
var backupConfig = config.meanTorrentConfig.backup;
|
|
|
|
|
|
|
|
|
|
var mtDebug = require(path.resolve('./config/lib/debug'));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* List of collections
|
|
|
|
|
*/
|
|
|
|
|
exports.list = function (req, res) {
|
|
|
|
|
var files = fs.readdirSync(backupConfig.dir);
|
|
|
|
|
const response = [];
|
|
|
|
|
for (let file of files) {
|
|
|
|
|
const fileInfo = fs.statSync(backupConfig.dir + file);
|
|
|
|
|
response.push({
|
|
|
|
|
name: file,
|
|
|
|
|
size: fileInfo.size,
|
|
|
|
|
ctime: fileInfo.ctime
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
res.json(response);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
2017-10-31 14:13:29 +08:00
|
|
|
* delete
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
2017-10-31 11:41:02 +08:00
|
|
|
*/
|
|
|
|
|
exports.delete = function (req, res) {
|
2017-10-31 14:13:29 +08:00
|
|
|
if (req.query.names) {
|
|
|
|
|
if (Array.isArray(req.query.names)) {
|
|
|
|
|
req.query.names.forEach(function (n) {
|
|
|
|
|
var tfile = backupConfig.dir + n;
|
|
|
|
|
fs.unlinkSync(tfile);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
var tfile = backupConfig.dir + req.query.names;
|
|
|
|
|
fs.unlinkSync(tfile);
|
|
|
|
|
}
|
2017-10-31 15:01:50 +08:00
|
|
|
|
|
|
|
|
//create trace log
|
2018-05-29 15:50:18 +08:00
|
|
|
traceLogCreate(req, traceConfig.action.adminDeleteBackupFiles, {
|
2017-10-31 15:01:50 +08:00
|
|
|
filename: req.query.names
|
|
|
|
|
});
|
|
|
|
|
|
2017-10-31 14:13:29 +08:00
|
|
|
return res.status(200).send({
|
|
|
|
|
message: 'delete successfully'
|
|
|
|
|
});
|
2017-10-31 11:41:02 +08:00
|
|
|
|
2017-10-31 14:13:29 +08:00
|
|
|
}
|
2017-10-31 11:41:02 +08:00
|
|
|
};
|
2017-10-31 14:49:10 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* download
|
|
|
|
|
* @param req
|
|
|
|
|
* @param res
|
|
|
|
|
*/
|
|
|
|
|
exports.download = function (req, res) {
|
|
|
|
|
var filePath = backupConfig.dir + req.params.filename;
|
|
|
|
|
|
|
|
|
|
fs.exists(filePath, function (exists) {
|
|
|
|
|
if (exists) {
|
|
|
|
|
var stat = fs.statSync(filePath);
|
|
|
|
|
|
2017-11-01 13:39:30 +08:00
|
|
|
try {
|
|
|
|
|
res.set('Content-Type', 'application/octet-stream');
|
2017-12-27 15:38:11 +08:00
|
|
|
res.set('Content-Disposition', 'attachment; filename*=UTF-8\'\'' + encodeURIComponent(req.params.filename));
|
2017-11-01 13:39:30 +08:00
|
|
|
res.set('Content-Length', stat.size);
|
2017-10-31 14:49:10 +08:00
|
|
|
|
2017-11-01 13:39:30 +08:00
|
|
|
fs.createReadStream(filePath).pipe(res);
|
|
|
|
|
} catch (err) {
|
|
|
|
|
res.status(422).send({
|
|
|
|
|
message: 'DOWNLOAD_FAILED'
|
|
|
|
|
});
|
|
|
|
|
}
|
2017-10-31 14:49:10 +08:00
|
|
|
} else {
|
|
|
|
|
res.status(422).send({
|
|
|
|
|
message: 'FILE_DOES_NOT_EXISTS'
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|