diff --git a/server/controller/shell.js b/server/controller/shell.js index 053967a..f09545f 100644 --- a/server/controller/shell.js +++ b/server/controller/shell.js @@ -13,6 +13,24 @@ const mapLines = (data) => { return infoData; } +module.exports.getReleaseInformation = (session, endSession = true) => { + let infoData = {}; + + + return new Promise((resolve, reject) => { + session.exec("cat /etc/os-release", (err, stream) => { + stream.on("close", (code) => { + if (endSession) session.end(); + if (code === 0) return resolve(infoData); + + reject("Error while checking distro"); + }).on("data", (data) => { + infoData = {...infoData, ...mapLines(data)}; + }); + }); + }); +} + module.exports.checkServer = async ({hostname, username = "root", password, privateKey}) => { const port = hostname.split(":")[1] || 22; hostname = hostname.split(":")[0]; @@ -21,19 +39,11 @@ module.exports.checkServer = async ({hostname, username = "root", password, priv return new Promise((resolve, reject) => { session.on("ready", () => { - let infoData = {}; - - session.exec("cat /etc/os-release", (err, stream) => { - stream.on("close", (code) => { - session.end(); - if (code === 0) return resolve(infoData); - - reject("Error while checking distro"); - }).on("data", (data) => { - infoData = {...infoData, ...mapLines(data)}; - }); + this.getReleaseInformation(session).then((infoData) => { + resolve(infoData); + }).catch((err) => { + reject(err); }); - }).connect({host: hostname, port, username, password, privateKey, readyTimeout: 5000}).on("error", () => { reject("Error while connecting to server"); session.end();