Shinobi/libs/system/utils.js

70 lines
2.5 KiB
JavaScript

const fs = require('fs');
const spawn = require('child_process').spawn;
module.exports = (config) => {
var currentlyUpdating = false
return {
getSystemInfo: (s) => {
const response = {
"Time Started": s.timeStarted,
"Time Ready": s.timeReady,
Versions: {
"Shinobi": s.currentVersion,
"Node.js": process.version,
"FFmpeg": s.ffmpegVersion,
"isActivated": config.userHasSubscribed
},
Machine: {
"CPU Core Count": s.coreCount,
"Total RAM": s.totalmem,
"Operating System Platform": s.platform,
},
}
if(s.expiryDate)response.Versions["License Expires On"] = s.expiryDate
return response
},
getConfiguration: () => {
return new Promise((resolve,reject) => {
const configPath = config.thisIsDocker ? "/config/conf.json" : s.location.config;
fs.readFile(configPath, 'utf8', (err, data) => {
resolve(JSON.parse(data))
});
});
},
modifyConfiguration: (postBody) => {
return new Promise((resolve, reject) => {
console.log(config)
const configPath = config.thisIsDocker ? "/config/conf.json" : s.location.config;
const configData = JSON.stringify(postBody,null,3);
fs.writeFile(configPath, configData, resolve);
});
},
updateSystem: () => {
return new Promise((resolve,reject) => {
if(!config.thisIsDocker){
if(currentlyUpdating){
resolve(true)
return
};
currentlyUpdating = true
const updateProcess = spawn('sh',[s.mainDirectory + '/UPDATE.sh'])
updateProcess.stderr.on('data',(data) => {
s.systemLog('UPDATE.sh',data.toString())
})
updateProcess.stdout.on('data',(data) => {
s.systemLog('UPDATE.sh',data.toString())
})
updateProcess.on('exit',(data) => {
resolve(true)
currentlyUpdating = false
})
}else{
resolve(false)
}
})
}
}
}