domotz-remote-pawn
Version:
Domotz Agent
90 lines (88 loc) • 3.99 kB
JavaScript
/** This file is part of Domotz Agent.
* Copyright (C) 2016 Domotz Ltd
*
* Domotz Agent is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Domotz Agent is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Domotz Agent. If not, see <http://www.gnu.org/licenses/>.
**/
/**
*
* Created by Iacopo Papalini <ipapalini@domotz.com> on 08/09/15.
*/
const os = require('os');
module.exports.get = function (resourceLocator) {
var pkgJson = resourceLocator.pkg.json;
var host = resourceLocator.discovery.host;
var status = resourceLocator.status;
var log = resourceLocator.log;
var configuration = resourceLocator.configuration;
var myConsole = resourceLocator.log.decorateLogs();
var restricted = status.get() === status.RESTRICTED;
var DEFAULT_TENANT = 'domotz';
var result;
result = function (req, res) {
resourceLocator.utils.platform
.getNmapInfo()
.then(function (nmap) {
var body = {
status: 'ok',
mode: status.get(),
default_gateway: host.getDefaultGateway(),
default_interface: host.getInterface(),
log: log.getInfo(),
tenant: process.env.TENANT || DEFAULT_TENANT,
interfaces_list: host.getInterfacesList(),
package: {
pkg_platform: process.env.DPLATFORM,
pkg_architecture: process.env.DARCHITECTURE,
pkg_toolchain: process.env.DTOOLCHAIN,
pkg_version: process.env.DVERSION,
full_platform: resourceLocator.utils.platform.getFullPlatform(),
agent_version: pkgJson.version,
node_version: resourceLocator.utils.platform.getNodeVersion(),
nmap: nmap,
},
modules: resourceLocator.availableModules,
portal_api_endpoint: process.env.PORTAL_API_ENDPOINT || 'https://portal.domotz.com/portal-api/v1/',
uptime: {
system: os.uptime(),
process: process.uptime(),
},
loadavg: os.loadavg(),
cpus: os.cpus(),
freemem: os.freemem(),
};
if (resourceLocator.diagnostic) {
body.diagnostic = {
iteration_counter: resourceLocator.diagnostic.getDiscoveryIterationCounter(),
actual_discovery_counter: resourceLocator.diagnostic.getActualDiscoveryCounter(),
missed_discovery_counter: resourceLocator.diagnostic.getMissedDiscoveryCounter(),
ignored_errors: resourceLocator.utils.errorCounter.getAll(),
};
}
if (resourceLocator.telemetry) {
body.telemetry = resourceLocator.telemetry.getTelemetry();
}
if (configuration !== undefined && configuration.type) {
body.type = configuration.type;
}
if (!restricted) {
body.udp_listener_info = resourceLocator.udp.listener.debugInfo();
}
res.json(body);
})
.catch(function () {
myConsole.error('Error getting nmap info');
});
};
return result;
};