UNPKG

hostapdjs

Version:

Utility to easily configure hostapd on a linux computer

78 lines (76 loc) 9.42 kB
"use strict"; var pathExists = require("path-exists"); var fs = require("fs"); var json_add_1 = require("json-add"); var Promise = require("bluebird"); var exec = require("promised-exec"); function Hostapdjs(options) { var outputFileSync = fs.writeFileSync; return new Promise(function (resolve, reject) { if (!pathExists.sync('/etc/default/hostapd')) { reject('no default conf file was founded for hostapd'); } if (!options || typeof (options) !== 'object') { reject('Type Error, provide a valid json object'); } if (!options.interface) { reject('No configuration interface was provided'); } if (!options.ssid) { reject('No configuration interface was provided'); } function parsemasq(config) { var write = ''; for (var c = 0; c < Object.keys(config).length; c++) { if (Object.keys(config)[c] !== 'path' && Object.keys(config)[c] !== 'test') { write = write + Object.keys(config)[c] + '=' + config[Object.keys(config)[c]] + '\n'; } } return write; } var config = { path: '/etc/hostapd/hostapd.conf', driver: 'nl80211', hw_mode: 'g', channel: 2, macaddr_acl: 0, auth_algs: 1, ignore_broadcast_ssid: 0, test: false }; if (options.wpa_passphrase) { var wpa_standard = { wpa: 2, wpa_key_mgmt: 'WPA-PSK', wpa_pairwise: 'TKIP', rsn_pairwise: 'CCMP' }; json_add_1.default(config, wpa_standard); } json_add_1.default(config, options); if (!config.test) { outputFileSync('/etc/default/hostapd', 'DAEMON_CONF="' + config.path + '"', 'utf-8'); } outputFileSync(config.path, parsemasq(config), 'utf-8'); if (!config.test) { exec('systemctl restart hostapd').then(function () { resolve(config); }).catch(function (err) { console.log(err); reject(err); }); } else { exec('echo').then(function () { resolve(config); }).catch(function (err) { console.log(err); reject(err); }); } }); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Hostapdjs; ; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFZLFVBQVUsV0FBTSxhQUFhLENBQUMsQ0FBQTtBQUMxQyxJQUFZLEVBQUUsV0FBTSxJQUFJLENBQUMsQ0FBQTtBQUN6Qix5QkFBa0IsVUFBVSxDQUFDLENBQUE7QUFDN0IsSUFBWSxPQUFPLFdBQU0sVUFBVSxDQUFDLENBQUE7QUFDcEMsSUFBTSxJQUFJLEdBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBZXBDLG1CQUFrQyxPQUE0RDtJQUN0RixJQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzlDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBVSxVQUFTLE9BQU8sRUFBQyxNQUFNO1FBRW5ELEVBQUUsQ0FBQSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUEsQ0FBQztZQUMzQyxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQTtRQUN4RCxDQUFDO1FBQ0QsRUFBRSxDQUFBLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTSxDQUFDLE9BQU8sQ0FBQyxLQUFHLFFBQVEsQ0FBQyxDQUFBLENBQUM7WUFDekMsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUNELEVBQUUsQ0FBQSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBLENBQUM7WUFDckIsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUNELEVBQUUsQ0FBQSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUM7WUFDaEIsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7UUFDbkQsQ0FBQztRQUVELG1CQUFtQixNQUFNO1lBQ3ZCLElBQUksS0FBSyxHQUFDLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQSxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQztnQkFDNUMsRUFBRSxDQUFBLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxNQUFNLElBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxNQUFNLENBQUMsQ0FBQSxDQUFDO29CQUNuRSxLQUFLLEdBQUMsS0FBSyxHQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxHQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDO2dCQUM3RSxDQUFDO1lBQ0gsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBSUQsSUFBTSxNQUFNLEdBQVU7WUFDcEIsSUFBSSxFQUFDLDJCQUEyQjtZQUNoQyxNQUFNLEVBQUMsU0FBUztZQUNoQixPQUFPLEVBQUMsR0FBRztZQUNYLE9BQU8sRUFBQyxDQUFDO1lBQ1QsV0FBVyxFQUFDLENBQUM7WUFDYixTQUFTLEVBQUMsQ0FBQztZQUNYLHFCQUFxQixFQUFDLENBQUM7WUFDdkIsSUFBSSxFQUFDLEtBQUs7U0FDWCxDQUFBO1FBSUQsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUM7WUFDekIsSUFBSSxZQUFZLEdBQUM7Z0JBQ2YsR0FBRyxFQUFDLENBQUM7Z0JBQ0wsWUFBWSxFQUFDLFNBQVM7Z0JBQ3RCLFlBQVksRUFBQyxNQUFNO2dCQUNuQixZQUFZLEVBQUMsTUFBTTthQUNwQixDQUFBO1lBQ0Qsa0JBQUssQ0FBQyxNQUFNLEVBQUMsWUFBWSxDQUFDLENBQUE7UUFDNUIsQ0FBQztRQUVELGtCQUFLLENBQUMsTUFBTSxFQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JCLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUM7WUFFbEIsY0FBYyxDQUFDLHNCQUFzQixFQUFFLGVBQWUsR0FBQyxNQUFNLENBQUMsSUFBSSxHQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVqRixDQUFDO1FBR0QsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUM7WUFFaEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDakIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVMsR0FBRztnQkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2IsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDO1FBQUEsSUFBSSxDQUFBLENBQUM7WUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNoQixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDakIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVMsR0FBRztnQkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2IsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO0lBQ0MsQ0FBQyxDQUFDLENBQUE7QUFFSixDQUFDO0FBL0VEOzJCQStFQyxDQUFBO0FBQUEsQ0FBQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGhFeGlzdHMgZnJvbSBcInBhdGgtZXhpc3RzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwianNvbi1hZGRcIjtcbmltcG9ydCAqIGFzIFByb21pc2UgZnJvbSBcImJsdWViaXJkXCI7XG5jb25zdCBleGVjPXJlcXVpcmUoXCJwcm9taXNlZC1leGVjXCIpO1xuXG5cbmludGVyZmFjZSBJY29uZmlnIHtcbiAgICAgICAgcGF0aDpzdHJpbmc7XG4gICAgZHJpdmVyOnN0cmluZztcbiAgICBod19tb2RlOnN0cmluZztcbiAgICBjaGFubmVsOm51bWJlcjtcbiAgICBtYWNhZGRyX2FjbDpudW1iZXI7XG4gICAgYXV0aF9hbGdzOm51bWJlcjtcbiAgICBpZ25vcmVfYnJvYWRjYXN0X3NzaWQ6bnVtYmVyO1xuICAgIHRlc3Q6Ym9vbGVhbjtcbn1cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIb3N0YXBkanMob3B0aW9uczp7aW50ZXJmYWNlOnN0cmluZyxzc2lkOnN0cmluZyx3cGFfcGFzc3BocmFzZTpzdHJpbmd9KXtcbiAgICAgICAgY29uc3Qgb3V0cHV0RmlsZVN5bmMgPSBmcy53cml0ZUZpbGVTeW5jO1xuICByZXR1cm4gbmV3IFByb21pc2U8SWNvbmZpZz4oZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe1xuXG4gIGlmKCFwYXRoRXhpc3RzLnN5bmMoJy9ldGMvZGVmYXVsdC9ob3N0YXBkJykpe1xuICAgIHJlamVjdCgnbm8gZGVmYXVsdCBjb25mIGZpbGUgd2FzIGZvdW5kZWQgZm9yIGhvc3RhcGQnKVxuICB9XG4gIGlmKCFvcHRpb25zIHx8IHR5cGVvZihvcHRpb25zKSE9PSdvYmplY3QnKXtcbiAgICByZWplY3QoJ1R5cGUgRXJyb3IsIHByb3ZpZGUgYSB2YWxpZCBqc29uIG9iamVjdCcpXG4gIH1cbiAgaWYoIW9wdGlvbnMuaW50ZXJmYWNlKXtcbiAgICByZWplY3QoJ05vIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIHdhcyBwcm92aWRlZCcpXG4gIH1cbiAgaWYoIW9wdGlvbnMuc3NpZCl7XG4gICAgcmVqZWN0KCdObyBjb25maWd1cmF0aW9uIGludGVyZmFjZSB3YXMgcHJvdmlkZWQnKVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VtYXNxKGNvbmZpZyl7XG4gICAgdmFyIHdyaXRlPScnO1xuICAgIGZvcih2YXIgYz0wO2M8T2JqZWN0LmtleXMoY29uZmlnKS5sZW5ndGg7YysrKXtcbiAgICAgIGlmKE9iamVjdC5rZXlzKGNvbmZpZylbY10hPT0ncGF0aCcmJk9iamVjdC5rZXlzKGNvbmZpZylbY10hPT0ndGVzdCcpe1xuICAgICAgICB3cml0ZT13cml0ZStPYmplY3Qua2V5cyhjb25maWcpW2NdKyc9Jytjb25maWdbT2JqZWN0LmtleXMoY29uZmlnKVtjXV0rJ1xcbic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB3cml0ZVxuICB9XG5cblxuXG4gIGNvbnN0IGNvbmZpZz08SWNvbmZpZz57XG4gICAgcGF0aDonL2V0Yy9ob3N0YXBkL2hvc3RhcGQuY29uZicsXG4gICAgZHJpdmVyOidubDgwMjExJyxcbiAgICBod19tb2RlOidnJyxcbiAgICBjaGFubmVsOjIsXG4gICAgbWFjYWRkcl9hY2w6MCxcbiAgICBhdXRoX2FsZ3M6MSxcbiAgICBpZ25vcmVfYnJvYWRjYXN0X3NzaWQ6MCxcbiAgICB0ZXN0OmZhbHNlXG4gIH1cblxuXG5cbiAgaWYob3B0aW9ucy53cGFfcGFzc3BocmFzZSl7XG4gICAgdmFyIHdwYV9zdGFuZGFyZD17XG4gICAgICB3cGE6MixcbiAgICAgIHdwYV9rZXlfbWdtdDonV1BBLVBTSycsXG4gICAgICB3cGFfcGFpcndpc2U6J1RLSVAnLFxuICAgICAgcnNuX3BhaXJ3aXNlOidDQ01QJ1xuICAgIH1cbiAgICBtZXJnZShjb25maWcsd3BhX3N0YW5kYXJkKVxuICB9XG5cbiAgbWVyZ2UoY29uZmlnLG9wdGlvbnMpXG4gIGlmICghY29uZmlnLnRlc3Qpe1xuICAvLyBpZihmcy5yZWFkRmlsZVN5bmMoJy9ldGMvZGVmYXVsdC9ob3N0YXBkJykhPT0nREFFTU9OX0NPTkY9XCInK2NvbmZpZy5wYXRoKydcIicpe1xuICBvdXRwdXRGaWxlU3luYygnL2V0Yy9kZWZhdWx0L2hvc3RhcGQnLCAnREFFTU9OX0NPTkY9XCInK2NvbmZpZy5wYXRoKydcIicsICd1dGYtOCcpO1xuICAvLyB9XG4gIH1cblxuICAvLyBtYW5jYSBpbCBjb250cm9sbG8gY2hlIGV2aXRhIGRpIHJpc2NyaXZlcmUgaWwgZmlsZSBzZSDDqCBpZGVudGljbyBhIHF1ZWxsbyBwcmVzZW50ZVxuICBvdXRwdXRGaWxlU3luYyhjb25maWcucGF0aCwgcGFyc2VtYXNxKGNvbmZpZyksICd1dGYtOCcpO1xuICBpZiAoIWNvbmZpZy50ZXN0KXtcblxuICAgIGV4ZWMoJ3N5c3RlbWN0bCByZXN0YXJ0IGhvc3RhcGQnKS50aGVuKGZ1bmN0aW9uKCl7XG4gICAgICByZXNvbHZlKGNvbmZpZylcbiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnIpe1xuICAgICAgY29uc29sZS5sb2coZXJyKVxuICAgICAgcmVqZWN0KGVycilcbiAgICB9KVxufWVsc2V7XG4gIGV4ZWMoJ2VjaG8nKS50aGVuKGZ1bmN0aW9uKCl7XG4gICAgcmVzb2x2ZShjb25maWcpXG4gIH0pLmNhdGNoKGZ1bmN0aW9uKGVycil7XG4gICAgY29uc29sZS5sb2coZXJyKVxuICAgIHJlamVjdChlcnIpXG4gIH0pXG59XG4gIH0pXG5cbn07XG5cbiJdfQ==