diff options
Diffstat (limited to 'node_modules/node-wifi/src/linux-connect.js')
-rw-r--r-- | node_modules/node-wifi/src/linux-connect.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/node_modules/node-wifi/src/linux-connect.js b/node_modules/node-wifi/src/linux-connect.js new file mode 100644 index 0000000..164c121 --- /dev/null +++ b/node_modules/node-wifi/src/linux-connect.js @@ -0,0 +1,45 @@ +const execFile = require('child_process').execFile; +const env = require('./env'); + +function connectToWifi(config, ap, callback) { + const args = []; + args.push('-w'); + args.push('10'); + args.push('device'); + args.push('wifi'); + args.push('connect'); + args.push(ap.ssid); + args.push('password'); + args.push(ap.password); + + if (config.iface) { + args.push('ifname'); + args.push(config.iface); + } + + execFile('nmcli', args, { env }, (err, resp) => { + // Errors from nmcli came from stdout, we test presence of 'Error: ' string + if (resp.includes('Error: ')) { + err = new Error(resp.replace('Error: ', '')); + } + callback && callback(err); + }); +} + +module.exports = config => { + return (ap, callback) => { + if (callback) { + connectToWifi(config, ap, callback); + } else { + return new Promise((resolve, reject) => { + connectToWifi(config, ap, err => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } + }; +}; |