const BackupManager = require('../../models/backupmanager');
const fs = require('fs');
const path = require('path');
const pm2 = require('pm2');
module.exports = {
/**
* render the Backup-Page
*/
BackupPage:(req, res) => {
var BM = new BackupManager();
var fileList = [];
BM.getListOfBackupfilesInFolder((filesArray) => {
console.log('found files: ' + filesArray.length);
filesArray.forEach(file => {
fileList.push(path.basename(file));
});
res.render('admin/backupfiles.ejs', {
title: 'ALARMiator | Backup',
navarea: 'admin',
avatarpath: req.session.avatar,
name: req.session.name,
organizationname: req.session.organization,
session: req.session,
filesList: fileList,
});
})
},
/**
* create a backup of the coredatabse and the picture in public/assets/img as a zip-file under the backup-folder
*/
createBackup: (req, res) => {
var BM = new BackupManager();
BM.Create((err) => {
if(err === null){
console.log('CORE | MODELS | BACKUP | create of backup-file started.');
}
else if(err === 'reloadPage')
{
console.log('CORE | MODELS | BACKUP | create of backup-file finished.');
res.redirect('/admin/backup/files');
}
else{
console.log('CORE | MODELS | BACKUP | error on create a backup-file!');
console.log('CORE | MODELS | BACKUP | ' + err);
}
});
},
/**
* create a backup of the coredatabse and the picture in public/assets/img as a zip-file under the backup-folder
*/
restoreBackup: (req, res) => {
var backupfile = req.params.backupfile;
var BM = new BackupManager();
BM.Restore(backupfile, (err) => {
if(err === null)
{
console.log('CORE | MODELS | BACKUP | restore of backup-file started.');
}
else if(err === 'finished')
{
console.log('CORE | MODELS | BACKUP | restore of backup-file finished.');
console.log('CORE | MODELS | BACKUP | reboot server.');
res.redirect('/admin/system/reboot');
}
else
{
console.log('CORE | MODELS | BACKUP | error on restire a backup-file!');
console.log('CORE | MODELS | BACKUP | ' + err);
}
});
},
/**
* delete a backup-file
*/
deleteBackup: (req, res) => {
var backupfile = req.params.backupfile;
var BM = new BackupManager();
BM.Delete(backupfile, (err) => {
if(err === null){
res.redirect('/admin/backup/files');
}
else{
console.log('CORE | MODELS | BACKUP | error on delete ' + backupfile + '!');
console.log('CORE | MODELS | BACKUP | ' + err);
}
});
},
/**
* download a backup-file
*/
downloadBackup: (req, res) => {
var backupfile = req.params.backupfile;
var BM = new BackupManager();
BM.GetBackupfilePath(backupfile, (fullbackupfilepath) => {
if(fullbackupfilepath === null)
{
console.log('CORE | MODELS | BACKUP | error on download ' + backupfile + '!');
}
else
{
res.download(fullbackupfilepath); // Set disposition and send it.
}
});
},
/**
* reboots the server
*/
RebootSytem: (req, res)=>{
setTimeout(function () {
if(global.serverStartedByPM2){
console.log('CORE | restart server with pm2!');
pm2.connect(function(err) {
if(err)
{
console.log('CORE | error at connect to pm2!');
console.log('CORE | ' + err);
}
});
pm2.restart(global.PM2_Name, (err, proc) => {
if(err)
{
console.log('CORE | error at restart with pm2!');
console.log('CORE | ' + err);
}
});
pm2.disconnect();
}
else
{
console.log('CORE | restart server with process.exit and detached child-process!')
process.on("exit", function () {
require("child_process").spawn(process.argv.shift(), process.argv, {
cwd: process.cwd(),
detached : true,
stdio: "inherit"
});
});
process.exit();
}
}, 1000);
res.redirect('/auth/logoff');
},
/**
* shutdown the server
*/
ShutdownSytem: (req, res)=>{
setTimeout(function () {
if(global.serverStartedByPM2){
console.log('CORE | restart server with pm2!');
pm2.connect(function(err) {
if(err)
{
console.log('CORE | error at connect to pm2!');
console.log('CORE | ' + err);
}
});
pm2.stop(global.PM2_Name, (err, proc) => {
if(err)
{
console.log('CORE | error at stop with pm2!');
console.log('CORE | ' + err);
}
});
pm2.disconnect();
}
else
{
process.exit();
}
}, 1000);
res.redirect('/auth/logoff');
}
};