node-wifi
Version:
NodeJS tool to manage wifi
129 lines (107 loc) • 2.6 kB
JavaScript
/* eslint-disable no-process-exit */
;
const commandLineArgs = require('command-line-args');
const getUsage = require('command-line-usage');
const packageJson = require('../package.json');
const wifi = require('../src/wifi');
const { sections, optionDefinitions } = require('./help');
const usage = getUsage(sections);
let options = null;
const fgRed = '\x1b[31m'; // cf https://stackoverflow.com/questions/9781218/how-to-change-node-jss-console-font-color
console.error(
`${fgRed}[Deprecated] node-wifi CLI is deprecated and will be removed in the next major release. Use node-wifi-cli instead.`
);
try {
options = commandLineArgs(optionDefinitions);
} catch (e) {
console.error('Bad options, please see the help with option -h', e);
process.exit(2);
}
if (options.version) {
console.log(`Version ${packageJson.version}`);
process.exit(0);
}
if (options.help) {
console.log(usage);
process.exit(0);
}
let cmds = 0;
if (options.connect) cmds++;
if (options.disconnect) cmds++;
if (options.scan) cmds++;
if (options.current) cmds++;
if (options.delete) cmds++;
if (cmds > 1) {
console.error('You cannot do several operations at the same time');
process.exit(2);
}
if (
!options.connect &&
!options.scan &&
!options.disconnect &&
!options.current &&
!options.delete
) {
console.log(usage);
process.exit(2);
}
wifi.init({
iface: options.iface
});
if (options.scan) {
wifi.scan((error, resp) => {
if (error) {
console.error(error);
process.exit(2);
} else {
console.log(resp);
}
});
} else if (options.connect) {
if (!options.ssid || !options.password) {
console.error(usage);
process.exit(2);
}
const accessPoint = {
ssid: options.ssid,
password: options.password
};
wifi.connect(accessPoint, error => {
if (error) {
console.error(error);
process.exit(2);
}
});
} else if (options.disconnect) {
wifi.disconnect(error => {
if (error) {
console.error(error);
process.exit(2);
}
});
} else if (options.current) {
wifi.getCurrentConnections((error, currentConnections) => {
if (error) {
console.log(error);
process.exit(2);
} else {
console.log(currentConnections);
}
});
} else if (options.delete) {
console.log('ok');
if (!options.ssid) {
console.error(usage);
process.exit(2);
}
const accessPoint = {
ssid: options.ssid
};
wifi.deleteConnection(accessPoint, error => {
if (error) {
console.error(error);
process.exit(2);
}
});
}