summaryrefslogtreecommitdiff
path: root/node_modules/node-wifi/src/linux-connect.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/node-wifi/src/linux-connect.js')
-rw-r--r--node_modules/node-wifi/src/linux-connect.js45
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();
+ }
+ });
+ });
+ }
+ };
+};