From 8986014a82031c2dabf0d6cc9c54b81713aafcb1 Mon Sep 17 00:00:00 2001 From: mmcwilliams Date: Tue, 26 Nov 2019 11:41:15 -0500 Subject: [PATCH] Refactor wifi lib into Typescript. Only used one "any" on a custom module require that I need to revisit. (log). Yeeha! --- lib/wifi/index.js | 41 ++++++++++--------- lib/wifi/index.js.map | 2 +- src/wifi/index.ts | 95 +++++++++++++++++++++++-------------------- 3 files changed, 72 insertions(+), 66 deletions(-) diff --git a/lib/wifi/index.js b/lib/wifi/index.js index dba95f0..4e12e7e 100644 --- a/lib/wifi/index.js +++ b/lib/wifi/index.js @@ -1,4 +1,5 @@ 'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); const networkPattern = /network[\s\S]*?=[\s\S]*?{([\s\S]*?)}/gi; const quoteRe = new RegExp('"', 'g'); const filePath = '/etc/wpa_supplicant/wpa_supplicant.conf'; @@ -7,14 +8,14 @@ const refresh = 'ip link set wlan0 down && ip link set wlan0 up'; const iwlist = '/sbin/iwlist wlan0 scanning | grep "ESSID:"'; const iwgetid = '/sbin/iwgetid'; const log = require('../log')('wifi'); -const exec = require('child_process').exec; -const fs = require('fs'); +const child_process_1 = require("child_process"); +const fs_1 = require("fs"); let _entry = null; let _ssid = null; -let _cb = null; /** Class representing the wifi features */ class Wifi { constructor() { + this._cb = null; } /** * List available wifi access points @@ -22,7 +23,7 @@ class Wifi { * @param {function} callback Function which gets invoked after list is returned */ list(callback) { - exec(iwlist, (err, stdout, stderr) => { + child_process_1.exec(iwlist, (err, stdout, stderr) => { if (err) { console.error(err); return callback(err); @@ -59,10 +60,10 @@ class Wifi { let current; if (err) { console.error(err); - return _cb(err); + return this._cb(err); } parsed = this._parseConfig(data); - current = parsed.find(network => { + current = parsed.find((network) => { return network.ssid === _ssid; }); if (typeof current !== 'undefined') { @@ -72,7 +73,7 @@ class Wifi { data += '\n\n' + _entry; } _entry = null; - fs.writeFile(filePath, data, 'utf8', this._writeConfigCb.bind(this)); + fs_1.writeFile(filePath, data, 'utf8', this._writeConfigCb.bind(this)); } /** * (internal function) Invoked after config file is written, @@ -83,9 +84,9 @@ class Wifi { _writeConfigCb(err) { if (err) { console.error(err); - return _cb(err); + return this._cb(err); } - exec(reconfigure, this._reconfigureCb.bind(this)); + child_process_1.exec(reconfigure, this._reconfigureCb.bind(this)); } /** * (internal function) Invoked after reconfiguration command is complete @@ -97,10 +98,10 @@ class Wifi { _reconfigureCb(err, stdout, stderr) { if (err) { console.error(err); - return _cb(err); + return this._cb(err); } - console.log('Wifi reconfigured'); - exec(refresh, this._refreshCb.bind(this)); + log.info('Wifi reconfigured'); + child_process_1.exec(refresh, this._refreshCb.bind(this)); } /** * (internal function) Invoked after wifi refresh command is complete @@ -112,11 +113,11 @@ class Wifi { _refreshCb(err, stdout, stderr) { if (err) { console.error(err); - return _cb(err); + return this._cb(err); } - console.log('Wifi refreshed'); - _cb(null, { ssid: _ssid }); - _cb = () => { }; + log.info('Wifi refreshed'); + this._cb(null, { ssid: _ssid }); + this._cb = () => { }; } _parseConfig(str) { const networks = []; @@ -163,7 +164,7 @@ class Wifi { let lines; let hash; let plaintext; - exec(cmd, (err, stdout, stderr) => { + child_process_1.exec(cmd, (err, stdout, stderr) => { if (err) { return callback(err); } @@ -184,9 +185,9 @@ class Wifi { setNetwork(ssid, pwd, hash, callback) { let masked = pwd.split('').map(char => { return char !== '"' ? '*' : '"'; }).join(''); _entry = `network={\n\tssid="${ssid}"\n\t#psk=${masked}\n\tpsk=${hash}\n}\n`; - _cb = callback; + this._cb = callback; _ssid = ssid; - fs.readFile(filePath, 'utf8', this._readConfigCb.bind(this)); + fs_1.readFile(filePath, 'utf8', this._readConfigCb.bind(this)); } /** * Executes command which gets the currently connected network @@ -195,7 +196,7 @@ class Wifi { */ getNetwork(callback) { let output; - exec(iwgetid, (err, stdout, stderr) => { + child_process_1.exec(iwgetid, (err, stdout, stderr) => { if (err) { return callback(err); } diff --git a/lib/wifi/index.js.map b/lib/wifi/index.js.map index 612d75a..8adff32 100644 --- a/lib/wifi/index.js.map +++ b/lib/wifi/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wifi/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wifi/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/wifi/index.ts b/src/wifi/index.ts index 59a2766..9e5a956 100644 --- a/src/wifi/index.ts +++ b/src/wifi/index.ts @@ -1,24 +1,29 @@ 'use strict' -const networkPattern = /network[\s\S]*?=[\s\S]*?{([\s\S]*?)}/gi -const quoteRe = new RegExp('"', 'g') +const networkPattern : RegExp = /network[\s\S]*?=[\s\S]*?{([\s\S]*?)}/gi +const quoteRe : RegExp = new RegExp('"', 'g') -const filePath = '/etc/wpa_supplicant/wpa_supplicant.conf' -const reconfigure = '/sbin/wpa_cli reconfigure' -const refresh = 'ip link set wlan0 down && ip link set wlan0 up' -const iwlist = '/sbin/iwlist wlan0 scanning | grep "ESSID:"' -const iwgetid = '/sbin/iwgetid' +const filePath : string = '/etc/wpa_supplicant/wpa_supplicant.conf' +const reconfigure : string = '/sbin/wpa_cli reconfigure' +const refresh : string = 'ip link set wlan0 down && ip link set wlan0 up' +const iwlist : string = '/sbin/iwlist wlan0 scanning | grep "ESSID:"' +const iwgetid : string = '/sbin/iwgetid' -const log = require('../log')('wifi') -const exec = require('child_process').exec -const fs = require('fs') +const log : any = require('../log')('wifi') +import { exec } from 'child_process' +import { readFile, writeFile } from 'fs' -let _entry = null -let _ssid = null -let _cb = null +let _entry : string = null +let _ssid : string = null + +interface Network { + raw : string + ssid : string +} /** Class representing the wifi features */ class Wifi { + private _cb : Function = null constructor () { } @@ -27,7 +32,7 @@ class Wifi { * * @param {function} callback Function which gets invoked after list is returned */ - list (callback) { + list (callback : Function) { exec(iwlist, (err, stdout, stderr) => { if (err) { console.error(err) @@ -59,15 +64,15 @@ class Wifi { * @param {object} err (optional) Error object only present if problem reading config file * @param {string} data Contents of the config file */ - _readConfigCb (err, data) { - let parsed - let current + _readConfigCb (err : Error, data : string) { + let parsed : Network[] + let current : Network if (err) { console.error(err) - return _cb(err) + return this._cb(err) } parsed = this._parseConfig(data) - current = parsed.find(network => { + current = parsed.find((network : Network) => { return network.ssid === _ssid }) if (typeof current !== 'undefined') { @@ -76,7 +81,7 @@ class Wifi { data += '\n\n' + _entry } _entry = null - fs.writeFile(filePath, data, 'utf8', this._writeConfigCb.bind(this)) + writeFile(filePath, data, 'utf8', this._writeConfigCb.bind(this)) } /** * (internal function) Invoked after config file is written, @@ -84,10 +89,10 @@ class Wifi { * * @param {object} err (optional) Error object only present if problem writing config file */ - _writeConfigCb (err) { + _writeConfigCb (err : Error) { if (err) { console.error(err) - return _cb(err) + return this._cb(err) } exec(reconfigure, this._reconfigureCb.bind(this)) } @@ -98,12 +103,12 @@ class Wifi { * @param {string} stdout Standard output from reconfiguration command * @param {string} stderr Error output from command if fails */ - _reconfigureCb (err, stdout, stderr) { + _reconfigureCb (err : Error, stdout : string, stderr : string) { if (err) { console.error(err) - return _cb(err) + return this._cb(err) } - console.log('Wifi reconfigured') + log.info('Wifi reconfigured') exec(refresh, this._refreshCb.bind(this)) } /** @@ -113,22 +118,22 @@ class Wifi { * @param {string} stdout Standard output from refresh command * @param {string} stderr Error output from command if fails */ - _refreshCb (err, stdout, stderr) { + _refreshCb (err : Error, stdout : string, stderr : string) { if (err) { console.error(err) - return _cb(err) + return this._cb(err) } - console.log('Wifi refreshed') - _cb(null, { ssid : _ssid }) - _cb = () => {} + log.info('Wifi refreshed') + this._cb(null, { ssid : _ssid }) + this._cb = () => {} } - _parseConfig (str) { - const networks = [] + _parseConfig (str : string) : Network[] { + const networks : Network[] = [] const lines = str.split('\n') - let network = {} + let network : Network = {} as Network for (let line of lines) { if (line.substring(0, 9) === 'network={') { - network = {} + network = {} as Network network.raw = line } else if (network.raw && line.indexOf('ssid=') !== -1) { network.ssid = line.replace('ssid=', '').trim().replace(quoteRe, '') @@ -138,7 +143,7 @@ class Wifi { } else if (network.raw && line.substring(0, 1) === '}') { network.raw += '\n' + line networks.push(network) - network = {} + network = {} as Network } else if (network.raw) { network.raw += '\n' + line } @@ -159,11 +164,11 @@ class Wifi { * @param {string} pwd Plaintext passphrase of wifi network * @param {function} callback Function called after psk hash is generated */ - createPSK (ssid, pwd, callback) { - const cmd = `wpa_passphrase '${ssid.replace(/'/g, `'\\''`)}' '${pwd.replace(/'/g, `'\\''`)}' | grep "psk="` - let lines - let hash - let plaintext + createPSK (ssid : string, pwd : string, callback : Function) { + const cmd : string = `wpa_passphrase '${ssid.replace(/'/g, `'\\''`)}' '${pwd.replace(/'/g, `'\\''`)}' | grep "psk="` + let lines : string[] + let hash : string + let plaintext : string exec(cmd, (err, stdout, stderr) => { if (err) { return callback(err) @@ -182,19 +187,19 @@ class Wifi { * @param {string} hash Password/SSID of access point, securely hashed * @param {function} callback Function invoked after process is complete, or fails */ - setNetwork (ssid, pwd, hash, callback) { - let masked = pwd.split('').map(char => { return char !== '"' ? '*' : '"' }).join('') + setNetwork (ssid : string, pwd : string, hash : string, callback : Function) { + let masked : string = pwd.split('').map(char => { return char !== '"' ? '*' : '"' }).join('') _entry = `network={\n\tssid="${ssid}"\n\t#psk=${masked}\n\tpsk=${hash}\n}\n` - _cb = callback + this._cb = callback _ssid = ssid - fs.readFile(filePath, 'utf8', this._readConfigCb.bind(this)) + readFile(filePath, 'utf8', this._readConfigCb.bind(this)) } /** * Executes command which gets the currently connected network * * @param {function} callback Function which is invoked after command is completed */ - getNetwork (callback) { + getNetwork (callback : Function) { let output exec(iwgetid, (err, stdout, stderr) => { if (err) {