diff --git a/index.js b/index.js index 65c0086ae9ee09c975fc5c2221d7493f3b7ecf34..87dd6ac4024b125c2ed2f1232171ffd5c6b9603a 100644 --- a/index.js +++ b/index.js @@ -25,7 +25,28 @@ module.exports = { ], cli: [{ + name: 'webstart', + desc: 'Starts Duniter as a daemon (background task).', + logs: false, + onConfiguredExecute: (server, conf, program, params) => co(function*() { + yield server.checkConfig() + const daemon = server.getDaemon('direct_webstart', 'webstart') + yield startDaemon(daemon) + }) + }, { + + name: 'webrestart', + desc: 'Stops Duniter daemon and restart it with its web interface.', + logs: false, + onConfiguredExecute: (server, conf, program, params) => co(function*() { + yield server.checkConfig() + const daemon = server.getDaemon('direct_webstart', 'webrestart') + yield stopDaemon(daemon) + yield startDaemon(daemon) + }) + }, { + name: 'direct_webstart', desc: 'Do a webstart', onDatabaseExecute: (server, conf, program, params, startServices, stopServices) => co(function*(){ @@ -57,7 +78,7 @@ module.exports = { const wbmin = webminController(server, startServices, stopServices); const httpServer = http.createServer(app); httpServer.listen(PORT, HOTE); - console.log("Serveur web disponible a l'adresse http://%s:%s", HOTE, PORT); + server.logger.info("Serveur web disponible a l'adresse http://%s:%s", HOTE, PORT); require('./server/lib/routes').webmin(wbmin, app); require('./server/lib/routes').webminWS(wbmin)(httpServer); @@ -77,3 +98,18 @@ module.exports = { }] } }; + +function startDaemon(daemon) { + return new Promise((resolve, reject) => daemon.start((err) => { + if (err) return reject(err) + resolve() + })) +} + +function stopDaemon(daemon) { + return new Promise((resolve, reject) => daemon.stop((err) => { + err && console.error(err); + if (err) return reject(err) + resolve() + })) +} diff --git a/package.json b/package.json index 1f2075397c07f21826d17dfe59e8454b387545b4..83f4602f8407e29a96e383485468c44cf12aa32f 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,9 @@ "brunch": "2.10.9", "co": "4.6.0", "cors": "2.8.2", - "duniter-crawler": "^0.2.17", - "duniter-keypair": "^1.0.0", + "duniter-bma": "^1.0.7", + "duniter-crawler": "^1.0.8", + "duniter-keypair": "^1.0.1", "event-stream": "3.3.4", "express": "4.15.2", "express-fileupload": "0.0.5", diff --git a/run.js b/run.js new file mode 100644 index 0000000000000000000000000000000000000000..87dc365734a96be12d8f7e218d77c1155a1d0aad --- /dev/null +++ b/run.js @@ -0,0 +1,18 @@ +"use strict"; + +const co = require('co'); + +// Inject 'webstart' command if no argument was given +if (process.argv.length === 2) { + process.argv.push('direct_webstart'); +} + +const stack = require('duniter').statics.autoStack([{ + name: 'duniter-ui', + required: require('./index') +}]); + +co(function*() { + yield stack.executeStack(process.argv); + process.exit(); +}); diff --git a/server/controller/webmin.js b/server/controller/webmin.js index 683eed590045699655a69d1c0be7294cc327db7d..4237515d84e3583b72eba0448fcc0ebc609b47a0 100644 --- a/server/controller/webmin.js +++ b/server/controller/webmin.js @@ -10,6 +10,8 @@ const _ = require('underscore'); const Q = require('q'); const co = require('co'); const duniterKeypair = require('duniter-keypair'); +const network = require('duniter-bma').duniter.methods; +const contacter = require('duniter-crawler').duniter.methods.contacter; module.exports = (duniterServer, startServices, stopServices) => { return new WebAdmin(duniterServer, startServices, stopServices); @@ -24,8 +26,6 @@ function WebAdmin (duniterServer, startServices, stopServices) { const rawer = duniterServer.lib.rawer; const http2raw = duniterServer.lib.http2raw; const dos2unix = duniterServer.lib.dos2unix; - const contacter = duniterServer.lib.contacter; - const network = duniterServer.lib.network; const constants = duniterServer.lib.constants; const ucp = duniterServer.lib.ucp; diff --git a/yarn.lock b/yarn.lock index 6289e92fd21dcc9e5356157fed0e64c53cecafb0..fa9782571ffe7e35af594552a7b5dd20104bb6c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -279,12 +279,18 @@ async@1.5.2, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@2.1.4, async@^2.0.0: +async@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" dependencies: lodash "^4.14.0" +async@2.2.0, async@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.2.0.tgz#c324eba010a237e4fbd55a12dee86367d5c0ef32" + dependencies: + lodash "^4.14.0" + async@~0.2.6: version "0.2.10" resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" @@ -929,6 +935,10 @@ basic-auth@~1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.4.tgz#030935b01de7c9b94a824b29f3fccb750d3a5290" +basic-auth@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + batch@0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.2.1.tgz#4463997bb4d5fd1c7a011548813e52aa189c2c79" @@ -1553,8 +1563,8 @@ cookie@0.3.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" cookiejar@^2.0.6: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.0.tgz#86549689539b6d0e269b6637a304be508194d898" + version "2.1.1" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a" core-js@^1.0.0, core-js@^1.0.1: version "1.2.7" @@ -1707,9 +1717,9 @@ ddos@0.1.16: hashish "" response "" -debug@*, debug@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" +debug@*, debug@2.6.1, debug@^2.2, debug@^2.2.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" dependencies: ms "0.7.2" @@ -1719,9 +1729,9 @@ debug@2.0.0: dependencies: ms "0.6.2" -debug@2.6.1, debug@^2.1.1, debug@^2.2, debug@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" +debug@2.6.3, debug@^2.1.1: + version "2.6.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" dependencies: ms "0.7.2" @@ -1877,6 +1887,29 @@ duniter-bma@^0.2.11, duniter-bma@^0.2.4: underscore "1.8.3" ws "1.1.1" +duniter-bma@^1.0.4, duniter-bma@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/duniter-bma/-/duniter-bma-1.0.7.tgz#6eb008c486f2dac51609ab54ac27a094a3ada183" + dependencies: + async "2.2.0" + body-parser "1.17.1" + co "4.6.0" + cors "2.8.2" + ddos "0.1.16" + errorhandler "1.5.0" + event-stream "3.3.4" + express "4.15.2" + express-cors "0.0.3" + express-fileupload "0.0.5" + inquirer "3.0.6" + morgan "1.8.1" + nnupnp "1.0.2" + q "1.5.0" + request "2.81.0" + request-promise "4.2.0" + underscore "1.8.3" + ws "1.1.1" + duniter-common@0.1.0, duniter-common@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/duniter-common/-/duniter-common-0.1.0.tgz#f5cbdc301ba8e57fcc1ab39521ac8f621e3df691" @@ -1886,7 +1919,16 @@ duniter-common@0.1.0, duniter-common@^0.1.0: node-pre-gyp "0.6.32" tweetnacl "0.14.3" -duniter-crawler@^0.2.1, duniter-crawler@^0.2.14, duniter-crawler@^0.2.17, duniter-crawler@^0.2.4: +duniter-common@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/duniter-common/-/duniter-common-1.0.0.tgz#d11b8cb9296e2d29943f2969b1c9291fec8d4d3d" + dependencies: + co "4.6.0" + naclb "1.3.7" + node-pre-gyp "0.6.32" + tweetnacl "0.14.3" + +duniter-crawler@^0.2.1, duniter-crawler@^0.2.14, duniter-crawler@^0.2.4: version "0.2.17" resolved "https://registry.yarnpkg.com/duniter-crawler/-/duniter-crawler-0.2.17.tgz#dc3e1757cf04160cf62b1e737d666be59b392d2f" dependencies: @@ -1904,6 +1946,21 @@ duniter-crawler@^0.2.1, duniter-crawler@^0.2.14, duniter-crawler@^0.2.17, dunite request-promise "4.1.1" underscore "1.8.3" +duniter-crawler@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/duniter-crawler/-/duniter-crawler-1.0.8.tgz#aeea9edcf5f79842eee315d8fec7c5ced6931d3c" + dependencies: + async "2.2.0" + co "4.6.0" + duniter-bma "^1.0.4" + duniter-common "^1.0.0" + moment "2.18.1" + multimeter "0.1.1" + querablep "0.1.0" + request "2.81.0" + request-promise "4.2.0" + underscore "1.8.3" + duniter-keypair@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/duniter-keypair/-/duniter-keypair-0.2.0.tgz#8cdca5cf7e3e5db792d5ab018e34bd73ee977f61" @@ -1931,9 +1988,9 @@ duniter-keypair@^0.3.0: tweetnacl "0.14.3" tweetnacl-util "0.13.5" -duniter-keypair@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/duniter-keypair/-/duniter-keypair-1.0.1.tgz#a4830905b8b6216f944582a0ef4787c657a95f0b" +duniter-keypair@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/duniter-keypair/-/duniter-keypair-1.0.2.tgz#f4994617bb63f60bf389075ad437c9562de9410d" dependencies: bs58 "4.0.0" co "4.6.0" @@ -2080,6 +2137,13 @@ errorhandler@1.4.3: accepts "~1.3.0" escape-html "~1.0.3" +errorhandler@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.0.tgz#eaba64ca5d542a311ac945f582defc336165d9f4" + dependencies: + accepts "~1.3.3" + escape-html "~1.0.3" + es-abstract@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" @@ -2957,7 +3021,7 @@ inquirer@2.0.0, inquirer@^2.0.0: strip-ansi "^3.0.0" through "^2.3.6" -inquirer@^3.0.6: +inquirer@3.0.6, inquirer@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" dependencies: @@ -3645,6 +3709,16 @@ morgan@1.7.0: on-finished "~2.3.0" on-headers "~1.0.1" +morgan@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.8.1.tgz#f93023d3887bd27b78dfd6023cea7892ee27a4b1" + dependencies: + basic-auth "~1.1.0" + debug "2.6.1" + depd "~1.1.0" + on-finished "~2.3.0" + on-headers "~1.0.1" + mout@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mout/-/mout-1.0.0.tgz#9bdf1d4af57d66d47cb353a6335a3281098e1501" @@ -3691,14 +3765,18 @@ nan@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.2.0.tgz#779c07135629503cf6a7b7e6aab33049b3c3853c" -nan@^2.0.5, nan@^2.3.0, nan@^2.3.3, nan@~2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" +nan@^2.0.5, nan@^2.3.0, nan@^2.3.2, nan@^2.3.3: + version "2.6.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01" -nan@^2.3.2, nan@~2.3.3: +nan@~2.3.3: version "2.3.5" resolved "https://registry.yarnpkg.com/nan/-/nan-2.3.5.tgz#822a0dc266290ce4cd3a12282ca3e7e364668a08" +nan@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" + native-notifier@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/native-notifier/-/native-notifier-0.1.1.tgz#0f719731a410a7a243409eaba10a1446c2df831a"