diff --git a/app/controllers/webmin.controller.js b/app/controllers/webmin.controller.js index 6f96937197a52fc9ea5570064867d7cfc017a7a0..5c846f03f1fe279ca1d33b7d82ca420e6630de05 100644 --- a/app/controllers/webmin.controller.js +++ b/app/controllers/webmin.controller.js @@ -23,7 +23,9 @@ var Synchroniser = require('../lib/sync'); var multicaster = require('../lib/streams/multicaster'); var logger = require('../lib/logger')('webmin'); -module.exports = (dbConf, overConf) => new WebAdmin(dbConf, overConf); +module.exports = (dbConf, overConf) => { + return new WebAdmin(dbConf, overConf); +}; function WebAdmin (dbConf, overConf) { @@ -88,6 +90,16 @@ function WebAdmin (dbConf, overConf) { return upnp(server.conf.port, server.conf.remoteport); }); + this.regularUPnP = () => co(function *() { + yield pluggedDALP; + if (server.upnpAPI) { + server.upnpAPI.stopRegular(); + } + server.upnpAPI = yield upnp(server.conf.port, server.conf.remoteport); + server.upnpAPI.startRegular(); + return {}; + }); + this.stopHTTP = () => co(function *() { yield pluggedDALP; return bmapi.closeConnections(); diff --git a/app/lib/streams/webmin.js b/app/lib/streams/webmin.js index c380bf55043433fff9f29d7f65886b34d71b75b4..48e3b056047719e362733fa7b75a8bee233b0e43 100644 --- a/app/lib/streams/webmin.js +++ b/app/lib/streams/webmin.js @@ -18,10 +18,11 @@ module.exports = function(dbConf, overConf, interfaces, httpLogs) { return network.createServersAndListen('uCoin web admin', interfaces, httpLogs, fullPath, (app, httpMethods) => { httpMethods.httpGET( '/webmin/summary', webminCtrl.summary, dtos.AdminSummary); - httpMethods.httpPOST( '/webmin/key/preview', webminCtrl.previewPubkey, dtos.PreviewPubkey); + httpMethods.httpPOST( '/webmin/key/preview', webminCtrl.previewPubkey, dtos.PreviewPubkey); httpMethods.httpGET( '/webmin/server/http/start', webminCtrl.startHTTP, dtos.Boolean); httpMethods.httpGET( '/webmin/server/http/stop', webminCtrl.stopHTTP, dtos.Boolean); httpMethods.httpGET( '/webmin/server/http/upnp/open', webminCtrl.openUPnP, dtos.Boolean); + httpMethods.httpGET( '/webmin/server/http/upnp/regular', webminCtrl.regularUPnP, dtos.Boolean); httpMethods.httpGET( '/webmin/server/preview_next', webminCtrl.previewNext, dtos.Block); httpMethods.httpPOST( '/webmin/server/send_conf', webminCtrl.sendConf, dtos.Identity); httpMethods.httpPOST( '/webmin/server/net_conf', webminCtrl.applyNetworkConf, dtos.Boolean); diff --git a/app/lib/upnp.js b/app/lib/upnp.js index 8badf5e32aeff0fe8501e78454d1cb6ac99173ee..b0d480d2454f1c86800f2d8ffb5685dd8ef06d51 100644 --- a/app/lib/upnp.js +++ b/app/lib/upnp.js @@ -25,13 +25,12 @@ module.exports = function (localPort, remotePort) { client.close(); }); } - let interval; - return { + let interval, upnpService = { openPort: () => { return openPort(localPort, remotePort); }, startRegular: () => { - this.stopRegular(); + upnpService.stopRegular(); // Update UPnP IGD every INTERVAL seconds interval = setInterval(async.apply(openPort, localPort, remotePort), 1000 * constants.NETWORK.UPNP.INTERVAL); }, @@ -41,6 +40,7 @@ module.exports = function (localPort, remotePort) { } } }; + return upnpService; }); }); }; diff --git a/package.json b/package.json index 51b45e015d67625e14cca8e600aea51a1e5f7547..79ea604edab2e46dc2c290c8d1a52b030ed16b68 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "test": "mocha --growl --timeout 20000 test test/fast test/fast/block test/integration test/", "start": "node bin/ucoind start", "test-travis": "node ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec --timeout 20000 test test/fast test/fast/block test/integration test/", - "postinstall": "mkdir ui -p && cd ui && npm pack ucoin-ui@0.1.11 && tar xzf ucoin-ui-0.1.11.tgz && cd package && npm install && cd .. && rm ucoin-ui-0.1.11.tgz" + "postinstall": "mkdir ui -p && cd ui && npm pack ucoin-ui@0.1.12 && tar xzf ucoin-ui-0.1.12.tgz && cd package && npm install && cd .. && rm ucoin-ui-0.1.12.tgz" }, "repository": { "type": "git",