1 changed files with 84 additions and 0 deletions
@ -0,0 +1,84 @@ |
|||
const {exec} = require("child_process"); |
|||
|
|||
module.exports.checkNodeVersion = function () { |
|||
let currentApropriateVersion = 14; |
|||
let nodeVersion = process.versions.node.split('.'); |
|||
|
|||
if (Number(nodeVersion[0]) < currentApropriateVersion) { |
|||
throw new Error(`The Node version must be at least v${currentApropriateVersion} or above.`); |
|||
}; |
|||
|
|||
return; |
|||
}; |
|||
|
|||
module.exports.checkPlatform = function () { |
|||
let platform = process.platform; |
|||
|
|||
// https://nodejs.org/api/process.html#process_process_platform
|
|||
let inappropriatePlatform = ['aix', 'darwin', 'freebsd', 'openbsd', 'sunos', 'win32']; |
|||
|
|||
if (inappropriatePlatform.includes(platform)) { |
|||
throw new Error("Your platform must be at least Linux."); |
|||
}; |
|||
|
|||
return; |
|||
}; |
|||
|
|||
module.exports.getDistroInfo = function () { |
|||
let current = { |
|||
distributorID: null, distributorVersion: null |
|||
}; |
|||
|
|||
// check version
|
|||
exec('lsb_release -i -r', (error, stdout, stderr) => { |
|||
if (error || stderr) { |
|||
throw new Error(`Error while checking Linux distribution information: ${stderr ? stderr : error}`); |
|||
}; |
|||
|
|||
if (stdout) { |
|||
// sanitize
|
|||
let parsed = res |
|||
.split(/\r|\n/gi) // remove break lines
|
|||
.map(x => x.replace(/\s/gi, "")) // remove spaces, only remains [e.g. DistributorID:Ubuntu]
|
|||
.filter(x => x); // filter empty string
|
|||
|
|||
let findDistributorID = parsed.find(val => val.match(/^(DistributorID)/gi)); |
|||
let findReleaseVersion = parsed.find(val => val.match(/^(Release)/gi)); |
|||
|
|||
if (findDistributorID) { |
|||
let splitViaColon = findDistributorID.split(/(:)/gi); |
|||
if (splitViaColon) current.distributorID = splitViaColon.pop().toLowerCase(); |
|||
}; |
|||
|
|||
if (findReleaseVersion) { |
|||
let splitViaColon = findReleaseVersion.split(/(:)/gi); |
|||
if (splitViaColon) current.distributorVersion = splitViaColon.pop().toLowerCase(); |
|||
}; |
|||
}; |
|||
}); |
|||
|
|||
return current; |
|||
}; |
|||
|
|||
module.exports.checkPlatformExact = function () { |
|||
let distroInfo = this.getDistroInfo(); |
|||
if (!distroInfo?.distributorID || !distroInfo?.distributorVersion) { |
|||
throw new Error("Missing distro platform information."); |
|||
}; |
|||
|
|||
// https://en.wikipedia.org/wiki/Uncomplicated_Firewall
|
|||
let platform = distroInfo.distributorID; |
|||
if (String(platform).toLowerCase() !== "ubuntu") { |
|||
throw new Error("node-ufw only supported on Ubuntu."); |
|||
}; |
|||
|
|||
return true; |
|||
}; |
|||
|
|||
// soon to be continued
|
|||
// module.exports.checkPlatformVersion = function () {
|
|||
// let distroInfo = this.getDistroInfo();
|
|||
// if (!distroInfo?.distributorID || !distroInfo?.distributorVersion) {
|
|||
// throw new Error("Missing distro platform information.");
|
|||
// };
|
|||
// };
|
Loading…
Reference in new issue