UNPKG

wifi-setup

Version:

WiFi AP setup, particularly useful for IoT devices

68 lines (66 loc) 9.47 kB
"use strict"; var question_type_1 = require('../types/question.type'); var SERVICE_NAME = 'DEFAULT'; var Promise = require('bluebird'); Promise.onPossiblyUnhandledRejection(function (error) { throw error; }); module.exports = function (questions, wifiManager, callbacks) { var server = { app: undefined, appServer: undefined, init: function (express, app) { return new Promise(function (resolve) { console.log('Initializing server'); server.app = app; var questionsWithWiFi = []; wifiManager.scan().then(function (networks) { var networkSSIDoptions = []; for (var i in networks) { if (networks[i].SSID) { networkSSIDoptions.push(networks[i].SSID); } } questionsWithWiFi = [ new question_type_1.Question('WiFi SSID', 'wifiSSID', question_type_1.QuestionTypes.SPINNER, networkSSIDoptions), new question_type_1.Question('WiFi password', 'wifiPassword', question_type_1.QuestionTypes.PASSWORD, /([\x00-\x7F]){8,63}/) ].concat(questions); }); app.get('/questions', function (req, res) { res.json(questionsWithWiFi); if (callbacks && callbacks.onClientConfiguring) { callbacks.onClientConfiguring(); } }); app.post('/save-settings', function (req, res) { console.log(req.body); res.json({ message: 'success' }); if (callbacks && callbacks.onSetupComplete) { callbacks.onSetupComplete(req.body); } }); resolve(); }); }, start: function (port) { return new Promise(function (resolve) { console.log('Starting server'); server.appServer = server.app.listen(port, function () { console.log("Listening on " + server.appServer.address().port); resolve(); }); }); }, stop: function () { return new Promise(function (resolve) { console.log('Stopping server'); if (server.appServer) { server.appServer.close(); } resolve(); }); } }; return server; }; //# sourceMappingURL=data:application/json;base64,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QixNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtvQkFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBZ0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFNLENBQUMsQ0FBQztvQkFDL0QsT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLEVBQUU7WUFDRixNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO2dCQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQy9CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUNuQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM3QixDQUFDO2dCQUVELE9BQU8sRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQ0osQ0FBQztJQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwiZmlsZSI6Im1vZHVsZXMvc2VydmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtVdGlsc30gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1F1ZXN0aW9uLCBRdWVzdGlvblR5cGVzfSBmcm9tICcuLi90eXBlcy9xdWVzdGlvbi50eXBlJztcbmltcG9ydCB7TmV0d29ya30gZnJvbSAnLi4vdHlwZXMvbmV0d29yay50eXBlJztcblxudmFyIFNFUlZJQ0VfTkFNRSA9ICdERUZBVUxUJztcblxuaW1wb3J0ICogYXMgUHJvbWlzZSBmcm9tICdibHVlYmlyZCc7XG5Qcm9taXNlLm9uUG9zc2libHlVbmhhbmRsZWRSZWplY3Rpb24oKGVycm9yKSA9PiB7XG4gICAgdGhyb3cgZXJyb3I7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSAocXVlc3Rpb25zOiBBcnJheTxRdWVzdGlvbj4sIHdpZmlNYW5hZ2VyLCBjYWxsYmFja3MpID0+IHtcbiAgICB2YXIgc2VydmVyID0ge1xuICAgICAgICBhcHA6IHVuZGVmaW5lZCxcbiAgICAgICAgYXBwU2VydmVyOiB1bmRlZmluZWQsXG5cbiAgICAgICAgaW5pdDogKGV4cHJlc3MsIGFwcCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0luaXRpYWxpemluZyBzZXJ2ZXInKTtcbiAgICAgICAgICAgICAgICBzZXJ2ZXIuYXBwID0gYXBwO1xuXG4gICAgICAgICAgICAgICAgbGV0IHF1ZXN0aW9uc1dpdGhXaUZpID0gW107XG4gICAgICAgICAgICAgICAgd2lmaU1hbmFnZXIuc2NhbigpLnRoZW4oKG5ldHdvcmtzOiBBcnJheTxOZXR3b3JrPikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV0d29ya1NTSURvcHRpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgaW4gbmV0d29ya3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXR3b3Jrc1tpXS5TU0lEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29ya1NTSURvcHRpb25zLnB1c2gobmV0d29ya3NbaV0uU1NJRCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbnNXaXRoV2lGaSA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBRdWVzdGlvbignV2lGaSBTU0lEJywgJ3dpZmlTU0lEJywgUXVlc3Rpb25UeXBlcy5TUElOTkVSLCBuZXR3b3JrU1NJRG9wdGlvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFF1ZXN0aW9uKCdXaUZpIHBhc3N3b3JkJywgJ3dpZmlQYXNzd29yZCcsIFF1ZXN0aW9uVHlwZXMuUEFTU1dPUkQsIC8oW1xceDAwLVxceDdGXSl7OCw2M30vKVxuICAgICAgICAgICAgICAgICAgICBdLmNvbmNhdChxdWVzdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBhcHAuZ2V0KCcvcXVlc3Rpb25zJywgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHF1ZXN0aW9uc1dpdGhXaUZpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAmJiBjYWxsYmFja3Mub25DbGllbnRDb25maWd1cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uQ2xpZW50Q29uZmlndXJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYXBwLnBvc3QoJy9zYXZlLXNldHRpbmdzJywgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcS5ib2R5KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oe21lc3NhZ2U6ICdzdWNjZXNzJ30pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tzICYmIGNhbGxiYWNrcy5vblNldHVwQ29tcGxldGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5vblNldHVwQ29tcGxldGUocmVxLmJvZHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgc3RhcnQ6IChwb3J0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU3RhcnRpbmcgc2VydmVyJyk7XG4gICAgICAgICAgICAgICAgc2VydmVyLmFwcFNlcnZlciA9IHNlcnZlci5hcHAubGlzdGVuKHBvcnQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYExpc3RlbmluZyBvbiAke3NlcnZlci5hcHBTZXJ2ZXIuYWRkcmVzcygpLnBvcnR9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBzdG9wOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU3RvcHBpbmcgc2VydmVyJyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlcnZlci5hcHBTZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyLmFwcFNlcnZlci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBzZXJ2ZXI7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9