wifi-setup
Version:
WiFi AP setup, particularly useful for IoT devices
76 lines (74 loc) • 9.21 kB
JavaScript
;
var fs = require('fs');
var Utils = (function () {
function Utils() {
}
// NOTE: this is not cryptographically secure. Only use this for very unimportant passwords
/* requirements = {lowercase: true, uppercase: true, numbers: true, symbols: true} */
/* specialLists = {lowercase: "??", uppercase: "??", numbers: "??", symbols: "??"} */
Utils.generatePassword = function (length, requirements, specialLists) {
var lowercase = 'abcdefghijklmnopqrstuvwxyz';
var uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var numbers = '0123456789';
var symbols = '!@#$%^&*()-_+=,<.>/?|`~';
if (specialLists) {
if (specialLists.lowercase) {
lowercase = specialLists.lowercase;
}
if (specialLists.uppercase) {
uppercase = specialLists.uppercase;
}
if (specialLists.numbers) {
numbers = specialLists.numbers;
}
if (specialLists.symbols) {
symbols = specialLists.symbols;
}
}
if (!requirements) {
requirements = {};
}
if (!requirements.lowercase) {
requirements.lowercase = true;
}
if (!requirements.uppercase) {
requirements.uppercase = true;
}
if (!requirements.numbers) {
requirements.numbers = true;
}
if (!requirements.symbols) {
requirements.symbols = true;
}
if (!length) {
length = 24;
}
var characters = ((requirements.lowercase) ? lowercase : '') + ((requirements.uppercase) ? uppercase : '') + ((requirements.numbers) ? numbers : '') + ((requirements.symbols) ? symbols : '');
var password = '';
for (var i = 0; i < length; i++) {
password += characters[Math.floor(Math.random() * characters.length)];
}
return password;
};
;
Utils.backupFile = function (path, modifier) {
if (!modifier) {
modifier = function (path) {
return path += '.back';
};
}
try {
var file = fs.readFileSync(path);
fs.writeFileSync(modifier(path), file);
}
catch (err) { }
};
;
Utils.replaceAll = function (input, find, replace) {
return input.replace(new RegExp(find, 'g'), replace);
};
return Utils;
}());
exports.Utils = Utils;
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZHVsZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVksRUFBRSxXQUFNLElBQUksQ0FBQyxDQUFBO0FBRXpCO0lBQUE7SUFrRUEsQ0FBQztJQWpFRywyRkFBMkY7SUFDM0YscUZBQXFGO0lBQ3JGLHFGQUFxRjtJQUM5RSxzQkFBZ0IsR0FBdkIsVUFBeUIsTUFBTyxFQUFFLFlBQWEsRUFBRSxZQUFhO1FBQzFELElBQUksU0FBUyxHQUFHLDRCQUE0QixDQUFDO1FBQzdDLElBQUksU0FBUyxHQUFHLDRCQUE0QixDQUFDO1FBQzdDLElBQUksT0FBTyxHQUFHLFlBQVksQ0FBQztRQUMzQixJQUFJLE9BQU8sR0FBRyx5QkFBeUIsQ0FBQztRQUN4QyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2YsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDekIsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDdkMsQ0FBQztZQUNELEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxDQUFDO1lBQ0QsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ25DLENBQUM7UUFDTCxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsWUFBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDeEIsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDeEIsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNWLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9MLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzlCLFFBQVEsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVELE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDcEIsQ0FBQzs7SUFDTSxnQkFBVSxHQUFqQixVQUFtQixJQUFJLEVBQUUsUUFBUztRQUM5QixFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDWixRQUFRLEdBQUcsVUFBQyxJQUFJO2dCQUNaLE1BQU0sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO1lBQzNCLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDRCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUU7UUFBQSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQztJQUNwQixDQUFDOztJQUNNLGdCQUFVLEdBQWpCLFVBQW1CLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTztRQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNMLFlBQUM7QUFBRCxDQWxFQSxBQWtFQyxJQUFBO0FBbEVZLGFBQUssUUFrRWpCLENBQUE7QUFBQSxDQUFDIiwiZmlsZSI6Im1vZHVsZXMvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG4gICAgLy8gTk9URTogdGhpcyBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlLiBPbmx5IHVzZSB0aGlzIGZvciB2ZXJ5IHVuaW1wb3J0YW50IHBhc3N3b3Jkc1xuICAgIC8qIHJlcXVpcmVtZW50cyA9IHtsb3dlcmNhc2U6IHRydWUsIHVwcGVyY2FzZTogdHJ1ZSwgbnVtYmVyczogdHJ1ZSwgc3ltYm9sczogdHJ1ZX0gKi9cbiAgICAvKiBzcGVjaWFsTGlzdHMgPSB7bG93ZXJjYXNlOiBcIj8/XCIsIHVwcGVyY2FzZTogXCI/P1wiLCBudW1iZXJzOiBcIj8/XCIsIHN5bWJvbHM6IFwiPz9cIn0gKi9cbiAgICBzdGF0aWMgZ2VuZXJhdGVQYXNzd29yZCAobGVuZ3RoPywgcmVxdWlyZW1lbnRzPywgc3BlY2lhbExpc3RzPykge1xuICAgICAgICB2YXIgbG93ZXJjYXNlID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JztcbiAgICAgICAgdmFyIHVwcGVyY2FzZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG4gICAgICAgIHZhciBudW1iZXJzID0gJzAxMjM0NTY3ODknO1xuICAgICAgICB2YXIgc3ltYm9scyA9ICchQCMkJV4mKigpLV8rPSw8Lj4vP3xgfic7XG4gICAgICAgIGlmIChzcGVjaWFsTGlzdHMpIHtcbiAgICAgICAgICAgIGlmIChzcGVjaWFsTGlzdHMubG93ZXJjYXNlKSB7XG4gICAgICAgICAgICAgICAgbG93ZXJjYXNlID0gc3BlY2lhbExpc3RzLmxvd2VyY2FzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzcGVjaWFsTGlzdHMudXBwZXJjYXNlKSB7XG4gICAgICAgICAgICAgICAgdXBwZXJjYXNlID0gc3BlY2lhbExpc3RzLnVwcGVyY2FzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzcGVjaWFsTGlzdHMubnVtYmVycykge1xuICAgICAgICAgICAgICAgIG51bWJlcnMgPSBzcGVjaWFsTGlzdHMubnVtYmVycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzcGVjaWFsTGlzdHMuc3ltYm9scykge1xuICAgICAgICAgICAgICAgIHN5bWJvbHMgPSBzcGVjaWFsTGlzdHMuc3ltYm9scztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcmVxdWlyZW1lbnRzKSB7XG4gICAgICAgICAgICByZXF1aXJlbWVudHMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlcXVpcmVtZW50cy5sb3dlcmNhc2UpIHtcbiAgICAgICAgICAgIHJlcXVpcmVtZW50cy5sb3dlcmNhc2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVxdWlyZW1lbnRzLnVwcGVyY2FzZSkge1xuICAgICAgICAgICAgcmVxdWlyZW1lbnRzLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFyZXF1aXJlbWVudHMubnVtYmVycykge1xuICAgICAgICAgICAgcmVxdWlyZW1lbnRzLm51bWJlcnMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcmVxdWlyZW1lbnRzLnN5bWJvbHMpIHtcbiAgICAgICAgICAgIHJlcXVpcmVtZW50cy5zeW1ib2xzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICAgICAgbGVuZ3RoID0gMjQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY2hhcmFjdGVycyA9ICgocmVxdWlyZW1lbnRzLmxvd2VyY2FzZSkgPyBsb3dlcmNhc2UgOiAnJykgKyAoKHJlcXVpcmVtZW50cy51cHBlcmNhc2UpID8gdXBwZXJjYXNlIDogJycpICsgKChyZXF1aXJlbWVudHMubnVtYmVycykgPyBudW1iZXJzIDogJycpICsgKChyZXF1aXJlbWVudHMuc3ltYm9scykgPyBzeW1ib2xzIDogJycpO1xuICAgICAgICB2YXIgcGFzc3dvcmQgPSAnJztcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGFzc3dvcmQgKz0gY2hhcmFjdGVyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBhc3N3b3JkO1xuICAgIH07XG4gICAgc3RhdGljIGJhY2t1cEZpbGUgKHBhdGgsIG1vZGlmaWVyPykge1xuICAgICAgICBpZiAoIW1vZGlmaWVyKSB7XG4gICAgICAgICAgICBtb2RpZmllciA9IChwYXRoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhdGggKz0gJy5iYWNrJztcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGZpbGUgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCk7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG1vZGlmaWVyKHBhdGgpLCBmaWxlKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgIH07XG4gICAgc3RhdGljIHJlcGxhY2VBbGwgKGlucHV0LCBmaW5kLCByZXBsYWNlKSB7XG4gICAgICAgIHJldHVybiBpbnB1dC5yZXBsYWNlKG5ldyBSZWdFeHAoZmluZCwgJ2cnKSwgcmVwbGFjZSk7XG4gICAgfVxufTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==