From 82c162aa07a9fea33d5cd67b53984713d8e95e01 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Tue, 3 Jan 2017 22:04:09 +0100 Subject: [PATCH] Update generated files --- public/app.js | 1 - public/app.js.map | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/public/app.js b/public/app.js index ec52703..a40a7fb 100644 --- a/public/app.js +++ b/public/app.js @@ -202,7 +202,6 @@ module.exports = function ($scope, $state, PubkeyGenerator) { PubkeyGenerator($scope); - conf.dev_autoconf = true; if (conf.dev_autoconf) { $scope.$parent.conf.idty_uid = 'dev_' + ~~(Math.random() * 2147483647); $scope.$parent.conf.idty_entropy = ~~(Math.random() * 2147483647) + ""; diff --git a/public/app.js.map b/public/app.js.map index fdc3c22..c412292 100644 --- a/public/app.js.map +++ b/public/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["AboutController.js","IndexController.js","IdentityController.js","ParametersController.js","RootBlockController.js","SyncController.js","MainController.js","GraphsBlockchainController.js","GraphsController.js","HomeController.js","HomeNetworkController.js","OverviewController.js","SettingsController.js","BackupController.js","CPUController.js","CurrencyController.js","DataController.js","KeyController.js","LogsController.js","LogsSettingsController.js","NetworkController.js","app.config.js","application.js","conf.js","app/js/lib/conf/i18n/en.json","routes.js","translate.js","peer.js","mobileDetector.js","base58.js","bma.js","datetime.js","graphs.js","importer.js","pubkeyGenerator.js","ui_utils.js","webmin.js"],"names":["co","require","module","exports","$scope","version","UIUtils","translate","$parent","title","$http","$state","BMA","Webmin","summary","changeTitle","message","connected","current","go","console","error","err","conf","PubkeyGenerator","setTimeout","$","material_select","accept","modal","css","openModal","dev_autoconf","idty_uid","Math","random","idty_entropy","idty_password","enableInputs","generated","started","start","hosts","remote_ipv4","push","rport","join","remote_ipv6","host_listening","server","sendConf","http","openUPnP","try","stop","previewNext","block","raw","node_address","local_ipv4","local_ipv6","lport","blockchain","block_add","res","number","startServices","services","startAll","cancelAndReset","stopAll","resetData","$timeout","$stateParams","$translate","syncWS","ws","sync_mode","simplified_host","synchronizing","sync_failed","host","localStorage","getItem","port","parseInt","to","wrong_host","remote_current","checkNode","checked_host","sync_error","sync_message","split","checking","testSync","targetHost","toast","startSync","down_percent","apply_percent","sp","translatedErr","on","undefined","data","type","value","errorMessage","msg","republishNewSelfPeer","then","log","changed","$apply","autoConfNetwork","setItem","chunkLen","max","min","sync","nodeOK","$interval","Base58","local_host","local_port","local_sign_pk","decode","pubkey","local_sign_sk","seckey","DEFAULT_CESIUM_SETTINGS","notifications","help","Waves","displayEffect","isMobile","sideNav","menuWidth","openWallet","walletHeight","walletWidth","openNewTab","window","location","origin","position","height","width","show","win","settingsStr","dataStr","settings","JSON","parse","keyPairOK","keypair","signPk","signSk","length","encode","Array","from","node","debug","plugins","rememberMe","stringify","close","innerHeight","innerWidth","mainWindow","focus","aboutWin","showAbout","openWindow","subwin","gui","startServer","server_stopped","regularUPnP","server_started","stopServer","restartServer","checkUpdates","LATEST_RELEASE_URL","get","latest","local_string_version","m","match","localVersion","localSuffix","isLocalAPreRelease","remoteVersion","tag_name","substr","filter","entry","icon","onclick","openExternal","BLOCKS_COUNT","Graph","loading","blocksCount","$watch","newValue","timeGraph","speedGraph","diffGraph","updateGraphs","currency","parameters","blocks","count","speeds","accelerations","medianTimeIncrements","actualDurations","BY_HOUR","i","len","acc","previousPos","dtDiffEval","j","medianTime","availPreviousBlocks","localAvgSpeed","realDuration","isNaN","avgGenTime","parseFloat","toFixed","time","minSpeeds","map","ceil","sqrt","maxSpeeds","floor","minDurations","maxDurations","difficulties","b","powMin","graphs","withTime","withSpeed","withDifficulty","timeGraphs","series","difficultyGraph","enableTabs","menu","peers","update","searching","delayP","Q","delay","network","moment","bindBlockWS","loadPowData","M","monetaryMass","UD","ud0","lastUDBlock","N","membersCount","dividend","pow","unitbase","c","phones","abc","newIdentities","dropdown","constrainwidth","lastNearPoW","totalPoW","sync_state","network_percent","peer_percent","has_pulled","is_pulling","last_pulling","start_block","sync_time","fromNow","powSummary","pow_total","total","pow_mirror","mirror","pow_waiting","waiting","event","last","doneCount","found","hash","cb","websocket","current_currency","current_number","current_membersCount","current_medianTime","current_powMin","reconfigure_network","reconfiguring","interfaces","netinferfaces","auto","local","ipv4","ipv6","remote","upnp","dns","netConf","should_reconfigure","isNodePubliclyReachable","reachable","success","$location","fullReset","Importer","export_link","getExportURL","cpuPower","cpu","updateCPUpower","savingCPU","cpuConf","attr","Peer","peer","p","name","getURL","slice","host_port","getHost","getPort","resetNode","resetNodeAndSync","remote_host","keyConf","reload","_","logsSize","logs","range","logsString","follow","levels","warn","info","trace","keys","level","splice","send","addLogs","autoDigest","pause","newlogs","elem","document","getElementById","scrollTop","scrollHeight","whenOpened","generating","shareLogs","logsExport","link","netinterfaces","firstConf","autoconf","autoconfig","local_neti","toArrayOfAddresses","remote_neti","default_port","saveConf","netiScope","reduce","arr","neti","concat","addresses","addr","address","family","angular","duniterApp","config","$compileProvider","aHrefSanitizationWhitelist","duniterChildCallback","onresize","onResize","url","options","callback","Window","open","screenTop","top","screenLeft","left","Shell","homeControllers","controller","init","jade","e","api_timeout","app","$stateProvider","$urlRouterProvider","state","template","resolve","abstract","dt","stepMax","sigDelay","sigPeriod","sigStock","sigWindow","sigValidity","msValidity","sigQty","xpercent","percentRot","blocksRot","medianTimeBlocks","resolveNetworkAutoConf","startHttp","peering","self","status","errorMsg","otherwise","run","$rootScope","$on","toState","toParams","fromState","fromParams","$translateProvider","translations","preferredLanguage","useSanitizeValueStrategy","json","that","BMA_REGEXP","Object","forEach","key","endpoints","statusTS","keyID","substring","copyValues","obj","copyValuesFrom","getRaw","getBMA","bma","ep","matches","getDns","getIPv4","getIPv6","hasValid4","base","getNamedURL","isReachable","mobilecheck","check","a","test","navigator","userAgent","vendor","opera","alphabet","alphabetMap","charAt","buffer","digits","carry","unshift","digit","string","Uint8Array","input","bytes","factory","$q","httpProtocol","protocol","wsProtocol","getResource","uri","params","when","httpGet","Promise","reject","timeout","suffix","pkeys","queryParams","pkey","prevURI","replace","RegExp","headers","postResource","post","bmaGET","bmaPOST","bmaWS","wsMap","sock","WebSocket","onclose","onerror","opened","openedCallback","onopen","listener","messageType","onmessage","wot","lookup","members","stats","ud","tx","format","speedGraphs","id","offset","getSeries","xValuex","highcharts","chart","zoomType","events","load","text","subtitle","ontouchstart","xAxis","minRange","labels","formatter","yAxis","minorTickInterval","colors","legend","enabled","tooltip","shared","crosshairs","blockFormatter","plotOptions","area","fillColor","linearGradient","x1","y1","x2","y2","stops","Highcharts","getOptions","Color","setOpacity","marker","radius","lineWidth","states","hover","threshold","timeAccelerations","timesInc","inc","html","x","points","point","color","y","Upload","uploadFiles","file","errFiles","f","errFile","upload","getImportURL","importData","response","result","evt","progress","loaded","pubkey_preview","preview","salt","pass","newConcat","previewPubkey","catch","toastRaw","Materialize","translated","addClass","jTabs","tabs","click","href","currentTarget","currentID","path","nbLines","hostname","service","instance"],"mappings":"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AAR,CAAzD;AACAia,kBAAgBC,UAAhB,CAA2B,eAA3B,EAAyDla,QAAQ,gDAAR,CAAzD;AACAia,kBAAgBC,UAAhB,CAA2B,kBAA3B,EAAyDla,QAAQ,4CAAR,CAAzD;AACAia,kBAAgBC,UAAhB,CAA2B,4BAA3B,EAAyDla,QAAQ,sDAAR,CAAzD;AACD,CA3FD;;;;ACAA;;AAEAC,OAAOC,OAAP,GAAiB;;AAEfia,QAAM,gBAAM;;AAEV;AACA,QAAI;AACFrR,aAAOsR,IAAP,GAAcpa,QAAQ,SAAS,GAAT,GAAe,SAAvB,CAAd;AACD,KAFD,CAEE,OAAOqa,CAAP,EAAU,CACX;;AAEDlZ,YAAQ4F,GAAR,CAAY,4BAAZ;;AAEA/G,YAAQ,cAAR;;AAEAmB,YAAQ4F,GAAR,CAAY,kBAAZ;AACD;AAfc,CAAjB;;;;;;ACFA9G,OAAOC,OAAP,GAAiB;AACf8C,UAAQ,EADO,EACH;AACZmC,QAAM,EAFS,EAEH;AACZiT,gBAAc,IAHC;AAIfrW,gBAAc,KAJC;AAKfuY,eAAa,KALE,CAKI;AALJ,CAAjB;;;ACAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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","file":"public/app.js","sourcesContent":["\"use strict\";\n\nconst co = require('co');\n\nmodule.exports = ($scope, version, UIUtils) => {\n\n $scope.version = version;\n\n return co(function*() {\n $scope.$parent.title = yield UIUtils.translate('help.about_duniter.title');\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $http, $state, BMA, Webmin, summary, UIUtils) => {\n\n UIUtils.changeTitle(summary.version);\n\n $scope.message = 'index.message.loading';\n co(function *() {\n let connected = false;\n try {\n let summary = yield Webmin.summary();\n if (summary.current) {\n return $state.go('main.home.overview');\n }\n return $state.go('configure.choose');\n }\n catch (e) {\n console.error(connected, e);\n if (!connected) {\n return $state.go('error', { err: 'err.connection'});\n }\n return $state.go('error', { err: e });\n }\n });\n};\n","\"use strict\";\n\nvar conf = require('js/lib/conf/conf');\n\nmodule.exports = ($scope, $state, PubkeyGenerator) => {\n\n setTimeout(() => {\n $('select').material_select();\n }, 500);\n\n $scope.accept = () => {\n let modal = $('#modal1');\n if (modal.css('display') == 'none') {\n $('#modal1').openModal();\n }\n };\n\n PubkeyGenerator($scope);\n\n conf.dev_autoconf = true;\n if (conf.dev_autoconf) {\n $scope.$parent.conf.idty_uid = 'dev_' + ~~(Math.random() * 2147483647);\n $scope.$parent.conf.idty_entropy = ~~(Math.random() * 2147483647) + \"\";\n $scope.$parent.conf.idty_password = ~~(Math.random() * 2147483647) + \"\";\n $state.go('configure.create.network');\n }\n};\n","\"use strict\";\n\nmodule.exports = ($scope, UIUtils) => {\n\n UIUtils.enableInputs();\n};\n","\"use strict\";\n\nvar co = require('co');\nvar conf = require('js/lib/conf/conf');\n\nmodule.exports = ($scope, $http, $state, BMA, Webmin) => {\n\n $scope.generated = '';\n $scope.started = false;\n $scope.message = 'configuration.create_root.need_a_try';\n\n $scope.start = () => co(function *() {\n try {\n let hosts = [];\n if ($scope.$parent.conf.remote_ipv4) {\n hosts.push([$scope.$parent.conf.remote_ipv4, $scope.$parent.conf.rport].join(':'));\n }\n if ($scope.$parent.conf.remote_ipv6) {\n hosts.push([\"[\" + $scope.$parent.conf.remote_ipv6 + \"]\", $scope.$parent.conf.rport].join(':'));\n }\n $scope.host_listening = hosts.join('\\n');\n $scope.started = true;\n yield Webmin.server.sendConf({\n conf: $scope.$parent.conf\n });\n yield Webmin.server.http.start();\n yield Webmin.server.http.openUPnP();\n yield $scope.try();\n } catch (e) {\n $scope.message = e.message;\n }\n });\n\n $scope.stop = () => co(function *() {\n yield Webmin.server.http.stop();\n $scope.started = false;\n });\n\n $scope.try = () => co(function *() {\n try {\n $scope.block = yield Webmin.server.previewNext();\n $scope.generated = $scope.block.raw;\n $scope.message = '';\n } catch (e) {\n $scope.message = e.message;\n }\n });\n\n $scope.accept = () => co(function *() {\n const node_address = $scope.$parent.conf.local_ipv4 || $scope.$parent.conf.local_ipv6;\n let res = yield BMA(node_address + \":\" + $scope.$parent.conf.lport).blockchain.block_add({\n block: $scope.generated\n });\n if (res.number == 0) {\n // We successfully started the blockchain\n yield $scope.startServices();\n }\n });\n\n $scope.startServices = () => co(function *() {\n yield Webmin.server.services.startAll();\n $state.go('index');\n });\n\n $scope.cancelAndReset = () => co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n yield Webmin.server.resetData();\n $state.go('index');\n });\n\n return co(function *() {\n try {\n yield $scope.start();\n yield $scope.try();\n $scope.started = true;\n } catch (e) {\n $scope.started = false;\n }\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $http, $state, $timeout, $stateParams, $translate, BMA, UIUtils, Webmin) => {\n\n let syncWS = Webmin.ws();\n\n UIUtils.enableInputs();\n $scope.sync_mode = 'simplified';\n $scope.simplified_host = '';\n $scope.synchronizing = false;\n $scope.sync_failed = false;\n $scope.host = $stateParams.host || localStorage.getItem('sync_host') || '';\n $scope.port = parseInt($stateParams.port) || parseInt(localStorage.getItem('sync_port')) || 8999;\n $scope.to = parseInt($stateParams.to);\n $scope.wrong_host = false;\n $scope.remote_current = null;\n\n $scope.checkNode = () => co(function *() {\n $scope.checked_host = '';\n $scope.sync_error = '';\n $scope.sync_message = '';\n if ($scope.sync_mode == 'simplified') {\n $scope.host = $scope.simplified_host.split(':')[0];\n $scope.port = parseInt($scope.simplified_host.split(':')[1]);\n }\n $scope.checking = true;\n try {\n const current = yield Webmin.server.testSync({\n host: $scope.host,\n port: $scope.port\n });\n const targetHost = [$scope.host, $scope.port].join(':');\n if (current) {\n $scope.remote_current = current;\n $scope.checked_host = targetHost;\n }\n UIUtils.toast('sync.ready.node.part1');\n $timeout(() => {\n if (!$scope.synchronizing) {\n UIUtils.toast('sync.ready.node.part2');\n }\n }, 6000);\n } catch (e) {\n $scope.sync_error = 'sync.error.unreachable.try.another.node';\n }\n $scope.checking = false;\n return $scope.checked_host ? true : false;\n });\n\n $scope.startSync = () => {\n $scope.down_percent = 0;\n $scope.apply_percent = 0;\n $scope.sync_failed = false;\n $scope.synchronizing = true;\n return co(function *() {\n $scope.sync_message = (yield $translate('sync.started.node')) + ' ' + $scope.checked_host;\n let sp = $scope.checked_host.split(':');\n let translatedErr = yield $translate('err.sync.interrupted');\n syncWS.on(undefined, (data) => {\n if (data.type == 'sync') {\n $scope.down_percent = 100;\n $scope.apply_percent = 100;\n $scope.sync_failed = data.value;\n let errorMessage = data.msg && (data.msg.message || data.msg);\n errorMessage = translatedErr + ' « ' + errorMessage + ' »';\n Webmin.server.republishNewSelfPeer()\n .then(() => console.log('Peer republished'));\n if (data.value === true) {\n $state.go('index');\n } else {\n $state.go('error', { err: (errorMessage) });\n }\n } else {\n let changed = true;\n if (data.type == 'download' && $scope.down_percent != data.value) {\n $scope.down_percent = data.value;\n changed = true;\n }\n if (data.type == 'applied' && $scope.apply_percent != data.value) {\n $scope.apply_percent = data.value;\n changed = true;\n }\n if (changed) {\n $scope.$apply();\n }\n }\n });\n yield Webmin.server.autoConfNetwork();\n localStorage.setItem(\"sync_host\", sp[0]);\n localStorage.setItem(\"sync_port\", sp[1]);\n Webmin.server.startSync({\n host: sp[0],\n port: sp[1],\n to: $scope.to,\n chunkLen: Math.max(500, Math.min(25, $scope.remote_current ? $scope.remote_current.number / 100 : 0))\n });\n });\n };\n\n // Autostart\n if ($scope.host && $scope.port && $stateParams.sync) {\n return co(function *() {\n let nodeOK = yield $scope.checkNode();\n if (nodeOK) {\n return $scope.startSync();\n }\n });\n }\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $state, $http, $timeout, $interval, BMA, Webmin, summary, UIUtils, Base58) => {\n\n const local_host = summary.host.split(':')[0]; // We suppose IPv4 configuration\n const local_port = summary.host.split(':')[1];\n const local_sign_pk = Base58.decode(summary.pubkey);\n const local_sign_sk = Base58.decode(summary.seckey);\n\n const DEFAULT_CESIUM_SETTINGS = {\n \"useRelative\": true,\n \"timeWarningExpire\": 2592000,\n \"useLocalStorage\": true,\n \"rememberMe\": true,\n \"plugins\": {},\n \"node\": {\n \"host\": local_host,\n \"port\": local_port\n },\n \"showUDHistory\": true\n };\n\n $scope.notifications = {\n help: []\n };\n\n Waves.displayEffect();\n\n var isMobile = require('js/lib/mobileDetector');\n if (isMobile()) {\n $(\".button-collapse\").sideNav({\n menuWidth: 280\n });\n }\n\n UIUtils.changeTitle(summary.version);\n\n $scope.openWallet = () => {\n\n let walletHeight = parseInt(localStorage.getItem('wallet_height')) || 1000;\n let walletWidth = parseInt(localStorage.getItem('wallet_width')) || 1400;\n\n openNewTab (window.location.origin + '/cesium/index.html', {\n position: 'center',\n height: walletHeight,\n width: walletWidth,\n show: false\n }, function(win) {\n let settingsStr = win.window.localStorage.getItem('CESIUM_SETTINGS');\n let dataStr = win.window.localStorage.getItem('CESIUM_DATA');\n let settings = (settingsStr && JSON.parse(settingsStr));\n let data = (dataStr && JSON.parse(dataStr));\n let keyPairOK = data && data.keypair && data.keypair.signPk && data.keypair.signSk && true;\n if (keyPairOK) {\n data.keypair.signPk.length = local_sign_pk.length;\n data.keypair.signSk.length = local_sign_sk.length;\n keyPairOK = Base58.encode(Array.from(data.keypair.signPk)) == summary.pubkey\n && Base58.encode(Array.from(data.keypair.signSk)) == summary.seckey\n && data.pubkey == summary.pubkey;\n }\n if (!data\n || !keyPairOK\n || settings.node.host != local_host\n || settings.node.port != local_port) {\n settings = settings || DEFAULT_CESIUM_SETTINGS;\n data = data || {};\n console.debug('Configuring Cesium...');\n settings.node = {\n \"host\": local_host,\n \"port\": local_port\n };\n settings.plugins = {};\n settings.rememberMe = true;\n data.pubkey = summary.pubkey;\n data.keypair = {\n signPk: local_sign_pk,\n signSk: local_sign_sk\n };\n win.window.localStorage.setItem('CESIUM_SETTINGS', JSON.stringify(settings));\n win.window.localStorage.setItem('CESIUM_DATA', JSON.stringify(data));\n win.on('closed', () => {\n // Reopen the wallet\n $timeout(() => $scope.openWallet(), 1);\n });\n win.close();\n } else {\n // Cesium is correctly configured for the network part\n win.show();\n win.on('closed', function() {\n localStorage.setItem('wallet_height', win.window.innerHeight - 8); // Seems to always have 8 pixels more\n localStorage.setItem('wallet_width', win.window.innerWidth - 16); // Seems to always have 16 pixels more\n mainWindow.focus();\n });\n }\n });\n };\n\n let aboutWin;\n\n $scope.showAbout = () => {\n if (aboutWin) {\n aboutWin.focus();\n } else {\n openWindow(window.location.origin + '/#/about', {\n position: 'center',\n height: 380,\n width: 510\n }, function(subwin) {\n subwin.window.gui = window.gui;\n subwin.on('closed', () => {\n aboutWin = null;\n mainWindow.focus();\n });\n aboutWin = subwin;\n });\n }\n };\n\n $scope.startServer = () => {\n $scope.server_stopped = false;\n return co(function *() {\n yield Webmin.server.http.start();\n yield Webmin.server.services.startAll();\n yield Webmin.server.http.regularUPnP();\n $scope.server_started = true;\n });\n };\n\n $scope.stopServer = () => {\n $scope.server_started = false;\n return co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n $scope.server_stopped = true;\n });\n };\n\n $scope.restartServer = () => {\n return co(function *() {\n yield $scope.stopServer();\n yield $scope.startServer();\n });\n };\n\n function checkUpdates() {\n const LATEST_RELEASE_URL = 'https://api.github.com/repos/duniter/duniter/releases/latest';\n co(function*() {\n try {\n const latest = yield $http.get(LATEST_RELEASE_URL);\n const local_string_version = 'v' + summary.version;\n const m = local_string_version.match(/^v([\\d.]+)([ab]?\\d*)/);\n const localVersion = (m && m[1]) || \"\";\n const localSuffix = m && m[2];\n const isLocalAPreRelease = !!(localSuffix);\n const remoteVersion = latest.data.tag_name.substr(1);\n if (localVersion < remoteVersion || (localVersion == remoteVersion && isLocalAPreRelease)) {\n if ($scope.notifications.help.filter((entry) => entry.message == 'help.new_version_available').length == 0) {\n $scope.notifications.help.push({\n icon: 'play_for_work',\n message: 'help.new_version_available',\n onclick: () => openExternal('https://github.com/duniter/duniter/releases/latest')\n });\n }\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n $interval(checkUpdates, 1000 * 3600);\n $timeout(checkUpdates, 1000);\n};\n","\"use strict\";\n\nconst BLOCKS_COUNT = 40;\n\nvar co = require('co');\n\nmodule.exports = ($scope, $state, $timeout, BMA, Webmin, UIUtils, Graph) => {\n\n let data = {};\n\n $scope.loading = true;\n $scope.blocksCount = $scope.blocksCount || BLOCKS_COUNT;\n\n $scope.$watch('withTime', (newValue) => {\n if (newValue) {\n timeGraph();\n }\n });\n\n $scope.$watch('withSpeed', (newValue) => {\n if (newValue) {\n speedGraph();\n }\n });\n\n $scope.$watch('withDifficulty', (newValue) => {\n if (newValue) {\n diffGraph();\n }\n });\n\n $scope.updateGraphs = () => {\n return co(function *() {\n let summary = yield Webmin.summary();\n let parameters = yield BMA(summary.host).currency.parameters();\n let blocks = yield BMA(summary.host).blockchain.blocks({\n count: $scope.blocksCount,\n from: Math.max(0, summary.current.number - $scope.blocksCount)\n });\n let speeds = [], accelerations = [], medianTimeIncrements = [], actualDurations = [];\n let BY_HOUR = 3600;\n for (let i = 0, len = blocks.length; i < len; i++) {\n let block = blocks[i];\n let acc = 0;\n let previousPos = Math.max(0, i - parameters.dtDiffEval);\n for (let j = previousPos; j < i; j++) {\n acc += (blocks[j+1].medianTime - blocks[j].medianTime);\n }\n let availPreviousBlocks = i - 1 - previousPos;\n let localAvgSpeed = acc / (availPreviousBlocks || 1);\n let realDuration = !isNaN(localAvgSpeed) && localAvgSpeed != 0 ? localAvgSpeed : parameters.avgGenTime;\n actualDurations.push(parseFloat((realDuration).toFixed(2)));\n speeds.push(parseFloat((BY_HOUR/realDuration).toFixed(2)));\n accelerations.push(block.time - block.medianTime);\n medianTimeIncrements.push(block.medianTime - (i ? blocks[i-1].medianTime : block.medianTime));\n }\n data.summary = summary;\n data.speeds = speeds;\n data.accelerations = accelerations;\n data.medianTimeIncrements = medianTimeIncrements;\n data.actualDurations = actualDurations;\n data.minSpeeds = speeds.map(() => parseFloat((BY_HOUR/Math.ceil(parameters.avgGenTime * Math.sqrt(1.066))).toFixed(2)));\n data.maxSpeeds = speeds.map(() => parseFloat((BY_HOUR/Math.floor(parameters.avgGenTime / Math.sqrt(1.066))).toFixed(2)));\n data.minDurations = speeds.map(() => parseFloat(((parameters.avgGenTime / 1.066)).toFixed(2)));\n data.maxDurations = speeds.map(() => parseFloat(((parameters.avgGenTime * 1.066)).toFixed(2)));\n data.difficulties = blocks.map((b) => b.powMin);\n\n let graphs = [];\n if ($scope.withTime) graphs.push(timeGraph);\n if ($scope.withSpeed) graphs.push(speedGraph);\n if ($scope.withDifficulty) graphs.push(diffGraph);\n for (let i = 0, len = graphs.length; i < len; i++) {\n graphs[i]();\n }\n $scope.loading = false;\n });\n };\n\n function timeGraph() {\n if ($scope.withTime) {\n Graph.timeGraphs('#timeGraph', Math.max(0, data.summary.current.number - $scope.blocksCount + 1), data.accelerations, data.medianTimeIncrements, data.actualDurations, data.minDurations, data.maxDurations);\n }\n }\n\n function speedGraph() {\n if ($scope.withSpeed) {\n Graph.speedGraph('#speedGraph', Math.max(0, data.summary.current.number - $scope.blocksCount), data.speeds, data.minSpeeds, data.maxSpeeds, (series) => {\n $scope.series = series;\n });\n }\n }\n\n function diffGraph() {\n if ($scope.withDifficulty) {\n Graph.difficultyGraph('#difficultyGraph', Math.max(0, data.summary.current.number - $scope.blocksCount), data.difficulties);\n }\n }\n\n return co(function *() {\n yield $scope.updateGraphs();\n $scope.withTime = true;\n $scope.withDifficulty = true;\n $scope.$apply();\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, UIUtils) => {\n\n UIUtils.enableTabs();\n\n $scope.$parent.menu = 'graphs';\n};\n","\"use strict\";\n\nmodule.exports = ($scope, UIUtils) => {\n\n UIUtils.enableTabs();\n\n $scope.$parent.menu = 'home';\n};\n","\"use strict\";\n\nmodule.exports = ($scope, BMA, peers, summary) => {\n\n $scope.peers = peers.peers;\n\n const co = require('co');\n\n $scope.update = () => co(function *() {\n $scope.searching = true;\n let delayP = Q.delay(500);\n $scope.peers = (yield BMA(summary.host).network.peers()).peers;\n yield delayP;\n $scope.searching = false;\n $scope.$apply();\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, $interval, BMA, Webmin, UIUtils, summary, ws) => {\n\n let co = require('co');\n let moment = require('moment');\n\n bindBlockWS(() => {\n $scope.loadPowData();\n });\n let M = summary.current.monetaryMass || 0;\n // const nbUDperYear = Math.ceil(365.25 * 3600 * 24 / summary.parameters.dt);\n // const globalC = Math.round(Math.pow(1 + summary.parameters.c, nbUDperYear) * 100) / 100 - 1;\n let UD = summary.parameters.ud0;\n if (summary.lastUDBlock) {\n const N = summary.current.membersCount;\n UD = parseInt((summary.lastUDBlock.dividend * Math.pow(10, summary.lastUDBlock.unitbase) + Math.pow(summary.parameters.c, 2) * M / N).toFixed(0));\n }\n $scope.current = summary.current;\n $scope.monetaryMass = parseInt(M / UD) || 0;\n $scope.server_started = true;\n $scope.server_stopped = false;\n $scope.phones = [];\n $scope.abc = 'abcdef';\n $scope.newIdentities = 2;\n\n $(\".dropdown-button\").dropdown({ constrainwidth: false });\n\n $scope.lastNearPoW = '';\n $scope.totalPoW = '...';\n $scope.sync_state = 'home.pulling.state.unkown';\n $scope.network_percent = 0;\n $scope.peer_percent = 0;\n $scope.has_pulled = false;\n $scope.is_pulling = false;\n $scope.last_pulling = 0;\n let start_block = 0;\n\n $interval(() => {\n if ($scope.last_pulling) {\n $scope.sync_state = $scope.is_pulling ? 'home.pulling.state.syncing' : 'home.pulling.state.synced';\n $scope.sync_time = moment($scope.last_pulling).fromNow();\n }\n }, 1000);\n\n $scope.loadPowData = () => co(function*() {\n let res = yield Webmin.powSummary();\n $scope.pow_total = res.total;\n $scope.pow_mirror = res.mirror;\n $scope.pow_waiting = res.waiting;\n });\n\n ws.on(undefined, (data) => {\n if (data.type === 'started') {\n $scope.server_started = true;\n $scope.server_stopped = false;\n bindBlockWS();\n UIUtils.toast('general.server.started');\n $scope.$apply();\n }\n if (data.type === 'stopped') {\n $scope.server_stopped = true;\n $scope.server_started = false;\n UIUtils.toast('general.server.stopped');\n $scope.$apply();\n }\n if (data.type === 'pulling') {\n $scope.is_pulling = true;\n $scope.has_pulled = true;\n const event = data.value;\n if (($scope.last_pulling && event.type === 'start') || (!$scope.last_pulling && event.type !== 'end')) {\n $scope.last_pulling = moment();\n }\n if (event.type === 'peer') {\n $scope.network_percent = parseInt((event.data.number + 1) / event.data.length * 100);\n $scope.peer_percent = 100;\n start_block = 0;\n }\n if (event.type === 'applying') {\n if (!start_block) {\n start_block = event.data.number;\n }\n const total = event.data.last - start_block;\n const doneCount = event.data.number - start_block;\n $scope.peer_percent = parseInt(doneCount / total * 100);\n }\n if (event.type === 'end') {\n $scope.is_pulling = false;\n $scope.network_percent = 0;\n $scope.peer_percent = 0;\n start_block = 0;\n }\n }\n if (data.type === 'pow') {\n const pow = data.value;\n if (pow.found) {\n $scope.pow_waiting = true;\n $scope.lastNearPoW = '#' + pow.hash;\n $scope.$apply();\n } else {\n $scope.pow_waiting = false;\n $scope.lastNearPoW = '#' + pow.hash;\n $scope.$apply();\n }\n }\n });\n\n function bindBlockWS(cb) {\n BMA(summary.host).websocket.block().on(undefined, (block) => {\n $scope.current_currency = block.currency;\n $scope.current_number = block.number;\n $scope.current_membersCount = block.membersCount;\n $scope.current_medianTime = block.medianTime;\n $scope.current_powMin = block.powMin;\n let M = summary.current.monetaryMass || 0;\n let UD = summary.parameters.ud0;\n if (summary.lastUDBlock) {\n const N = summary.current.membersCount;\n UD = parseInt((summary.lastUDBlock.dividend * Math.pow(10, summary.lastUDBlock.unitbase) + Math.pow(summary.parameters.c, 2) * M / N).toFixed(0));\n }\n $scope.monetaryMass = parseInt(M / UD) || 0;\n $scope.$apply();\n cb && cb();\n });\n }\n \n $scope.reconfigure_network = () => co(function *() {\n $scope.reconfiguring = true;\n let delay = Q.delay(1000);\n try {\n let netinferfaces = yield Webmin.network.interfaces();\n let conf = {};\n conf.local_ipv4 = netinferfaces.auto.local.ipv4 || '';\n conf.local_ipv6 = netinferfaces.auto.local.ipv6 || '';\n conf.remote_ipv4 = netinferfaces.auto.remote.ipv4 || '';\n conf.remote_ipv6 = netinferfaces.auto.remote.ipv6 || '';\n conf.lport = netinferfaces.auto.local.port || 9330;\n conf.rport = netinferfaces.auto.remote.port || 9330;\n conf.upnp = netinferfaces.auto.remote.upnp || false;\n conf.dns = netinferfaces.auto.remote.dns || '';\n yield Webmin.server.netConf({\n conf: conf\n });\n yield delay;\n $scope.should_reconfigure = false;\n UIUtils.toast('general.network.reconf_ok');\n $scope.$apply();\n } catch (e) {\n yield delay;\n $scope.reconfiguring = false;\n $scope.$apply();\n }\n });\n\n return co(function *() {\n yield $scope.startServer();\n try {\n yield $scope.loadPowData();\n const reachable = yield Webmin.isNodePubliclyReachable();\n if (!reachable || !reachable.success) {\n $scope.should_reconfigure = true;\n }\n } catch (e) {\n console.log(e);\n }\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $http, $state, $location, BMA, Webmin, UIUtils) => {\n\n UIUtils.enableTabs();\n\n $scope.$parent.conf = $scope.$parent.conf || {};\n $scope.$parent.menu = 'settings';\n\n $(\".dropdown-button\").dropdown({ constrainwidth: false });\n\n $scope.fullReset = () => co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n yield Webmin.server.resetData();\n $state.go('index');\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, Importer, Webmin) => {\n\n $scope.export_link = Webmin.getExportURL();\n\n Importer($scope);\n};\n","\"use strict\";\n\nconst co = require('co');\n\nmodule.exports = ($scope, $http, $state, $timeout, UIUtils, summary, Webmin) => {\n\n $scope.cpuPower = parseInt(summary.conf.cpu * 100);\n\n $scope.updateCPUpower = () => co(function *() {\n $scope.savingCPU = true;\n yield Webmin.server.cpuConf({\n cpu: parseFloat(($scope.cpuPower / 100).toFixed(2))\n });\n UIUtils.toast('settings.cpu.saved');\n $scope.savingCPU = false;\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, conf, UIUtils) => {\n\n $scope.$parent.conf = conf;\n\n UIUtils.enableInputs();\n $('input').attr('disabled', 'disabled');\n};\n","\"use strict\";\n\nvar co = require('co');\nvar Peer = require('js/lib/entity/peer');\n\nmodule.exports = ($scope, $http, $state, Webmin, peers) => {\n\n $scope.peers = peers.map((peer) => {\n let p = new Peer(peer);\n return {\n name: [p.getURL(), \"(\" + p.pubkey.slice(0, 6) + \")\"].join(' '),\n host_port: [p.getHost(), p.getPort()].join('|')\n }\n });\n\n $scope.resetNode = () => {\n $('#modalReset').openModal();\n };\n\n $scope.resetNodeAndSync = () => co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n yield Webmin.server.resetData();\n let sp = $scope.remote_host.split('|');\n $state.go('sync', {\n host: sp[0],\n port: sp[1],\n sync: true\n })\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $state, Webmin, summary, PubkeyGenerator) => {\n\n $scope.pubkey = summary.pubkey;\n\n setTimeout(() => {\n $('select').material_select();\n }, 500);\n\n $scope.accept = () => co(function *() {\n yield Webmin.server.keyConf({\n conf: $scope.$parent.conf\n });\n $scope.$parent.conf.idty_entropy = '';\n $scope.$parent.conf.idty_password = '';\n $state.reload();\n $scope.restartServer();\n });\n\n PubkeyGenerator($scope);\n};\n","\"use strict\";\n\nmodule.exports = ($scope, ws, UIUtils) => {\n\n UIUtils.enableTabs();\n\n let co = require('co');\n let _ = require('underscore');\n\n // Default values\n if (!localStorage.getItem('log_error')) localStorage.setItem('log_error', true);\n if (!localStorage.getItem('log_warn')) localStorage.setItem('log_warn', true);\n if (!localStorage.getItem('log_info')) localStorage.setItem('log_info', true);\n\n $scope.logsSize = parseInt(localStorage.getItem('log_size')) || 100;\n $scope.logs = _.range(0, $scope.logsSize).map(() => \"\");\n $scope.logsString = \"\";\n $scope.follow = true;\n $scope.levels = {\n error: localStorage.getItem('log_error') == \"true\",\n warn: localStorage.getItem('log_warn') == \"true\",\n info: localStorage.getItem('log_info') == \"true\",\n debug: localStorage.getItem('log_debug') == \"true\",\n trace: localStorage.getItem('log_trace') == \"true\"\n };\n\n _.keys($scope.levels).map((level) => {\n $scope.$watch('levels.' + level, (newValue) => {\n localStorage.setItem('log_' + level, newValue);\n $scope.logs.splice(0, $scope.logs.length);\n ws.send();\n });\n });\n\n $scope.$watch('logsSize', (newValue) => {\n localStorage.setItem('log_size', newValue);\n addLogs({ value: [] }, true);\n });\n\n ws.on('log', addLogs);\n\n function addLogs(res, autoDigest) {\n\n if (!$scope.pause) {\n let newlogs = _.filter(res.value, (log) => $scope.levels[log.level]);\n // Add at max LOGS_FLOW_SIZE new lines\n newlogs.splice(0, Math.max(0, newlogs.length - $scope.logsSize));\n // Add just enough space for incoming logs\n $scope.logs.splice(0, Math.max(0, $scope.logs.length + newlogs.length - $scope.logsSize));\n for (let i = 0, len = newlogs.length; i < len; i++) {\n let log = newlogs[i];\n $scope.logs.push(log);\n }\n if (!autoDigest) {\n $scope.$apply();\n }\n }\n\n if ($scope.follow) {\n var elem = document.getElementById('logs');\n if (elem) {\n elem.scrollTop = elem.scrollHeight;\n }\n }\n }\n\n return co(function *() {\n yield ws.whenOpened();\n ws.send();\n });\n};\n","\"use strict\";\n\nconst co = require('co');\n\nmodule.exports = ($scope, Webmin) => {\n \n $scope.generating = false;\n $scope.error = '';\n\n $scope.shareLogs = () => co(function*() {\n if (!$scope.generating) {\n try {\n $scope.error = '';\n $scope.generating = true;\n const res = yield Webmin.logsExport(2000);\n $scope.link = res.link;\n } catch (e) {\n $scope.error = (e && e.message) || e || 'Unknown error';\n }\n $scope.generating = false;\n }\n });\n};\n","\"use strict\";\n\nvar co = require('co');\nvar conf = require('js/lib/conf/conf');\n\nmodule.exports = ($scope, $http, $state, Webmin, UIUtils, netinterfaces, firstConf) => {\n\n let autoconf = netinterfaces.auto;\n\n $scope.autoconfig = () => {\n $scope.$parent.conf.local_ipv4 = autoconf.local.ipv4 || '';\n $scope.$parent.conf.local_ipv6 = autoconf.local.ipv6 || '';\n $scope.$parent.conf.remote_ipv4 = autoconf.remote.ipv4 || '';\n $scope.$parent.conf.remote_ipv6 = autoconf.remote.ipv6 || '';\n $scope.$parent.conf.lport = autoconf.local.port || $scope.$parent.conf.lport;\n $scope.$parent.conf.rport = autoconf.remote.port || $scope.$parent.conf.rport;\n $scope.$parent.conf.upnp = autoconf.remote.upnp || $scope.$parent.conf.upnp;\n $scope.$parent.conf.dns = autoconf.remote.dns || $scope.$parent.conf.dns;\n\n if (conf.dev_autoconf && firstConf) {\n $state.go('configure.create.root');\n }\n };\n\n $scope.local_neti = toArrayOfAddresses(netinterfaces.local);\n $scope.remote_neti = toArrayOfAddresses(netinterfaces.remote);\n\n $scope.$parent.conf = $scope.$parent.conf || {};\n $scope.$parent.conf.local_ipv4 = netinterfaces.conf.local.ipv4;\n $scope.$parent.conf.local_ipv6 = netinterfaces.conf.local.ipv6;\n $scope.$parent.conf.remote_ipv4 = netinterfaces.conf.remote.ipv4;\n $scope.$parent.conf.remote_ipv6 = netinterfaces.conf.remote.ipv6;\n $scope.$parent.conf.lport = netinterfaces.conf.local.port;\n $scope.$parent.conf.rport = netinterfaces.conf.remote.port;\n $scope.$parent.conf.upnp = netinterfaces.conf.remote.upnp;\n $scope.$parent.conf.dns = netinterfaces.conf.remote.dns;\n\n UIUtils.enableInputs();\n\n if (firstConf) {\n $scope.$parent.conf.lport = conf.default_port;\n $scope.$parent.conf.rport = conf.default_port;\n // Trigger autoconfig\n $scope.autoconfig();\n }\n\n $scope.saveConf = () => co(function *() {\n $scope.$parent.conf.lport = $scope.$parent.conf.rport;\n $scope.$parent.conf.remote_ipv6 = $scope.$parent.conf.local_ipv6;\n yield Webmin.server.netConf({\n conf: $scope.$parent.conf\n });\n UIUtils.toast('settings.network.saved');\n });\n};\n\nfunction toArrayOfAddresses(netiScope) {\n return netiScope.reduce(function(arr, neti) {\n return arr.concat(neti.addresses.map((addr) => {\n return {\n name: [neti.name, addr.address].join(' '),\n addr: addr.address,\n family: addr.family\n };\n }))\n }, []);\n}\n","module.exports = () => {\n require('./services/bma')(angular);\n require('./services/webmin')(angular);\n\n const duniterApp = angular.module('duniterUIApp', [\n 'ui.router',\n 'homeControllers',\n 'pascalprecht.translate'\n ]);\n\n duniterApp.config( [\n '$compileProvider', ($compileProvider) => $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|data):/)\n ]);\n\n require('./lib/conf/translate')(duniterApp);\n require('./lib/conf/routes')(duniterApp);\n require('js/services/datetime')(duniterApp);\n require('js/services/ui_utils')(duniterApp);\n require('js/services/graphs')(duniterApp);\n require('js/services/pubkeyGenerator')(duniterApp);\n require('js/services/importer')(duniterApp);\n require('js/services/base58')(duniterApp);\n\n window.duniterChildCallback = function(gui) {\n window.gui = gui;\n };\n\n window.onresize = () => {\n window.onResize && window.onResize(window);\n };\n\n window.openWindow = function openWindow(url, options, callback) {\n if (window.gui) {\n // Duniter Desktop\n window.gui.Window.open(url, options, callback);\n } else {\n // Browser\n let innerHeight = options.height || 375;\n let innerWidth = options.width || 500;\n window.open(url, '_blank ', [\n 'top=' + (window.screenTop + (options.top || 200)),\n 'left=' + (window.screenLeft + (options.left || 200)),\n 'height=' + (innerHeight + 8),\n 'width=' + (innerWidth + 16),\n 'menubar=no',\n 'status=no'\n ].join(','));\n }\n };\n\n window.openNewTab = function openWindow(url, options, callback) {\n if (window.gui) {\n // Duniter Desktop\n window.gui.Window.open(url, options, callback);\n } else {\n // Browser\n window.open(url, '_blank ');\n }\n };\n\n window.openExternal = function openExternal(url) {\n if (window.gui) {\n window.gui.Shell.openExternal(url);\n } else {\n window.open(url, '_blank');\n }\n };\n\n let homeControllers = angular.module('homeControllers', ['duniter.services.bma', 'duniter.services.webmin', 'ngFileUpload']);\n\n homeControllers.controller('IndexController', require('./controllers/IndexController'));\n homeControllers.controller('AboutController', require('./controllers/AboutController'));\n homeControllers.controller('IdentityController', require('./controllers/init/create/IdentityController'));\n homeControllers.controller('ParametersController', require('./controllers/init/create/ParametersController'));\n homeControllers.controller('RootBlockController', require('./controllers/init/create/RootBlockController'));\n homeControllers.controller('SyncController', require('./controllers/init/sync/SyncController'));\n homeControllers.controller('MainController', require('./controllers/main/MainController'));\n homeControllers.controller('HomeController', require('./controllers/main/home/HomeController'));\n homeControllers.controller('OverviewController', require('./controllers/main/home/tabs/OverviewController'));\n homeControllers.controller('HomeNetworkController', require('./controllers/main/home/tabs/HomeNetworkController'));\n homeControllers.controller('LogsController', require('./controllers/main/settings/tabs/LogsController'));\n homeControllers.controller('LogsSettingsController', require('./controllers/main/settings/tabs/LogsSettingsController'));\n homeControllers.controller('NetworkController', require('./controllers/main/settings/tabs/NetworkController'));\n homeControllers.controller('SettingsController', require('./controllers/main/settings/SettingsController'));\n homeControllers.controller('DataController', require('./controllers/main/settings/tabs/DataController'));\n homeControllers.controller('BackupController', require('./controllers/main/settings/tabs/BackupController'));\n homeControllers.controller('CPUController', require('./controllers/main/settings/tabs/CPUController'));\n homeControllers.controller('CurrencyController', require('./controllers/main/settings/tabs/CurrencyController'));\n homeControllers.controller('KeyController', require('./controllers/main/settings/tabs/KeyController'));\n homeControllers.controller('GraphsController', require('./controllers/main/graphs/GraphsController'));\n homeControllers.controller('GraphsBlockchainController', require('./controllers/main/graphs/GraphsBlockchainController'));\n};\n","\"use strict\";\n\nmodule.exports = {\n\n init: () => {\n\n // Hack since Node v5\n try {\n window.jade = require('jade' + '/' + 'runtime');\n } catch (e) {\n }\n\n console.log('Configuring Angular app...');\n\n require('./app.config')();\n\n console.log('App initialized.');\n }\n};\n","module.exports = {\n server: \"\", // Empty server will use the browser current host\n port: \"\", // Empty port will use the browser current port\n default_port: 9220,\n dev_autoconf: false,\n api_timeout: 10000 // 10 sec timeout\n};\n","module.exports = {\n \"top.menu.overview\": \"Home\",\n \"top.menu.data\": \"Explore\",\n \"top.menu.settings\": \"Settings\",\n \"top.menu.wallet\": \"Wallet\",\n \"general.server.started\": \"Server started\",\n \"general.server.stopped\": \"Server stopped\",\n \"general.choose_option\": \"Choose your option\",\n \"general.network.reconf_ok\": \"Reconfiguration success\",\n \"global.button.validate\": \"Validate\",\n \"global.button.start\": \"Start\",\n \"err.unknown\": \"Unknown error\",\n \"err.connection\": \"Could not connect to node\",\n \"err.back_index\": \"Get back to previous screen\",\n \"err.sync.interrupted\": \"Sync interrupted because the following error occured:\",\n \"index.message.loading\": \"Loading...\",\n \"crypto.secret_key\": \"Secret key\",\n \"index.message.current_block\": \"Current block {{ number }}\",\n \"configuration.init.choose.title\": \"Initialization\",\n \"configuration.init.choose.message\": \"Your software has to be initialized. You may either create a new currency or connect to an existing one.\",\n \"configuration.init.choose.create\": \"Create a new currency\",\n \"configuration.init.choose.connect\": \"Connect to an existing currency\",\n \"configuration.init.choose.import\": \"Import from a backup file\",\n \"configuration.create_currency.cancel\": \"Cancel & go home\",\n \"configuration.create_uid.title\": \"Your identity\",\n \"configuration.create_uid.message\": \"As a first step, you need to define your personal, unique identity.<br/>The following informations will be <strong>definitive</strong> for this currency: please choose them carefully.\",\n \"configuration.create_uid.uid.tooltip\": \"The name you will be known as.\",\n \"configuration.create_uid.entropy.tooltip\": \"An entropy source to make your key unique: an e-mail, a phone n°, ...\",\n \"configuration.create_uid.password.tooltip\": \"A secret password to protect your key.\",\n \"configuration.create_uid.create_button\": \"Continue\",\n \"configuration.create_uid.preview_button\": \"Preview pubkey\",\n \"configuration.create_uid.nrp_algo_choose\": \"NRP algorithm\",\n \"configuration.create_uid.nrp_algo_choose_1\": \"N = 4096 ; r = 16 ; p = 1\",\n \"configuration.create_uid.modal_title\": \"Identity confirmation\",\n \"configuration.create_uid.modal_message\": \"This identity will be definitive for this currency: you will be known by your User ID and will be able to access your account using your Secret Key and Password values.\",\n \"configuration.create_uid.modal_agree\": \"Agree\",\n \"configuration.create_uid.modal_disagree\": \"Disagree\",\n \"configuration.create_uid.modal_preview_title\": \"Preview of pubkey\",\n \"configuration.create_uid.modal_preview_ok\": \"OK\",\n \"configuration.create_network.title\": \"Network\",\n \"configuration.create_network.message\": \"uCoin is a P2P software and needs bidirectionnal access to the network. Please chose carefully the following parameters.\",\n \"configuration.create_network.none\": \"None\",\n \"configuration.create_network.ipv4.title\": \"IPv4\",\n \"configuration.create_network.ipv6.title\": \"IPv6\",\n \"configuration.create_network.ipv4.message\": \"For compatibilty reasons, you may prefer to use classic IPv4 interfaces. The configuration is more complicated.\",\n \"configuration.create_network.local_ipv4\": \"Private (computer)\",\n \"configuration.create_network.remote_ipv4\": \"Public (box/router)\",\n \"configuration.create_network.local_ipv6\": \"IPv6\",\n \"configuration.create_network.port\": \"Port\",\n \"configuration.create_network.port.title\": \"Port\",\n \"configuration.create_network.ipv6.message\": \"IPv6 gives your computer a unique, direct address to your node over the Internet. This is the <b>recommended way</b> to connect your node to the network.\",\n \"configuration.create_network.port.message\": \"Wether you use IPv6 or IPv4, Duniter node will use this port number for connection to the network. With IPv4, this number will be used for both private and public interfaces.\",\n \"configuration.create_network.dns.title\": \"Domain name\",\n \"configuration.create_network.dns\": \"Domain name\",\n \"configuration.create_network.dns.message\": \"IPv6 (AAAA) and IPv4 (A) DNS records will be used.\",\n \"configuration.create_network.upnp\": \"Use UPnP\",\n \"configuration.create_network.button.validate\": \"Continue\",\n \"configuration.create_network.button.autoconf\": \"Automatic configuration\",\n \"configuration.create_parameters.title\": \"Currency\",\n \"configuration.create_parameters.message\": \"Initial parameters of the currency. It should be carefully chosen, as these parameters never change once the currency is started.\",\n \"configuration.create_parameters.currency.title\": \"Money units\",\n \"configuration.create_parameters.currency.message\": \"Give a name to your currency. The 3 following parameters configure the way new money units are created.\",\n \"configuration.create_parameters.currency\": \"Currency name\",\n \"configuration.create_parameters.c\": \"c\",\n \"configuration.create_parameters.dt\": \"UD period\",\n \"configuration.create_parameters.ud0\": \"UD(0)\",\n \"configuration.create_parameters.button.validate\": \"Continue\",\n \"configuration.create_parameters.wot.title\": \"Web of Trust\",\n \"configuration.create_parameters.wot.message\": \"The following parameters deal with identities and their links gathered in the Web of Trust concept.\",\n \"configuration.create_parameters.sigStock\": \"Max cert stock\",\n \"configuration.create_parameters.sigPeriod\": \"Delay between 2 certs\",\n \"configuration.create_parameters.sigValidity\": \"Cert expiry delay\",\n \"configuration.create_parameters.msValidity\": \"Membership expiry delay\",\n \"configuration.create_parameters.sigQty\": \"Min required certs\",\n \"configuration.create_parameters.sigWindow\": \"Cert time window\",\n \"configuration.create_parameters.stepMax\": \"Max distance\",\n \"configuration.create_parameters.xpercent\": \"Percent of distance\",\n \"configuration.create_parameters.blockchain.title\": \"Blockchain\",\n \"configuration.create_parameters.blockchain.message\": \"The technical support of money and identities is the blockchain. It also has some parameters driving its behavior.\",\n \"configuration.create_parameters.medianTimeBlocks\": \"Blocks count\",\n \"configuration.create_parameters.avgGenTime\": \"Block gen. duration\",\n \"configuration.create_parameters.dtDiffEval\": \"Blocks count for diff.\",\n \"configuration.create_parameters.blocksRot\": \"Personal diff. blocks\",\n \"configuration.create_parameters.percentRot\": \"Personal diff. rotation\",\n \"configuration.create_root.title\": \"Root block creation\",\n \"configuration.create_root.message\": \"This is the final step to create the new currency! The root block or <i>genesis</i> will include the first members and define the currency parameters. Once generated and submitted, the blockchain will be started.\",\n \"configuration.create_root.button.start\": \"Start HTTP\",\n \"configuration.create_root.button.stop\": \"Stop HTTP\",\n \"configuration.create_root.button.generate\": \"Give a try\",\n \"configuration.create_root.need_a_try\": \"You need to generate a first block with the « Give a try » button. Start HTTP server to do so.\",\n \"configuration.create_root.button.accept_and_send\": \"Accept this block and start currency\",\n \"configuration.create_root.button.cancel\": \"Cancel creation and go to home screen\",\n \"configuration.create_root.host_listening\": \"Host listening at:\",\n \"configuration.create_uid.pubkey_preview\": \"Public key preview\",\n \"home.current.number\": \"Current block #\",\n \"home.current.membersCount\": \"Members count\",\n \"home.current.medianTime\": \"Median time\",\n \"home.current.powMin\": \"Common difficulty level\",\n \"home.current.mmass\": \"Monetary mass\",\n \"home.pulling.network\": \"Network\",\n \"home.pulling.peer\": \"Peer\",\n \"home.pulling.state.unkown\": \"Next sync in few minutes\",\n \"home.pulling.state.synced\": \"Synced\",\n \"home.pulling.state.syncing\": \"Syncing...\",\n \"home.pow.unit\": \"blocks made by this key\",\n \"home.pow.is_mirror\": \"This node is a mirror\",\n \"home.pow.is_waiting\": \"Waiting for better proof conditions\",\n \"home.tabs.overview\": \"Overview\",\n \"home.tabs.overview.should_reconfigure\": \"Your configuration has changed and your node is no more reachable from the network. You should reconfigure it to have a functional node. If this message appears again, you should manually configure the network settings. Often, selecting only IPv6 interface (disabling IPv4) solves the problem.\",\n \"home.tabs.network\": \"Peers\",\n \"home.tabs.network.button.update\": \"Check peers again\",\n \"home.tabs.logs\": \"Logs\",\n \"home.tabs.logs.follow.logs\": \"Follow logs\",\n \"home.tabs.logs.pause.logs\": \"Pause logs\",\n \"home.tabs.logs.level.error\": \"Error\",\n \"home.tabs.logs.level.warn\": \"Warning\",\n \"home.tabs.logs.level.info\": \"Info\",\n \"home.tabs.logs.level.debug\": \"Debug\",\n \"home.tabs.logs.level.trace\": \"Trace\",\n \"sync.title\": \"Synchronize\",\n \"sync.message\": \"Your node will be synchronized with an existing currency: just enter technical details about a node to sync with it.\",\n \"sync.host\": \"Host\",\n \"sync.port\": \"Port\",\n \"sync.check\": \"Check node\",\n \"sync.start\": \"Synchronize with this node\",\n \"sync.failed\": \"Synchronization failed.\",\n \"sync.mode.simplified\": \"Simplified mode\",\n \"sync.mode.manual\": \"Manual mode\",\n \"sync.simplified.choose\": \"Node to connect to\",\n \"sync.simplified.default_option\": \"Please select a node to continue\",\n \"sync.simplified.currency\": \"Currency\",\n \"sync.simplified.main_mirror\": \"(main mirror)\",\n \"sync.simplified.official_mirror\": \"(other official mirror)\",\n \"sync.ready.node.part1\": \"This node is available!\",\n \"sync.ready.node.part2\": \"Click on the green button to proceed.\",\n \"sync.started.node\": \"Synchronization started on node:\",\n \"sync.error.unreachable.try.another.node\": \"This node is not available. Please select another one.\",\n \"home.menu.server.stop\": \"Stop server\",\n \"home.menu.server.start\": \"Start server\",\n \"home.menu.server.restart\": \"Restart server\",\n \"home.state\": \"Server:\",\n \"home.state.started\": \"STARTED\",\n \"home.state.stopped\": \"STOPPED\",\n \"settings.tabs.logs\": \"Logs\",\n \"settings.tabs.data\": \"Data\",\n \"settings.tabs.backup\": \"Backup\",\n \"settings.tabs.identity\": \"Crypto\",\n \"settings.tabs.network\": \"Network\",\n \"settings.tabs.currency\": \"Currency\",\n \"settings.tabs.cpu\": \"CPU\",\n \"settings.data.reset.title\": \"Reset this node\",\n \"settings.data.reset.message\": \"If you desire to reset this node's data and sync it again with the network, please select a node to sync against and validate.\",\n \"settings.data.reset.warning\": \"This process <strong>will not</strong> reset the node identity and network settings, which will be reused.\",\n \"settings.data.reset.peer.none_option\": \"Select a node\",\n \"settings.data.reset.peer.label\": \"Synchronization peer\",\n \"settings.data.reset.button\": \"Full reset of the node\",\n \"settings.data.reset_sync.button\": \"Reset data and start sync\",\n \"settings.logs.title\": \"Logs\",\n \"settings.logs.consult.message\": \"Your node continually generates information messages in a log file. This information may help you understand what your node <i>is doing</i> or what it <i>has done</i> few times ago.\",\n \"settings.logs.consult.button\": \"View real-time logs\",\n \"settings.logs.share.message\": \"You may want to <b>share your logs</b> with other people, sometimes to get help or to add informations in a bug tracker. Clicking on below button will extract the last 2000 lines of your logs and push it on the web, returning you a link to be shared with whoever you want.\",\n \"settings.logs.share.button\": \"Create a web link to your logs\",\n \"settings.logs.share.generating\": \"Generating your link...\",\n \"settings.logs.share.error\": \"An error occurred during the generation of your link:\",\n \"settings.data.backup.title\": \"Backup\",\n \"settings.data.backup.message\": \"You can create backups of your node's data and restore them using the buttons below.\",\n \"settings.data.backup.warning\": \"<b>Export</b> will only backup your node's data, which <i>excludes your secret key and configuration details</i>.<br><b>Import</b> will reset your node's data by applying the backup. Your secret keys and configuration remains untouched.\",\n \"settings.data.backup.button.export\": \"Create a data backup\",\n \"settings.data.backup.button.import\": \"Import a data backup\",\n \"settings.data.backup.importing\": \"Importing data...\",\n \"settings.data.backup.imported\": \"Import successfull!\",\n \"settings.network.button.validate\": \"Save and apply network settings\",\n \"settings.network.saved\": \"Configuration saved and applied successfully\",\n \"settings.key.title\": \"Public key of this node:\",\n \"settings.key.button.validate\": \"Save and use this key\",\n \"settings.key.button.change\": \"Change keyring\",\n \"settings.key.pubkey.description\": \"This public key is the public part of your keyring, which is composed of a public key and a private key. This public key is shared with all the peers of the network and users of the currency, while your private key is secretely kept and used by this node to process operations on the network.\",\n \"settings.data.modal_title\": \"Confirm full reset\",\n \"settings.data.modal_message\": \"This action will completely reset the data of your node and redirect you to initial configuration screen. Do you confirm?\",\n \"settings.data.modal_disagree\": \"No, cancel this\",\n \"settings.data.modal_agree\": \"Yes, process the reset\",\n \"settings.data.reset.experimental\": \"This functionality is still considered experimental. If you encounters strange behaviors, please stop the software and reset manually your node by removing all the files BUT conf.json under ~/.config/ucoin/ucoin_default, and restart the software.\",\n \"settings.cpu.title\": \"CPU settings\",\n \"settings.cpu.message\": \"You can adjust the CPU power dedicated to proof-of-work computation. The higher the value, the faster is your node, the higher the chances you have to compute a block early.\",\n \"settings.cpu.warning\": \"<b>Up to 8 cores</b> of your machine are dedicated to proof-of-work computation currently. Also, setting CPU to 100% does not mean Duniter will use 100% of each core, but will use as much as possible each of them, as a core is also shared with other programs.\",\n \"settings.cpu.range\": \"% of CPU power core dedicated to proof-of-work :\",\n \"settings.cpu.power\": \"Core power:\",\n \"settings.cpu.saved\": \"CPU settings saved.\",\n \"graphs.tabs.blockchain\": \"Blockchain\",\n \"graphs.tabs.currency\": \"Currency\",\n \"graphs.blockchain.range\": \"Graphs for the last X blocks: (please choose X value)\",\n \"graphs.blockchain.with.time\": \"Time variations graph\",\n \"graphs.blockchain.with.speed\": \"Writing speed graph\",\n \"graphs.blockchain.with.difficulty\": \"Difficulty graph\",\n \"help.about_duniter\": \"About Duniter\",\n \"help.about_duniter.title\": \"About\",\n \"help.about_duniter.subtitle\": \"Duniter Desktop\",\n \"help.about_duniter.version\": \"Version: \",\n \"help.about_duniter.forum\": \"Forum\",\n \"help.about_duniter.chat\": \"Chat\",\n \"help.new_version_available\": \"New version available\"\n}\n;","var co = require('co');\nvar _ = require('underscore');\n\nmodule.exports = (app) => {\n\n app.config(['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) => {\n\n // States\n $stateProvider.\n state('index', {\n url: '/',\n template: require('views/index'),\n resolve: {\n ws: (Webmin) => Webmin.ws(),\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'IndexController'\n }).\n\n state('about', {\n url: '/about',\n template: require('views/about'),\n resolve: {\n summary: (Webmin) => Webmin.summary(),\n version: (summary) => summary && 'v' + summary.version || 'unknown version'\n },\n controller: 'AboutController'\n }).\n\n state('configure', {\n abstract: true,\n url: '/configure',\n template: require('views/init/layout'),\n controller: ($scope) => {\n $scope.conf = {\n currency: 'super_currency',\n c: 0.007376575,\n dt: 30.4375 * 24 * 3600,\n ud0: 100,\n stepMax: 3,\n sigDelay: 3600 * 24 * 365 * 5,\n sigPeriod: 0, // Instant\n sigStock: 40,\n sigWindow: 3600 * 24 * 14, // 2 weeks\n sigValidity: 3600 * 24 * 365,\n msValidity: 3600 * 24 * 365,\n sigQty: 0,\n xpercent: 0.9,\n percentRot: 0.66,\n blocksRot: 20,\n avgGenTime: 16 * 60,\n dtDiffEval: 10,\n medianTimeBlocks: 20\n };\n }\n }).\n\n state('configure.choose', {\n url: '/choose',\n template: require('views/init/choose'),\n controller: ($scope, Importer) => {\n Importer($scope);\n }\n }).\n\n state('configure.create', {\n url: '/create',\n template: '<div class=\"ui-scrollable\" ui-view=\"\"></div>'\n }).\n\n state('configure.create.uid', {\n url: '/create/uid',\n template: require('views/init/create/create_uid'),\n controller: 'IdentityController'\n }).\n\n state('configure.create.network', {\n url: '/create/network',\n template: require('views/init/create/create_network'),\n resolve: {\n netinterfaces: (Webmin) => resolveNetworkAutoConf(Webmin),\n firstConf: () => true\n },\n controller: 'NetworkController'\n }).\n\n state('configure.create.parameters', {\n url: '/create/parameters',\n template: require('views/init/create/create_parameters'),\n controller: 'ParametersController'\n }).\n\n state('configure.create.root', {\n url: '/create/root',\n template: require('views/init/create/create_root'),\n controller: 'RootBlockController'\n }).\n\n state('sync', {\n url: '/sync?host=&port=&sync=&to=',\n template: require('views/init/sync/sync'),\n controller: 'SyncController'\n }).\n\n state('main', {\n abstract: true,\n url: '/main',\n template: require('views/main/main'),\n resolve: {\n ws: (Webmin) => Webmin.ws(),\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'MainController'\n }).\n\n state('main.home', {\n abstract: true,\n url: '/home',\n template: require('views/main/home/home'),\n controller: 'HomeController'\n }).\n\n state('main.home.overview', {\n url: '/overview',\n template: require('views/main/home/tabs/overview'),\n resolve: {\n startHttp: (Webmin) => Webmin.server.http.start()\n },\n controller: 'OverviewController'\n }).\n\n state('main.home.network', {\n url: '/network',\n template: require('views/main/home/tabs/network'),\n resolve: {\n peers: (Webmin, BMA) => co(function *() {\n const summary = yield Webmin.summary();\n return BMA(summary.host).network.peers();\n })\n },\n controller: 'HomeNetworkController'\n }).\n\n state('main.settings', {\n abstract: true,\n url: '/settings',\n template: require('views/main/settings/settings'),\n resolve: {\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'SettingsController'\n }).\n\n state('main.settings.data', {\n url: '/data',\n template: require('views/main/settings/tabs/data'),\n resolve: {\n peers: (Webmin, BMA) => co(function *() {\n try {\n const summary = yield Webmin.summary();\n let self = yield BMA(summary.host).network.peering.self();\n let res = yield BMA(summary.host).network.peers();\n return _.filter(res.peers, (p) => p.pubkey != self.pubkey && p.status == 'UP');\n } catch (e) {\n console.error(e);\n return [];\n }\n })\n },\n controller: 'DataController'\n }).\n\n state('main.settings.logs', {\n url: '/logs',\n template: require('views/main/settings/tabs/logs'),\n controller: 'LogsSettingsController'\n }).\n\n state('main.settings.backup', {\n url: '/backup',\n template: require('views/main/settings/tabs/backup'),\n controller: 'BackupController'\n }).\n\n state('main.settings.cpu', {\n url: '/cpu',\n template: require('views/main/settings/tabs/cpu'),\n resolve: {\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'CPUController'\n }).\n\n state('main.settings.crypto', {\n url: '/crypto',\n template: require('views/main/settings/tabs/crypto'),\n controller: 'KeyController'\n }).\n\n state('main.settings.network', {\n url: '/network',\n resolve: {\n netinterfaces: (Webmin) => resolveNetworkAutoConf(Webmin),\n firstConf: () => false\n },\n template: require('views/main/settings/tabs/network'),\n controller: 'NetworkController'\n }).\n\n state('main.settings.currency', {\n url: '/currency',\n resolve: {\n conf: (summary) => co(function *() {\n return summary.parameters;\n })\n },\n template: require('views/main/settings/tabs/currency'),\n controller: 'CurrencyController'\n }).\n\n state('main.graphs', {\n abstract: true,\n url: '/graphs',\n template: require('views/main/graphs/graphs'),\n controller: 'GraphsController'\n }).\n\n state('main.graphs.blockchain', {\n url: '/blockchain',\n template: require('views/main/graphs/blockchain'),\n controller: 'GraphsBlockchainController'\n }).\n\n //state('graphs.crypto', {\n // url: '/crypto',\n // template: require('views/graphs/crypto'),\n // controller: 'KeyController'\n //}).\n //\n //state('graphs.network', {\n // url: '/network',\n // resolve: {\n // netinterfaces: (Webmin) => resolveNetworkAutoConf(Webmin),\n // firstConf: () => false\n // },\n // template: require('views/graphs/network'),\n // controller: 'NetworkController'\n //}).\n //\n //state('graphs.currency', {\n // url: '/currency',\n // resolve: {\n // conf: (bmapi) => co(function *() {\n // return bmapi.currency.parameters();\n // })\n // },\n // template: require('views/graphs/currency'),\n // controller: 'CurrencyController'\n //}).\n\n state('logs', {\n url: '/logs',\n template: require('views/logs'),\n resolve: {\n ws: (Webmin) => Webmin.ws()\n },\n controller: 'LogsController'\n }).\n\n state('error', {\n url: '/error\\?err',\n template: require('views/error'),\n controller: ($scope, $stateParams) =>\n $scope.errorMsg = $stateParams.err || 'err.unknown'\n });\n\n // Default route\n $urlRouterProvider.otherwise('/');\n }]);\n\n app.run(($rootScope, $state) => {\n $rootScope.$on('$stateChangeError', (event, toState, toParams, fromState, fromParams, error) => {\n console.error(error);\n $state.go('error', { err: error.message });\n });\n });\n\n function resolveNetworkAutoConf(Webmin) {\n return co(function *() {\n let netinterfaces = yield Webmin.network.interfaces();\n return netinterfaces || { local: {}, remote: {} };\n });\n }\n};\n","module.exports = (app) => {\n\n app.config(['$translateProvider', ($translateProvider) => {\n\n $translateProvider.translations('en', require('./i18n/en'));\n\n // Default language\n $translateProvider.preferredLanguage('en');\n\n // Other parameters\n $translateProvider.useSanitizeValueStrategy('');\n }]);\n};\n","\nmodule.exports = function Peer(json) {\n\n var that = this;\n\n var BMA_REGEXP = /^BASIC_MERKLED_API( ([a-z_][a-z0-9-_.]*))?( ([0-9.]+))?( ([0-9a-f:]+))?( ([0-9]+))$/;\n\n Object.keys(json).forEach(function(key) {\n that[key] = json[key];\n });\n\n that.endpoints = that.endpoints || [];\n that.statusTS = that.statusTS || 0;\n\n that.keyID = function () {\n return that.pubkey && that.pubkey.length > 10 ? that.pubkey.substring(0, 10) : \"Unknown\";\n };\n\n that.copyValues = function(to) {\n var obj = that;\n [\"version\", \"currency\", \"pub\", \"endpoints\", \"hash\", \"status\", \"statusTS\", \"block\", \"signature\"].forEach(function (key) {\n to[key] = obj[key];\n });\n };\n\n that.copyValuesFrom = function(from) {\n var obj = that;\n [\"version\", \"currency\", \"pub\", \"endpoints\", \"block\", \"signature\"].forEach(function (key) {\n obj[key] = from[key];\n });\n };\n\n that.json = function() {\n var obj = that;\n var json = {};\n [\"version\", \"currency\", \"endpoints\", \"status\", \"block\", \"signature\"].forEach(function (key) {\n json[key] = obj[key];\n });\n json.raw = that.getRaw();\n json.pubkey = that.pubkey;\n return json;\n };\n\n that.getBMA = function() {\n var bma = null;\n that.endpoints.forEach(function(ep){\n var matches = !bma && ep.match(BMA_REGEXP);\n if (matches) {\n bma = {\n \"dns\": matches[2] || '',\n \"ipv4\": matches[4] || '',\n \"ipv6\": matches[6] || '',\n \"port\": matches[8] || 9101\n };\n }\n });\n return bma || {};\n };\n\n that.getDns = function() {\n var bma = that.getBMA();\n return bma.dns ? bma.dns : null;\n };\n\n that.getIPv4 = function() {\n var bma = that.getBMA();\n return bma.ipv4 ? bma.ipv4 : null;\n };\n\n that.getIPv6 = function() {\n var bma = that.getBMA();\n return bma.ipv6 ? bma.ipv6 : null;\n };\n\n that.getPort = function() {\n var bma = that.getBMA();\n return bma.port ? bma.port : null;\n };\n\n that.getHost = function() {\n var bma = that.getBMA();\n var host =\n (that.hasValid4(bma) ? bma.ipv4 :\n (bma.dns ? bma.dns :\n (bma.ipv6 ? '[' + bma.ipv6 + ']' : '')));\n return host;\n };\n\n that.getURL = function() {\n var bma = that.getBMA();\n var base =\n (that.hasValid4(bma) ? bma.ipv4 :\n (bma.dns ? bma.dns :\n (bma.ipv6 ? '[' + bma.ipv6 + ']' : '')));\n if(bma.port)\n base += ':' + bma.port;\n return base;\n };\n\n that.hasValid4 = function(bma) {\n return bma.ipv4 && !bma.ipv4.match(/^127.0/) && !bma.ipv4.match(/^192.168/) ? true : false;\n };\n\n that.getNamedURL = function() {\n var bma = that.getBMA();\n var base =\n (that.hasValid4(bma) ? bma.ipv4 :\n (bma.dns ? bma.dns :\n (bma.ipv6 ? '[' + bma.ipv6 + ']' : '')));\n if(bma.port)\n base += ':' + bma.port;\n return base;\n };\n\n that.isReachable = function () {\n return that.getURL() ? true : false;\n };\n};\n","module.exports = function mobilecheck() {\n var check = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\n return check;\n};\n","module.exports = (app) => {\n\n let Base58 = {};\n\n Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n Base58.alphabetMap = {};\n\n for(let i = 0; i < Base58.alphabet.length; i++) {\n Base58.alphabetMap[Base58.alphabet.charAt(i)] = i\n }\n\n Base58.encode = function(buffer) {\n if (buffer.length === 0) return '';\n\n let i, j, digits = [0];\n for (i = 0; i < buffer.length; i++) {\n for (j = 0; j < digits.length; j++) digits[j] <<= 8\n digits[digits.length - 1] += buffer[i];\n\n let carry = 0;\n for (j = digits.length - 1; j >= 0; j--){\n digits[j] += carry;\n carry = (digits[j] / 58) | 0;\n digits[j] %= 58\n }\n\n while (carry) {\n digits.unshift(carry);\n carry = (digits[0] / 58) | 0;\n digits[0] %= 58\n }\n }\n\n // deal with leading zeros\n for (i = 0; i < buffer.length - 1 && buffer[i] == 0; i++) digits.unshift(0)\n\n return digits.map(function(digit) { return Base58.alphabet[digit] }).join('')\n };\n\n Base58.decode = function(string) {\n if (string.length === 0) return (new Uint8Array());\n\n let input = string.split('').map(function(c){\n return Base58.alphabetMap[c]\n });\n\n let i, j, bytes = [0];\n for (i = 0; i < input.length; i++) {\n for (j = 0; j < bytes.length; j++) bytes[j] *= 58\n bytes[bytes.length - 1] += input[i];\n\n let carry = 0;\n for (j = bytes.length - 1; j >= 0; j--){\n bytes[j] += carry;\n carry = bytes[j] >> 8;\n bytes[j] &= 0xff\n }\n\n while (carry) {\n bytes.unshift(carry);\n carry = bytes[0] >> 8;\n bytes[0] &= 0xff\n }\n }\n\n // deal with leading zeros\n for (i = 0; i < input.length - 1 && input[i] == 0; i++) bytes.unshift(0)\n return (new Uint8Array(bytes))\n };\n\n app.factory('Base58', function() {\n return {\n encode: Base58.encode,\n decode: Base58.decode\n };\n });\n};\n","const co = require('co');\nconst _ = require('underscore');\nconst conf = require('../lib/conf/conf');\n\nmodule.exports = (angular) => {\n\n angular.module('duniter.services.bma', ['ngResource'])\n\n .factory('BMA', function($http, $q) {\n function httpProtocol() {\n return window.location.protocol + '//';\n }\n\n function wsProtocol() {\n return window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n }\n\n function BMA(host) {\n function getResource(uri, protocol) {\n return function (params) {\n return $q.when(httpGet(uri, params, protocol));\n }\n }\n\n function httpGet(uri, params, protocol) {\n return Q.Promise((resolve, reject) => {\n var config = {\n timeout: conf.api_timeout\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function (pkey) {\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n const url = (protocol || httpProtocol()) + host + uri + suffix;\n $http.get(url, config)\n .success(function (data, status, headers, config) {\n resolve(data);\n })\n .error(function (data, status, headers, config) {\n console.log(data);\n reject(data);\n });\n });\n }\n\n function postResource(uri) {\n return function (data, params) {\n return $q.when(Q.Promise((resolve, reject) => {\n var config = {\n timeout: 4000\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function (pkey) {\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n const url = httpProtocol() + host + uri + suffix;\n $http.post(url, data, config)\n .success(function (data, status, headers, config) {\n resolve(data);\n })\n .error(function (data, status, headers, config) {\n reject(data);\n });\n }));\n }\n }\n\n function bmaGET(uri) {\n return getResource('' + uri);\n }\n\n function bmaPOST(uri) {\n return postResource('' + uri);\n }\n\n function bmaWS(uri) {\n return ws(wsProtocol() + host + '' + uri);\n }\n\n let wsMap = {};\n\n function ws(uri) {\n var sock = wsMap[uri] || new WebSocket(uri);\n wsMap[uri] = sock;\n sock.onclose = function (e) {\n console.log('close');\n console.log(e);\n };\n sock.onerror = function (e) {\n console.log('onerror');\n console.log(e);\n };\n let opened = false, openedCallback;\n sock.onopen = function () {\n opened = true;\n openedCallback && openedCallback();\n };\n let listener, messageType;\n sock.onmessage = function (e) {\n let res = JSON.parse(e.data);\n if (res.type == 'log') {\n for (let i = 0, len = res.value.length; i < len; i++) {\n let log = res.value[i];\n // console[log.level](log.msg);\n }\n }\n if (listener && (messageType === undefined || (res.type === messageType))) {\n listener(res);\n }\n };\n return {\n on: function (type, callback) {\n messageType = type;\n listener = callback;\n },\n whenOpened: () => co(function *() {\n if (opened) return true;\n else {\n yield Q.Promise((resolve) => {\n openedCallback = resolve;\n });\n }\n }),\n send: (msg) => sock.send(msg)\n };\n }\n\n return {\n node: {\n summary: bmaGET('/node/summary')\n },\n wot: {\n lookup: bmaGET('/wot/lookup/:search'),\n members: bmaGET('/wot/members')\n },\n network: {\n peering: {\n self: bmaGET('/network/peering'),\n peers: bmaGET('/network/peering/peers')\n },\n peers: bmaGET('/network/peers')\n },\n currency: {\n parameters: bmaGET('/blockchain/parameters')\n },\n blockchain: {\n current: bmaGET('/blockchain/current'),\n block: bmaGET('/blockchain/block/:block'),\n blocks: bmaGET('/blockchain/blocks/:count/:from'),\n block_add: bmaPOST('/blockchain/block'),\n stats: {\n ud: bmaGET('/blockchain/with/ud'),\n tx: bmaGET('/blockchain/with/tx')\n }\n },\n websocket: {\n block: function () {\n return bmaWS('/ws/block');\n },\n peer: function () {\n return bmaWS('/ws/peer');\n }\n },\n origin: {\n network: {\n peering: {\n self: getResource('/network/peering', 'http://')\n }\n }\n }\n }\n }\n\n return BMA;\n });\n};\n","var _ = require('underscore');\nvar conf = require('../lib/conf/conf');\nlet moment = require('moment');\n\nmodule.exports = (app) => {\n\n app.filter('mt_date', () => {\n return (input) => {\n if(input == null){ return \"\"; }\n return moment(input * 1000).format('YYYY MM DD');\n };\n });\n\n app.filter('mt_time', () => {\n return (input) => {\n if(input == null){ return \"\"; }\n return moment(input * 1000).format('HH:mm:ss');\n };\n });\n};\n","module.exports = (app) => {\n\n app.factory('Graph', function() {\n return {\n\n speedGraph: function speedGraphs (id, offset, speeds, minSpeeds, maxSpeeds, getSeries) {\n var xValuex = [];\n for (var i = 0, len = speeds.length; i < len; i++) {\n xValuex.push(i + offset);\n }\n $(id).highcharts({\n chart: {\n type: \"area\",\n zoomType: 'x',\n events: {\n load: function () {\n getSeries(this.series);\n }\n }\n },\n title: {\n text: 'Blocks writing speed'\n },\n subtitle: {\n text: document.ontouchstart === undefined ?\n 'Click and drag in the plot area to zoom in' :\n 'Pinch the chart to zoom in'\n },\n xAxis: {\n //categories: xValuex,\n minRange: 3, // 10 blocks,\n labels: {\n formatter: function() {\n return this.value + offset;\n }\n }\n },\n yAxis: {\n //type: 'logarithmic',\n minorTickInterval: 1,\n title: {\n text: 'Blocks per hour (logarithmic scale)'\n },\n floor: 0,\n min: 0\n },\n colors: ['#ff0000', '#7cb5ec', '#000000'],\n legend: {\n enabled: true\n },\n tooltip: {\n shared: true,\n crosshairs: true,\n formatter: blockFormatter(offset)\n },\n plotOptions: {\n area: {\n fillColor: {\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},\n stops: [\n [0, Highcharts.getOptions().colors[0]],\n [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]\n ]\n },\n marker: {\n radius: 2\n },\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n\n series: [{\n type: 'line',\n name: \"Upper limit\",\n data: maxSpeeds\n },{\n type: 'area',\n name: \"Actual speed\",\n data: speeds\n },{\n type: 'line',\n name: \"Lower limit\",\n data: minSpeeds\n }\n ]\n });\n },\n\n difficultyGraph: function difficultyGraph (id, offset, difficulties) {\n $(id).highcharts({\n chart: {\n type: \"area\",\n zoomType: 'x'\n },\n title: {\n text: 'Proof-of-Work difficulty by block'\n },\n subtitle: {\n text: document.ontouchstart === undefined ?\n 'Click and drag in the plot area to zoom in' :\n 'Pinch the chart to zoom in'\n },\n xAxis: {\n minRange: 10, // 10 blocks,\n labels: {\n formatter: function() {\n return this.value + offset;\n }\n }\n },\n yAxis: {\n title: {\n text: 'Number of zeros'\n },\n floor: 0,\n min: 0\n },\n legend: {\n enabled: true\n },\n tooltip: {\n shared: true,\n crosshairs: true,\n formatter: blockFormatter(offset)\n },\n plotOptions: {\n area: {\n fillColor: {\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},\n stops: [\n [0, Highcharts.getOptions().colors[0]],\n [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]\n ]\n },\n marker: {\n radius: 2\n },\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n\n series: [\n {\n name: 'PoW difficulty',\n data: difficulties\n }\n ]\n });\n },\n\n timeGraphs: function timeGraphs (id, offset, timeAccelerations, medianTimeIncrements, speeds, minSpeeds, maxSpeeds) {\n var timesInc = [];\n medianTimeIncrements.forEach(function (inc) {\n timesInc.push(inc == 0 ? 1 : inc);\n });\n $(id).highcharts({\n chart: {\n // type: \"area\",\n zoomType: 'x'\n },\n title: {\n text: 'Blockchain time variations'\n },\n subtitle: {\n text: document.ontouchstart === undefined ?\n 'Click and drag in the plot area to zoom in' :\n 'Pinch the chart to zoom in'\n },\n xAxis: {\n minRange: 10, // 10 blocks,\n labels: {\n formatter: function() {\n return this.value + offset;\n }\n }\n },\n yAxis: {\n //type: 'logarithmic',\n minorTickInterval: 1,\n title: {\n text: 'Number of seconds (logarithmic scale)'\n }\n },\n legend: {\n enabled: true\n },\n tooltip: {\n shared: true,\n crosshairs: true,\n formatter: blockFormatter(offset)\n },\n plotOptions: {\n area: {\n fillColor: {\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},\n stops: [\n [0, Highcharts.getOptions().colors[0]],\n [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]\n ]\n },\n marker: {\n radius: 2\n },\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n\n series: [\n {\n name: 'Time acceleration',\n data: timeAccelerations\n },{\n name: \"Median Time variation\",\n data: timesInc\n }\n ,{\n name: \"Too high duration\",\n data: maxSpeeds\n }\n ,{\n name: \"Actual duration\",\n data: speeds\n }\n ,{\n name: \"Too low duration\",\n data: minSpeeds\n }\n ]\n });\n }\n }\n });\n};\n\nfunction blockFormatter(offset) {\n return function() {\n var html = '<span style=\"font-size: 10px\">' + (this.x + offset) + '</span><br/>';\n for (var i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i];\n var series = point.series;\n html += '<span style=\"color:' + series.color + '\">\\u25CF</span>' + series.name + ': <b>' + point.y + '</b><br/>';\n }\n return html;\n }\n}\n","module.exports = (app) => {\n\n app.factory('Importer', function($http, $state, $timeout, UIUtils, Upload, Webmin) {\n\n return ($scope) => {\n\n $scope.uploadFiles = function(file, errFiles) {\n $scope.f = file;\n $scope.errFile = errFiles && errFiles[0];\n if (file) {\n UIUtils.toast('settings.data.backup.importing');\n file.upload = Upload.upload({\n url: Webmin.getImportURL(),\n data: { importData: file }\n });\n\n file.upload.then(function (response) {\n $timeout(function () {\n UIUtils.toast('settings.data.backup.imported');\n $state.go('main.home.overview');\n file.result = response.data;\n });\n }, function (response) {\n if (response.status > 0)\n $scope.errorMsg = response.status + ': ' + response.data;\n }, function (evt) {\n file.progress = Math.min(100, parseInt(100.0 *\n evt.loaded / evt.total));\n });\n }\n }\n };\n });\n};\n","module.exports = (app) => {\n\n app.factory('PubkeyGenerator', function($timeout, Webmin) {\n\n var co = require('co');\n\n return ($scope) => {\n\n let concat = \"\";\n $scope.pubkey_preview = \"\";\n let timeout = preview();\n\n function preview() {\n return $timeout(() => {\n if ($scope.$parent) {\n let salt = $scope.$parent.conf.idty_entropy;\n let pass = $scope.$parent.conf.idty_password;\n let newConcat = [salt, pass].join('');\n if (salt && pass && newConcat != concat) {\n concat = newConcat;\n $scope.previewPubkey(concat);\n timeout = preview();\n } else {\n timeout = preview();\n }\n }\n }, 100);\n }\n\n $scope.previewPubkey = () => co(function *() {\n let data = yield Webmin.key.preview({\n conf: $scope.$parent.conf\n });\n $scope.pubkey_preview = data.pubkey;\n }).catch(() => null);\n };\n });\n};\n","module.exports = (app) => {\n\n app.factory('UIUtils', function($q, $translate, $state, $location) {\n return {\n\n translate: (msg) => $q.when($translate(msg)),\n\n toastRaw: (msg) => {\n return Materialize.toast(msg, 4000);\n },\n\n toast: (msg) => {\n return $q.when($translate(msg)).then((translated) => Materialize.toast(translated, 4000))\n },\n\n enableInputs: () => $('i.prefix, label[value!=\"\"]').addClass('active'),\n\n enableTabs: () => {\n let jTabs = $('ul.tabs');\n jTabs.tabs();\n $('ul.tabs a').click((e) => {\n let href = $(e.currentTarget).attr('href');\n let state = href.slice(1);\n $state.go(state);\n });\n\n let currentID = $location.path()\n .replace(/\\//g, '.')\n .replace(/\\./, '');\n\n jTabs.tabs('select_tab', currentID);\n },\n\n changeTitle: (version) => document.title = 'Duniter ' + version\n }\n });\n};\n","const co = require('co');\nconst _ = require('underscore');\nconst conf = require('../lib/conf/conf');\n\nmodule.exports = (angular) => {\n\n angular.module('duniter.services.webmin', ['ngResource'])\n\n .factory('Webmin', function($http, $q) {\n\n function httpProtocol() {\n return window.location.protocol + '//';\n }\n\n function wsProtocol() {\n return window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n }\n\n function Webmin(server) {\n\n function getResource(uri, protocol) {\n return function(params) {\n return $q.when(httpGet(uri, params, protocol));\n }\n }\n\n function httpGet(uri, params, protocol) {\n return Q.Promise((resolve, reject) => {\n var config = {\n timeout: conf.api_timeout\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function(pkey){\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n $http.get((protocol || httpProtocol()) + server + uri + suffix, config)\n .success(function(data, status, headers, config) {\n resolve(data);\n })\n .error(function(data, status, headers, config) {\n console.log(data);\n reject(data);\n });\n });\n }\n\n function postResource(uri) {\n return function(data, params) {\n return $q.when(Q.Promise((resolve, reject) => {\n var config = {\n timeout: 4000\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function(pkey){\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n $http.post(httpProtocol() + server + uri + suffix, data, config)\n .success(function(data, status, headers, config) {\n resolve(data);\n })\n .error(function(data, status, headers, config) {\n reject(data);\n });\n }));\n }\n }\n\n let wsMap = {};\n\n function ws(uri) {\n var sock = wsMap[uri] || new WebSocket(uri);\n wsMap[uri] = sock;\n sock.onclose = function(e) {\n console.log('close');\n console.log(e);\n };\n sock.onerror = function(e) {\n console.log('onerror');\n console.log(e);\n };\n let opened = false, openedCallback;\n sock.onopen = function() {\n opened = true;\n openedCallback && openedCallback();\n };\n let listener, messageType;\n sock.onmessage = function(e) {\n let res = JSON.parse(e.data);\n if (res.type == 'log') {\n for (let i = 0, len = res.value.length; i < len; i++) {\n let log = res.value[i];\n // console[log.level](log.msg);\n }\n }\n if (listener && (messageType === undefined || (res.type === messageType))) {\n listener(res);\n }\n };\n return {\n on: function(type, callback) {\n messageType = type;\n listener = callback;\n },\n whenOpened: () => co(function *() {\n if (opened) return true;\n else {\n yield Q.Promise((resolve) => {\n openedCallback = resolve;\n });\n }\n }),\n send: (msg) => sock.send(msg)\n };\n }\n\n return {\n getExportURL: () => httpProtocol() + \"localhost:9220\" + '/webmin/data/duniter_export',\n getImportURL: () => httpProtocol() + \"localhost:9220\" + '/webmin/data/duniter_import',\n isNodePubliclyReachable: getResource('/webmin/server/reachable'),\n ws: () => ws(wsProtocol() + \"localhost:9220\" + '/webmin/ws'),\n summary: getResource('/webmin/summary'),\n powSummary: getResource('/webmin/summary/pow'),\n logsExport: (nbLines) => getResource('/webmin/logs/export/' + nbLines)(),\n server: {\n http: {\n start: getResource('/webmin/server/http/start'),\n stop: getResource('/webmin/server/http/stop'),\n openUPnP: getResource('/webmin/server/http/upnp/open'),\n regularUPnP: getResource('/webmin/server/http/upnp/regular')\n },\n services: {\n startAll: getResource('/webmin/server/services/start_all'),\n stopAll: getResource('/webmin/server/services/stop_all')\n },\n sendConf: postResource('/webmin/server/send_conf'),\n netConf: postResource('/webmin/server/net_conf'),\n keyConf: postResource('/webmin/server/key_conf'),\n cpuConf: postResource('/webmin/server/cpu_conf'),\n testSync: postResource('/webmin/server/test_sync'),\n startSync: postResource('/webmin/server/start_sync'),\n previewNext: getResource('/webmin/server/preview_next'),\n autoConfNetwork: getResource('/webmin/server/auto_conf_network'),\n resetData: getResource('/webmin/server/reset/data'),\n republishNewSelfPeer: getResource('/webmin/server/republish_selfpeer')\n },\n key: {\n preview: postResource('/webmin/key/preview')\n },\n network: {\n interfaces: getResource('/webmin/network/interfaces')\n }\n }\n }\n let server = window.location.hostname;\n let port = window.location.port;\n let service = Webmin([server, port].join(':'));\n service.instance = Webmin;\n return service;\n });\n};\n"]} \ No newline at end of file +{"version":3,"sources":["AboutController.js","IndexController.js","IdentityController.js","ParametersController.js","RootBlockController.js","SyncController.js","MainController.js","GraphsBlockchainController.js","GraphsController.js","HomeController.js","HomeNetworkController.js","OverviewController.js","SettingsController.js","BackupController.js","CPUController.js","CurrencyController.js","DataController.js","KeyController.js","LogsController.js","LogsSettingsController.js","NetworkController.js","app.config.js","application.js","conf.js","app/js/lib/conf/i18n/en.json","routes.js","translate.js","peer.js","mobileDetector.js","base58.js","bma.js","datetime.js","graphs.js","importer.js","pubkeyGenerator.js","ui_utils.js","webmin.js"],"names":["co","require","module","exports","$scope","version","UIUtils","translate","$parent","title","$http","$state","BMA","Webmin","summary","changeTitle","message","connected","current","go","console","error","err","conf","PubkeyGenerator","setTimeout","$","material_select","accept","modal","css","openModal","dev_autoconf","idty_uid","Math","random","idty_entropy","idty_password","enableInputs","generated","started","start","hosts","remote_ipv4","push","rport","join","remote_ipv6","host_listening","server","sendConf","http","openUPnP","try","stop","previewNext","block","raw","node_address","local_ipv4","local_ipv6","lport","blockchain","block_add","res","number","startServices","services","startAll","cancelAndReset","stopAll","resetData","$timeout","$stateParams","$translate","syncWS","ws","sync_mode","simplified_host","synchronizing","sync_failed","host","localStorage","getItem","port","parseInt","to","wrong_host","remote_current","checkNode","checked_host","sync_error","sync_message","split","checking","testSync","targetHost","toast","startSync","down_percent","apply_percent","sp","translatedErr","on","undefined","data","type","value","errorMessage","msg","republishNewSelfPeer","then","log","changed","$apply","autoConfNetwork","setItem","chunkLen","max","min","sync","nodeOK","$interval","Base58","local_host","local_port","local_sign_pk","decode","pubkey","local_sign_sk","seckey","DEFAULT_CESIUM_SETTINGS","notifications","help","Waves","displayEffect","isMobile","sideNav","menuWidth","openWallet","walletHeight","walletWidth","openNewTab","window","location","origin","position","height","width","show","win","settingsStr","dataStr","settings","JSON","parse","keyPairOK","keypair","signPk","signSk","length","encode","Array","from","node","debug","plugins","rememberMe","stringify","close","innerHeight","innerWidth","mainWindow","focus","aboutWin","showAbout","openWindow","subwin","gui","startServer","server_stopped","regularUPnP","server_started","stopServer","restartServer","checkUpdates","LATEST_RELEASE_URL","get","latest","local_string_version","m","match","localVersion","localSuffix","isLocalAPreRelease","remoteVersion","tag_name","substr","filter","entry","icon","onclick","openExternal","BLOCKS_COUNT","Graph","loading","blocksCount","$watch","newValue","timeGraph","speedGraph","diffGraph","updateGraphs","currency","parameters","blocks","count","speeds","accelerations","medianTimeIncrements","actualDurations","BY_HOUR","i","len","acc","previousPos","dtDiffEval","j","medianTime","availPreviousBlocks","localAvgSpeed","realDuration","isNaN","avgGenTime","parseFloat","toFixed","time","minSpeeds","map","ceil","sqrt","maxSpeeds","floor","minDurations","maxDurations","difficulties","b","powMin","graphs","withTime","withSpeed","withDifficulty","timeGraphs","series","difficultyGraph","enableTabs","menu","peers","update","searching","delayP","Q","delay","network","moment","bindBlockWS","loadPowData","M","monetaryMass","UD","ud0","lastUDBlock","N","membersCount","dividend","pow","unitbase","c","phones","abc","newIdentities","dropdown","constrainwidth","lastNearPoW","totalPoW","sync_state","network_percent","peer_percent","has_pulled","is_pulling","last_pulling","start_block","sync_time","fromNow","powSummary","pow_total","total","pow_mirror","mirror","pow_waiting","waiting","event","last","doneCount","found","hash","cb","websocket","current_currency","current_number","current_membersCount","current_medianTime","current_powMin","reconfigure_network","reconfiguring","interfaces","netinferfaces","auto","local","ipv4","ipv6","remote","upnp","dns","netConf","should_reconfigure","isNodePubliclyReachable","reachable","success","$location","fullReset","Importer","export_link","getExportURL","cpuPower","cpu","updateCPUpower","savingCPU","cpuConf","attr","Peer","peer","p","name","getURL","slice","host_port","getHost","getPort","resetNode","resetNodeAndSync","remote_host","keyConf","reload","_","logsSize","logs","range","logsString","follow","levels","warn","info","trace","keys","level","splice","send","addLogs","autoDigest","pause","newlogs","elem","document","getElementById","scrollTop","scrollHeight","whenOpened","generating","shareLogs","logsExport","link","netinterfaces","firstConf","autoconf","autoconfig","local_neti","toArrayOfAddresses","remote_neti","default_port","saveConf","netiScope","reduce","arr","neti","concat","addresses","addr","address","family","angular","duniterApp","config","$compileProvider","aHrefSanitizationWhitelist","duniterChildCallback","onresize","onResize","url","options","callback","Window","open","screenTop","top","screenLeft","left","Shell","homeControllers","controller","init","jade","e","api_timeout","app","$stateProvider","$urlRouterProvider","state","template","resolve","abstract","dt","stepMax","sigDelay","sigPeriod","sigStock","sigWindow","sigValidity","msValidity","sigQty","xpercent","percentRot","blocksRot","medianTimeBlocks","resolveNetworkAutoConf","startHttp","peering","self","status","errorMsg","otherwise","run","$rootScope","$on","toState","toParams","fromState","fromParams","$translateProvider","translations","preferredLanguage","useSanitizeValueStrategy","json","that","BMA_REGEXP","Object","forEach","key","endpoints","statusTS","keyID","substring","copyValues","obj","copyValuesFrom","getRaw","getBMA","bma","ep","matches","getDns","getIPv4","getIPv6","hasValid4","base","getNamedURL","isReachable","mobilecheck","check","a","test","navigator","userAgent","vendor","opera","alphabet","alphabetMap","charAt","buffer","digits","carry","unshift","digit","string","Uint8Array","input","bytes","factory","$q","httpProtocol","protocol","wsProtocol","getResource","uri","params","when","httpGet","Promise","reject","timeout","suffix","pkeys","queryParams","pkey","prevURI","replace","RegExp","headers","postResource","post","bmaGET","bmaPOST","bmaWS","wsMap","sock","WebSocket","onclose","onerror","opened","openedCallback","onopen","listener","messageType","onmessage","wot","lookup","members","stats","ud","tx","format","speedGraphs","id","offset","getSeries","xValuex","highcharts","chart","zoomType","events","load","text","subtitle","ontouchstart","xAxis","minRange","labels","formatter","yAxis","minorTickInterval","colors","legend","enabled","tooltip","shared","crosshairs","blockFormatter","plotOptions","area","fillColor","linearGradient","x1","y1","x2","y2","stops","Highcharts","getOptions","Color","setOpacity","marker","radius","lineWidth","states","hover","threshold","timeAccelerations","timesInc","inc","html","x","points","point","color","y","Upload","uploadFiles","file","errFiles","f","errFile","upload","getImportURL","importData","response","result","evt","progress","loaded","pubkey_preview","preview","salt","pass","newConcat","previewPubkey","catch","toastRaw","Materialize","translated","addClass","jTabs","tabs","click","href","currentTarget","currentID","path","nbLines","hostname","service","instance"],"mappings":"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B,CAA2B,eAA3B,EAAyDla,QAAQ,gDAAR,CAAzD;AACAia,kBAAgBC,UAAhB,CAA2B,kBAA3B,EAAyDla,QAAQ,4CAAR,CAAzD;AACAia,kBAAgBC,UAAhB,CAA2B,4BAA3B,EAAyDla,QAAQ,sDAAR,CAAzD;AACD,CA3FD;;;;ACAA;;AAEAC,OAAOC,OAAP,GAAiB;;AAEfia,QAAM,gBAAM;;AAEV;AACA,QAAI;AACFrR,aAAOsR,IAAP,GAAcpa,QAAQ,SAAS,GAAT,GAAe,SAAvB,CAAd;AACD,KAFD,CAEE,OAAOqa,CAAP,EAAU,CACX;;AAEDlZ,YAAQ4F,GAAR,CAAY,4BAAZ;;AAEA/G,YAAQ,cAAR;;AAEAmB,YAAQ4F,GAAR,CAAY,kBAAZ;AACD;AAfc,CAAjB;;;;;;ACFA9G,OAAOC,OAAP,GAAiB;AACf8C,UAAQ,EADO,EACH;AACZmC,QAAM,EAFS,EAEH;AACZiT,gBAAc,IAHC;AAIfrW,gBAAc,KAJC;AAKfuY,eAAa,KALE,CAKI;AALJ,CAAjB;;;ACAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"public/app.js","sourcesContent":["\"use strict\";\n\nconst co = require('co');\n\nmodule.exports = ($scope, version, UIUtils) => {\n\n $scope.version = version;\n\n return co(function*() {\n $scope.$parent.title = yield UIUtils.translate('help.about_duniter.title');\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $http, $state, BMA, Webmin, summary, UIUtils) => {\n\n UIUtils.changeTitle(summary.version);\n\n $scope.message = 'index.message.loading';\n co(function *() {\n let connected = false;\n try {\n let summary = yield Webmin.summary();\n if (summary.current) {\n return $state.go('main.home.overview');\n }\n return $state.go('configure.choose');\n }\n catch (e) {\n console.error(connected, e);\n if (!connected) {\n return $state.go('error', { err: 'err.connection'});\n }\n return $state.go('error', { err: e });\n }\n });\n};\n","\"use strict\";\n\nvar conf = require('js/lib/conf/conf');\n\nmodule.exports = ($scope, $state, PubkeyGenerator) => {\n\n setTimeout(() => {\n $('select').material_select();\n }, 500);\n\n $scope.accept = () => {\n let modal = $('#modal1');\n if (modal.css('display') == 'none') {\n $('#modal1').openModal();\n }\n };\n\n PubkeyGenerator($scope);\n\n if (conf.dev_autoconf) {\n $scope.$parent.conf.idty_uid = 'dev_' + ~~(Math.random() * 2147483647);\n $scope.$parent.conf.idty_entropy = ~~(Math.random() * 2147483647) + \"\";\n $scope.$parent.conf.idty_password = ~~(Math.random() * 2147483647) + \"\";\n $state.go('configure.create.network');\n }\n};\n","\"use strict\";\n\nmodule.exports = ($scope, UIUtils) => {\n\n UIUtils.enableInputs();\n};\n","\"use strict\";\n\nvar co = require('co');\nvar conf = require('js/lib/conf/conf');\n\nmodule.exports = ($scope, $http, $state, BMA, Webmin) => {\n\n $scope.generated = '';\n $scope.started = false;\n $scope.message = 'configuration.create_root.need_a_try';\n\n $scope.start = () => co(function *() {\n try {\n let hosts = [];\n if ($scope.$parent.conf.remote_ipv4) {\n hosts.push([$scope.$parent.conf.remote_ipv4, $scope.$parent.conf.rport].join(':'));\n }\n if ($scope.$parent.conf.remote_ipv6) {\n hosts.push([\"[\" + $scope.$parent.conf.remote_ipv6 + \"]\", $scope.$parent.conf.rport].join(':'));\n }\n $scope.host_listening = hosts.join('\\n');\n $scope.started = true;\n yield Webmin.server.sendConf({\n conf: $scope.$parent.conf\n });\n yield Webmin.server.http.start();\n yield Webmin.server.http.openUPnP();\n yield $scope.try();\n } catch (e) {\n $scope.message = e.message;\n }\n });\n\n $scope.stop = () => co(function *() {\n yield Webmin.server.http.stop();\n $scope.started = false;\n });\n\n $scope.try = () => co(function *() {\n try {\n $scope.block = yield Webmin.server.previewNext();\n $scope.generated = $scope.block.raw;\n $scope.message = '';\n } catch (e) {\n $scope.message = e.message;\n }\n });\n\n $scope.accept = () => co(function *() {\n const node_address = $scope.$parent.conf.local_ipv4 || $scope.$parent.conf.local_ipv6;\n let res = yield BMA(node_address + \":\" + $scope.$parent.conf.lport).blockchain.block_add({\n block: $scope.generated\n });\n if (res.number == 0) {\n // We successfully started the blockchain\n yield $scope.startServices();\n }\n });\n\n $scope.startServices = () => co(function *() {\n yield Webmin.server.services.startAll();\n $state.go('index');\n });\n\n $scope.cancelAndReset = () => co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n yield Webmin.server.resetData();\n $state.go('index');\n });\n\n return co(function *() {\n try {\n yield $scope.start();\n yield $scope.try();\n $scope.started = true;\n } catch (e) {\n $scope.started = false;\n }\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $http, $state, $timeout, $stateParams, $translate, BMA, UIUtils, Webmin) => {\n\n let syncWS = Webmin.ws();\n\n UIUtils.enableInputs();\n $scope.sync_mode = 'simplified';\n $scope.simplified_host = '';\n $scope.synchronizing = false;\n $scope.sync_failed = false;\n $scope.host = $stateParams.host || localStorage.getItem('sync_host') || '';\n $scope.port = parseInt($stateParams.port) || parseInt(localStorage.getItem('sync_port')) || 8999;\n $scope.to = parseInt($stateParams.to);\n $scope.wrong_host = false;\n $scope.remote_current = null;\n\n $scope.checkNode = () => co(function *() {\n $scope.checked_host = '';\n $scope.sync_error = '';\n $scope.sync_message = '';\n if ($scope.sync_mode == 'simplified') {\n $scope.host = $scope.simplified_host.split(':')[0];\n $scope.port = parseInt($scope.simplified_host.split(':')[1]);\n }\n $scope.checking = true;\n try {\n const current = yield Webmin.server.testSync({\n host: $scope.host,\n port: $scope.port\n });\n const targetHost = [$scope.host, $scope.port].join(':');\n if (current) {\n $scope.remote_current = current;\n $scope.checked_host = targetHost;\n }\n UIUtils.toast('sync.ready.node.part1');\n $timeout(() => {\n if (!$scope.synchronizing) {\n UIUtils.toast('sync.ready.node.part2');\n }\n }, 6000);\n } catch (e) {\n $scope.sync_error = 'sync.error.unreachable.try.another.node';\n }\n $scope.checking = false;\n return $scope.checked_host ? true : false;\n });\n\n $scope.startSync = () => {\n $scope.down_percent = 0;\n $scope.apply_percent = 0;\n $scope.sync_failed = false;\n $scope.synchronizing = true;\n return co(function *() {\n $scope.sync_message = (yield $translate('sync.started.node')) + ' ' + $scope.checked_host;\n let sp = $scope.checked_host.split(':');\n let translatedErr = yield $translate('err.sync.interrupted');\n syncWS.on(undefined, (data) => {\n if (data.type == 'sync') {\n $scope.down_percent = 100;\n $scope.apply_percent = 100;\n $scope.sync_failed = data.value;\n let errorMessage = data.msg && (data.msg.message || data.msg);\n errorMessage = translatedErr + ' « ' + errorMessage + ' »';\n Webmin.server.republishNewSelfPeer()\n .then(() => console.log('Peer republished'));\n if (data.value === true) {\n $state.go('index');\n } else {\n $state.go('error', { err: (errorMessage) });\n }\n } else {\n let changed = true;\n if (data.type == 'download' && $scope.down_percent != data.value) {\n $scope.down_percent = data.value;\n changed = true;\n }\n if (data.type == 'applied' && $scope.apply_percent != data.value) {\n $scope.apply_percent = data.value;\n changed = true;\n }\n if (changed) {\n $scope.$apply();\n }\n }\n });\n yield Webmin.server.autoConfNetwork();\n localStorage.setItem(\"sync_host\", sp[0]);\n localStorage.setItem(\"sync_port\", sp[1]);\n Webmin.server.startSync({\n host: sp[0],\n port: sp[1],\n to: $scope.to,\n chunkLen: Math.max(500, Math.min(25, $scope.remote_current ? $scope.remote_current.number / 100 : 0))\n });\n });\n };\n\n // Autostart\n if ($scope.host && $scope.port && $stateParams.sync) {\n return co(function *() {\n let nodeOK = yield $scope.checkNode();\n if (nodeOK) {\n return $scope.startSync();\n }\n });\n }\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $state, $http, $timeout, $interval, BMA, Webmin, summary, UIUtils, Base58) => {\n\n const local_host = summary.host.split(':')[0]; // We suppose IPv4 configuration\n const local_port = summary.host.split(':')[1];\n const local_sign_pk = Base58.decode(summary.pubkey);\n const local_sign_sk = Base58.decode(summary.seckey);\n\n const DEFAULT_CESIUM_SETTINGS = {\n \"useRelative\": true,\n \"timeWarningExpire\": 2592000,\n \"useLocalStorage\": true,\n \"rememberMe\": true,\n \"plugins\": {},\n \"node\": {\n \"host\": local_host,\n \"port\": local_port\n },\n \"showUDHistory\": true\n };\n\n $scope.notifications = {\n help: []\n };\n\n Waves.displayEffect();\n\n var isMobile = require('js/lib/mobileDetector');\n if (isMobile()) {\n $(\".button-collapse\").sideNav({\n menuWidth: 280\n });\n }\n\n UIUtils.changeTitle(summary.version);\n\n $scope.openWallet = () => {\n\n let walletHeight = parseInt(localStorage.getItem('wallet_height')) || 1000;\n let walletWidth = parseInt(localStorage.getItem('wallet_width')) || 1400;\n\n openNewTab (window.location.origin + '/cesium/index.html', {\n position: 'center',\n height: walletHeight,\n width: walletWidth,\n show: false\n }, function(win) {\n let settingsStr = win.window.localStorage.getItem('CESIUM_SETTINGS');\n let dataStr = win.window.localStorage.getItem('CESIUM_DATA');\n let settings = (settingsStr && JSON.parse(settingsStr));\n let data = (dataStr && JSON.parse(dataStr));\n let keyPairOK = data && data.keypair && data.keypair.signPk && data.keypair.signSk && true;\n if (keyPairOK) {\n data.keypair.signPk.length = local_sign_pk.length;\n data.keypair.signSk.length = local_sign_sk.length;\n keyPairOK = Base58.encode(Array.from(data.keypair.signPk)) == summary.pubkey\n && Base58.encode(Array.from(data.keypair.signSk)) == summary.seckey\n && data.pubkey == summary.pubkey;\n }\n if (!data\n || !keyPairOK\n || settings.node.host != local_host\n || settings.node.port != local_port) {\n settings = settings || DEFAULT_CESIUM_SETTINGS;\n data = data || {};\n console.debug('Configuring Cesium...');\n settings.node = {\n \"host\": local_host,\n \"port\": local_port\n };\n settings.plugins = {};\n settings.rememberMe = true;\n data.pubkey = summary.pubkey;\n data.keypair = {\n signPk: local_sign_pk,\n signSk: local_sign_sk\n };\n win.window.localStorage.setItem('CESIUM_SETTINGS', JSON.stringify(settings));\n win.window.localStorage.setItem('CESIUM_DATA', JSON.stringify(data));\n win.on('closed', () => {\n // Reopen the wallet\n $timeout(() => $scope.openWallet(), 1);\n });\n win.close();\n } else {\n // Cesium is correctly configured for the network part\n win.show();\n win.on('closed', function() {\n localStorage.setItem('wallet_height', win.window.innerHeight - 8); // Seems to always have 8 pixels more\n localStorage.setItem('wallet_width', win.window.innerWidth - 16); // Seems to always have 16 pixels more\n mainWindow.focus();\n });\n }\n });\n };\n\n let aboutWin;\n\n $scope.showAbout = () => {\n if (aboutWin) {\n aboutWin.focus();\n } else {\n openWindow(window.location.origin + '/#/about', {\n position: 'center',\n height: 380,\n width: 510\n }, function(subwin) {\n subwin.window.gui = window.gui;\n subwin.on('closed', () => {\n aboutWin = null;\n mainWindow.focus();\n });\n aboutWin = subwin;\n });\n }\n };\n\n $scope.startServer = () => {\n $scope.server_stopped = false;\n return co(function *() {\n yield Webmin.server.http.start();\n yield Webmin.server.services.startAll();\n yield Webmin.server.http.regularUPnP();\n $scope.server_started = true;\n });\n };\n\n $scope.stopServer = () => {\n $scope.server_started = false;\n return co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n $scope.server_stopped = true;\n });\n };\n\n $scope.restartServer = () => {\n return co(function *() {\n yield $scope.stopServer();\n yield $scope.startServer();\n });\n };\n\n function checkUpdates() {\n const LATEST_RELEASE_URL = 'https://api.github.com/repos/duniter/duniter/releases/latest';\n co(function*() {\n try {\n const latest = yield $http.get(LATEST_RELEASE_URL);\n const local_string_version = 'v' + summary.version;\n const m = local_string_version.match(/^v([\\d.]+)([ab]?\\d*)/);\n const localVersion = (m && m[1]) || \"\";\n const localSuffix = m && m[2];\n const isLocalAPreRelease = !!(localSuffix);\n const remoteVersion = latest.data.tag_name.substr(1);\n if (localVersion < remoteVersion || (localVersion == remoteVersion && isLocalAPreRelease)) {\n if ($scope.notifications.help.filter((entry) => entry.message == 'help.new_version_available').length == 0) {\n $scope.notifications.help.push({\n icon: 'play_for_work',\n message: 'help.new_version_available',\n onclick: () => openExternal('https://github.com/duniter/duniter/releases/latest')\n });\n }\n }\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n $interval(checkUpdates, 1000 * 3600);\n $timeout(checkUpdates, 1000);\n};\n","\"use strict\";\n\nconst BLOCKS_COUNT = 40;\n\nvar co = require('co');\n\nmodule.exports = ($scope, $state, $timeout, BMA, Webmin, UIUtils, Graph) => {\n\n let data = {};\n\n $scope.loading = true;\n $scope.blocksCount = $scope.blocksCount || BLOCKS_COUNT;\n\n $scope.$watch('withTime', (newValue) => {\n if (newValue) {\n timeGraph();\n }\n });\n\n $scope.$watch('withSpeed', (newValue) => {\n if (newValue) {\n speedGraph();\n }\n });\n\n $scope.$watch('withDifficulty', (newValue) => {\n if (newValue) {\n diffGraph();\n }\n });\n\n $scope.updateGraphs = () => {\n return co(function *() {\n let summary = yield Webmin.summary();\n let parameters = yield BMA(summary.host).currency.parameters();\n let blocks = yield BMA(summary.host).blockchain.blocks({\n count: $scope.blocksCount,\n from: Math.max(0, summary.current.number - $scope.blocksCount)\n });\n let speeds = [], accelerations = [], medianTimeIncrements = [], actualDurations = [];\n let BY_HOUR = 3600;\n for (let i = 0, len = blocks.length; i < len; i++) {\n let block = blocks[i];\n let acc = 0;\n let previousPos = Math.max(0, i - parameters.dtDiffEval);\n for (let j = previousPos; j < i; j++) {\n acc += (blocks[j+1].medianTime - blocks[j].medianTime);\n }\n let availPreviousBlocks = i - 1 - previousPos;\n let localAvgSpeed = acc / (availPreviousBlocks || 1);\n let realDuration = !isNaN(localAvgSpeed) && localAvgSpeed != 0 ? localAvgSpeed : parameters.avgGenTime;\n actualDurations.push(parseFloat((realDuration).toFixed(2)));\n speeds.push(parseFloat((BY_HOUR/realDuration).toFixed(2)));\n accelerations.push(block.time - block.medianTime);\n medianTimeIncrements.push(block.medianTime - (i ? blocks[i-1].medianTime : block.medianTime));\n }\n data.summary = summary;\n data.speeds = speeds;\n data.accelerations = accelerations;\n data.medianTimeIncrements = medianTimeIncrements;\n data.actualDurations = actualDurations;\n data.minSpeeds = speeds.map(() => parseFloat((BY_HOUR/Math.ceil(parameters.avgGenTime * Math.sqrt(1.066))).toFixed(2)));\n data.maxSpeeds = speeds.map(() => parseFloat((BY_HOUR/Math.floor(parameters.avgGenTime / Math.sqrt(1.066))).toFixed(2)));\n data.minDurations = speeds.map(() => parseFloat(((parameters.avgGenTime / 1.066)).toFixed(2)));\n data.maxDurations = speeds.map(() => parseFloat(((parameters.avgGenTime * 1.066)).toFixed(2)));\n data.difficulties = blocks.map((b) => b.powMin);\n\n let graphs = [];\n if ($scope.withTime) graphs.push(timeGraph);\n if ($scope.withSpeed) graphs.push(speedGraph);\n if ($scope.withDifficulty) graphs.push(diffGraph);\n for (let i = 0, len = graphs.length; i < len; i++) {\n graphs[i]();\n }\n $scope.loading = false;\n });\n };\n\n function timeGraph() {\n if ($scope.withTime) {\n Graph.timeGraphs('#timeGraph', Math.max(0, data.summary.current.number - $scope.blocksCount + 1), data.accelerations, data.medianTimeIncrements, data.actualDurations, data.minDurations, data.maxDurations);\n }\n }\n\n function speedGraph() {\n if ($scope.withSpeed) {\n Graph.speedGraph('#speedGraph', Math.max(0, data.summary.current.number - $scope.blocksCount), data.speeds, data.minSpeeds, data.maxSpeeds, (series) => {\n $scope.series = series;\n });\n }\n }\n\n function diffGraph() {\n if ($scope.withDifficulty) {\n Graph.difficultyGraph('#difficultyGraph', Math.max(0, data.summary.current.number - $scope.blocksCount), data.difficulties);\n }\n }\n\n return co(function *() {\n yield $scope.updateGraphs();\n $scope.withTime = true;\n $scope.withDifficulty = true;\n $scope.$apply();\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, UIUtils) => {\n\n UIUtils.enableTabs();\n\n $scope.$parent.menu = 'graphs';\n};\n","\"use strict\";\n\nmodule.exports = ($scope, UIUtils) => {\n\n UIUtils.enableTabs();\n\n $scope.$parent.menu = 'home';\n};\n","\"use strict\";\n\nmodule.exports = ($scope, BMA, peers, summary) => {\n\n $scope.peers = peers.peers;\n\n const co = require('co');\n\n $scope.update = () => co(function *() {\n $scope.searching = true;\n let delayP = Q.delay(500);\n $scope.peers = (yield BMA(summary.host).network.peers()).peers;\n yield delayP;\n $scope.searching = false;\n $scope.$apply();\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, $interval, BMA, Webmin, UIUtils, summary, ws) => {\n\n let co = require('co');\n let moment = require('moment');\n\n bindBlockWS(() => {\n $scope.loadPowData();\n });\n let M = summary.current.monetaryMass || 0;\n // const nbUDperYear = Math.ceil(365.25 * 3600 * 24 / summary.parameters.dt);\n // const globalC = Math.round(Math.pow(1 + summary.parameters.c, nbUDperYear) * 100) / 100 - 1;\n let UD = summary.parameters.ud0;\n if (summary.lastUDBlock) {\n const N = summary.current.membersCount;\n UD = parseInt((summary.lastUDBlock.dividend * Math.pow(10, summary.lastUDBlock.unitbase) + Math.pow(summary.parameters.c, 2) * M / N).toFixed(0));\n }\n $scope.current = summary.current;\n $scope.monetaryMass = parseInt(M / UD) || 0;\n $scope.server_started = true;\n $scope.server_stopped = false;\n $scope.phones = [];\n $scope.abc = 'abcdef';\n $scope.newIdentities = 2;\n\n $(\".dropdown-button\").dropdown({ constrainwidth: false });\n\n $scope.lastNearPoW = '';\n $scope.totalPoW = '...';\n $scope.sync_state = 'home.pulling.state.unkown';\n $scope.network_percent = 0;\n $scope.peer_percent = 0;\n $scope.has_pulled = false;\n $scope.is_pulling = false;\n $scope.last_pulling = 0;\n let start_block = 0;\n\n $interval(() => {\n if ($scope.last_pulling) {\n $scope.sync_state = $scope.is_pulling ? 'home.pulling.state.syncing' : 'home.pulling.state.synced';\n $scope.sync_time = moment($scope.last_pulling).fromNow();\n }\n }, 1000);\n\n $scope.loadPowData = () => co(function*() {\n let res = yield Webmin.powSummary();\n $scope.pow_total = res.total;\n $scope.pow_mirror = res.mirror;\n $scope.pow_waiting = res.waiting;\n });\n\n ws.on(undefined, (data) => {\n if (data.type === 'started') {\n $scope.server_started = true;\n $scope.server_stopped = false;\n bindBlockWS();\n UIUtils.toast('general.server.started');\n $scope.$apply();\n }\n if (data.type === 'stopped') {\n $scope.server_stopped = true;\n $scope.server_started = false;\n UIUtils.toast('general.server.stopped');\n $scope.$apply();\n }\n if (data.type === 'pulling') {\n $scope.is_pulling = true;\n $scope.has_pulled = true;\n const event = data.value;\n if (($scope.last_pulling && event.type === 'start') || (!$scope.last_pulling && event.type !== 'end')) {\n $scope.last_pulling = moment();\n }\n if (event.type === 'peer') {\n $scope.network_percent = parseInt((event.data.number + 1) / event.data.length * 100);\n $scope.peer_percent = 100;\n start_block = 0;\n }\n if (event.type === 'applying') {\n if (!start_block) {\n start_block = event.data.number;\n }\n const total = event.data.last - start_block;\n const doneCount = event.data.number - start_block;\n $scope.peer_percent = parseInt(doneCount / total * 100);\n }\n if (event.type === 'end') {\n $scope.is_pulling = false;\n $scope.network_percent = 0;\n $scope.peer_percent = 0;\n start_block = 0;\n }\n }\n if (data.type === 'pow') {\n const pow = data.value;\n if (pow.found) {\n $scope.pow_waiting = true;\n $scope.lastNearPoW = '#' + pow.hash;\n $scope.$apply();\n } else {\n $scope.pow_waiting = false;\n $scope.lastNearPoW = '#' + pow.hash;\n $scope.$apply();\n }\n }\n });\n\n function bindBlockWS(cb) {\n BMA(summary.host).websocket.block().on(undefined, (block) => {\n $scope.current_currency = block.currency;\n $scope.current_number = block.number;\n $scope.current_membersCount = block.membersCount;\n $scope.current_medianTime = block.medianTime;\n $scope.current_powMin = block.powMin;\n let M = summary.current.monetaryMass || 0;\n let UD = summary.parameters.ud0;\n if (summary.lastUDBlock) {\n const N = summary.current.membersCount;\n UD = parseInt((summary.lastUDBlock.dividend * Math.pow(10, summary.lastUDBlock.unitbase) + Math.pow(summary.parameters.c, 2) * M / N).toFixed(0));\n }\n $scope.monetaryMass = parseInt(M / UD) || 0;\n $scope.$apply();\n cb && cb();\n });\n }\n \n $scope.reconfigure_network = () => co(function *() {\n $scope.reconfiguring = true;\n let delay = Q.delay(1000);\n try {\n let netinferfaces = yield Webmin.network.interfaces();\n let conf = {};\n conf.local_ipv4 = netinferfaces.auto.local.ipv4 || '';\n conf.local_ipv6 = netinferfaces.auto.local.ipv6 || '';\n conf.remote_ipv4 = netinferfaces.auto.remote.ipv4 || '';\n conf.remote_ipv6 = netinferfaces.auto.remote.ipv6 || '';\n conf.lport = netinferfaces.auto.local.port || 9330;\n conf.rport = netinferfaces.auto.remote.port || 9330;\n conf.upnp = netinferfaces.auto.remote.upnp || false;\n conf.dns = netinferfaces.auto.remote.dns || '';\n yield Webmin.server.netConf({\n conf: conf\n });\n yield delay;\n $scope.should_reconfigure = false;\n UIUtils.toast('general.network.reconf_ok');\n $scope.$apply();\n } catch (e) {\n yield delay;\n $scope.reconfiguring = false;\n $scope.$apply();\n }\n });\n\n return co(function *() {\n yield $scope.startServer();\n try {\n yield $scope.loadPowData();\n const reachable = yield Webmin.isNodePubliclyReachable();\n if (!reachable || !reachable.success) {\n $scope.should_reconfigure = true;\n }\n } catch (e) {\n console.log(e);\n }\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $http, $state, $location, BMA, Webmin, UIUtils) => {\n\n UIUtils.enableTabs();\n\n $scope.$parent.conf = $scope.$parent.conf || {};\n $scope.$parent.menu = 'settings';\n\n $(\".dropdown-button\").dropdown({ constrainwidth: false });\n\n $scope.fullReset = () => co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n yield Webmin.server.resetData();\n $state.go('index');\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, Importer, Webmin) => {\n\n $scope.export_link = Webmin.getExportURL();\n\n Importer($scope);\n};\n","\"use strict\";\n\nconst co = require('co');\n\nmodule.exports = ($scope, $http, $state, $timeout, UIUtils, summary, Webmin) => {\n\n $scope.cpuPower = parseInt(summary.conf.cpu * 100);\n\n $scope.updateCPUpower = () => co(function *() {\n $scope.savingCPU = true;\n yield Webmin.server.cpuConf({\n cpu: parseFloat(($scope.cpuPower / 100).toFixed(2))\n });\n UIUtils.toast('settings.cpu.saved');\n $scope.savingCPU = false;\n });\n};\n","\"use strict\";\n\nmodule.exports = ($scope, conf, UIUtils) => {\n\n $scope.$parent.conf = conf;\n\n UIUtils.enableInputs();\n $('input').attr('disabled', 'disabled');\n};\n","\"use strict\";\n\nvar co = require('co');\nvar Peer = require('js/lib/entity/peer');\n\nmodule.exports = ($scope, $http, $state, Webmin, peers) => {\n\n $scope.peers = peers.map((peer) => {\n let p = new Peer(peer);\n return {\n name: [p.getURL(), \"(\" + p.pubkey.slice(0, 6) + \")\"].join(' '),\n host_port: [p.getHost(), p.getPort()].join('|')\n }\n });\n\n $scope.resetNode = () => {\n $('#modalReset').openModal();\n };\n\n $scope.resetNodeAndSync = () => co(function *() {\n yield Webmin.server.http.stop();\n yield Webmin.server.services.stopAll();\n yield Webmin.server.resetData();\n let sp = $scope.remote_host.split('|');\n $state.go('sync', {\n host: sp[0],\n port: sp[1],\n sync: true\n })\n });\n};\n","\"use strict\";\n\nvar co = require('co');\n\nmodule.exports = ($scope, $state, Webmin, summary, PubkeyGenerator) => {\n\n $scope.pubkey = summary.pubkey;\n\n setTimeout(() => {\n $('select').material_select();\n }, 500);\n\n $scope.accept = () => co(function *() {\n yield Webmin.server.keyConf({\n conf: $scope.$parent.conf\n });\n $scope.$parent.conf.idty_entropy = '';\n $scope.$parent.conf.idty_password = '';\n $state.reload();\n $scope.restartServer();\n });\n\n PubkeyGenerator($scope);\n};\n","\"use strict\";\n\nmodule.exports = ($scope, ws, UIUtils) => {\n\n UIUtils.enableTabs();\n\n let co = require('co');\n let _ = require('underscore');\n\n // Default values\n if (!localStorage.getItem('log_error')) localStorage.setItem('log_error', true);\n if (!localStorage.getItem('log_warn')) localStorage.setItem('log_warn', true);\n if (!localStorage.getItem('log_info')) localStorage.setItem('log_info', true);\n\n $scope.logsSize = parseInt(localStorage.getItem('log_size')) || 100;\n $scope.logs = _.range(0, $scope.logsSize).map(() => \"\");\n $scope.logsString = \"\";\n $scope.follow = true;\n $scope.levels = {\n error: localStorage.getItem('log_error') == \"true\",\n warn: localStorage.getItem('log_warn') == \"true\",\n info: localStorage.getItem('log_info') == \"true\",\n debug: localStorage.getItem('log_debug') == \"true\",\n trace: localStorage.getItem('log_trace') == \"true\"\n };\n\n _.keys($scope.levels).map((level) => {\n $scope.$watch('levels.' + level, (newValue) => {\n localStorage.setItem('log_' + level, newValue);\n $scope.logs.splice(0, $scope.logs.length);\n ws.send();\n });\n });\n\n $scope.$watch('logsSize', (newValue) => {\n localStorage.setItem('log_size', newValue);\n addLogs({ value: [] }, true);\n });\n\n ws.on('log', addLogs);\n\n function addLogs(res, autoDigest) {\n\n if (!$scope.pause) {\n let newlogs = _.filter(res.value, (log) => $scope.levels[log.level]);\n // Add at max LOGS_FLOW_SIZE new lines\n newlogs.splice(0, Math.max(0, newlogs.length - $scope.logsSize));\n // Add just enough space for incoming logs\n $scope.logs.splice(0, Math.max(0, $scope.logs.length + newlogs.length - $scope.logsSize));\n for (let i = 0, len = newlogs.length; i < len; i++) {\n let log = newlogs[i];\n $scope.logs.push(log);\n }\n if (!autoDigest) {\n $scope.$apply();\n }\n }\n\n if ($scope.follow) {\n var elem = document.getElementById('logs');\n if (elem) {\n elem.scrollTop = elem.scrollHeight;\n }\n }\n }\n\n return co(function *() {\n yield ws.whenOpened();\n ws.send();\n });\n};\n","\"use strict\";\n\nconst co = require('co');\n\nmodule.exports = ($scope, Webmin) => {\n \n $scope.generating = false;\n $scope.error = '';\n\n $scope.shareLogs = () => co(function*() {\n if (!$scope.generating) {\n try {\n $scope.error = '';\n $scope.generating = true;\n const res = yield Webmin.logsExport(2000);\n $scope.link = res.link;\n } catch (e) {\n $scope.error = (e && e.message) || e || 'Unknown error';\n }\n $scope.generating = false;\n }\n });\n};\n","\"use strict\";\n\nvar co = require('co');\nvar conf = require('js/lib/conf/conf');\n\nmodule.exports = ($scope, $http, $state, Webmin, UIUtils, netinterfaces, firstConf) => {\n\n let autoconf = netinterfaces.auto;\n\n $scope.autoconfig = () => {\n $scope.$parent.conf.local_ipv4 = autoconf.local.ipv4 || '';\n $scope.$parent.conf.local_ipv6 = autoconf.local.ipv6 || '';\n $scope.$parent.conf.remote_ipv4 = autoconf.remote.ipv4 || '';\n $scope.$parent.conf.remote_ipv6 = autoconf.remote.ipv6 || '';\n $scope.$parent.conf.lport = autoconf.local.port || $scope.$parent.conf.lport;\n $scope.$parent.conf.rport = autoconf.remote.port || $scope.$parent.conf.rport;\n $scope.$parent.conf.upnp = autoconf.remote.upnp || $scope.$parent.conf.upnp;\n $scope.$parent.conf.dns = autoconf.remote.dns || $scope.$parent.conf.dns;\n\n if (conf.dev_autoconf && firstConf) {\n $state.go('configure.create.root');\n }\n };\n\n $scope.local_neti = toArrayOfAddresses(netinterfaces.local);\n $scope.remote_neti = toArrayOfAddresses(netinterfaces.remote);\n\n $scope.$parent.conf = $scope.$parent.conf || {};\n $scope.$parent.conf.local_ipv4 = netinterfaces.conf.local.ipv4;\n $scope.$parent.conf.local_ipv6 = netinterfaces.conf.local.ipv6;\n $scope.$parent.conf.remote_ipv4 = netinterfaces.conf.remote.ipv4;\n $scope.$parent.conf.remote_ipv6 = netinterfaces.conf.remote.ipv6;\n $scope.$parent.conf.lport = netinterfaces.conf.local.port;\n $scope.$parent.conf.rport = netinterfaces.conf.remote.port;\n $scope.$parent.conf.upnp = netinterfaces.conf.remote.upnp;\n $scope.$parent.conf.dns = netinterfaces.conf.remote.dns;\n\n UIUtils.enableInputs();\n\n if (firstConf) {\n $scope.$parent.conf.lport = conf.default_port;\n $scope.$parent.conf.rport = conf.default_port;\n // Trigger autoconfig\n $scope.autoconfig();\n }\n\n $scope.saveConf = () => co(function *() {\n $scope.$parent.conf.lport = $scope.$parent.conf.rport;\n $scope.$parent.conf.remote_ipv6 = $scope.$parent.conf.local_ipv6;\n yield Webmin.server.netConf({\n conf: $scope.$parent.conf\n });\n UIUtils.toast('settings.network.saved');\n });\n};\n\nfunction toArrayOfAddresses(netiScope) {\n return netiScope.reduce(function(arr, neti) {\n return arr.concat(neti.addresses.map((addr) => {\n return {\n name: [neti.name, addr.address].join(' '),\n addr: addr.address,\n family: addr.family\n };\n }))\n }, []);\n}\n","module.exports = () => {\n require('./services/bma')(angular);\n require('./services/webmin')(angular);\n\n const duniterApp = angular.module('duniterUIApp', [\n 'ui.router',\n 'homeControllers',\n 'pascalprecht.translate'\n ]);\n\n duniterApp.config( [\n '$compileProvider', ($compileProvider) => $compileProvider.aHrefSanitizationWhitelist(/^\\s*(https?|data):/)\n ]);\n\n require('./lib/conf/translate')(duniterApp);\n require('./lib/conf/routes')(duniterApp);\n require('js/services/datetime')(duniterApp);\n require('js/services/ui_utils')(duniterApp);\n require('js/services/graphs')(duniterApp);\n require('js/services/pubkeyGenerator')(duniterApp);\n require('js/services/importer')(duniterApp);\n require('js/services/base58')(duniterApp);\n\n window.duniterChildCallback = function(gui) {\n window.gui = gui;\n };\n\n window.onresize = () => {\n window.onResize && window.onResize(window);\n };\n\n window.openWindow = function openWindow(url, options, callback) {\n if (window.gui) {\n // Duniter Desktop\n window.gui.Window.open(url, options, callback);\n } else {\n // Browser\n let innerHeight = options.height || 375;\n let innerWidth = options.width || 500;\n window.open(url, '_blank ', [\n 'top=' + (window.screenTop + (options.top || 200)),\n 'left=' + (window.screenLeft + (options.left || 200)),\n 'height=' + (innerHeight + 8),\n 'width=' + (innerWidth + 16),\n 'menubar=no',\n 'status=no'\n ].join(','));\n }\n };\n\n window.openNewTab = function openWindow(url, options, callback) {\n if (window.gui) {\n // Duniter Desktop\n window.gui.Window.open(url, options, callback);\n } else {\n // Browser\n window.open(url, '_blank ');\n }\n };\n\n window.openExternal = function openExternal(url) {\n if (window.gui) {\n window.gui.Shell.openExternal(url);\n } else {\n window.open(url, '_blank');\n }\n };\n\n let homeControllers = angular.module('homeControllers', ['duniter.services.bma', 'duniter.services.webmin', 'ngFileUpload']);\n\n homeControllers.controller('IndexController', require('./controllers/IndexController'));\n homeControllers.controller('AboutController', require('./controllers/AboutController'));\n homeControllers.controller('IdentityController', require('./controllers/init/create/IdentityController'));\n homeControllers.controller('ParametersController', require('./controllers/init/create/ParametersController'));\n homeControllers.controller('RootBlockController', require('./controllers/init/create/RootBlockController'));\n homeControllers.controller('SyncController', require('./controllers/init/sync/SyncController'));\n homeControllers.controller('MainController', require('./controllers/main/MainController'));\n homeControllers.controller('HomeController', require('./controllers/main/home/HomeController'));\n homeControllers.controller('OverviewController', require('./controllers/main/home/tabs/OverviewController'));\n homeControllers.controller('HomeNetworkController', require('./controllers/main/home/tabs/HomeNetworkController'));\n homeControllers.controller('LogsController', require('./controllers/main/settings/tabs/LogsController'));\n homeControllers.controller('LogsSettingsController', require('./controllers/main/settings/tabs/LogsSettingsController'));\n homeControllers.controller('NetworkController', require('./controllers/main/settings/tabs/NetworkController'));\n homeControllers.controller('SettingsController', require('./controllers/main/settings/SettingsController'));\n homeControllers.controller('DataController', require('./controllers/main/settings/tabs/DataController'));\n homeControllers.controller('BackupController', require('./controllers/main/settings/tabs/BackupController'));\n homeControllers.controller('CPUController', require('./controllers/main/settings/tabs/CPUController'));\n homeControllers.controller('CurrencyController', require('./controllers/main/settings/tabs/CurrencyController'));\n homeControllers.controller('KeyController', require('./controllers/main/settings/tabs/KeyController'));\n homeControllers.controller('GraphsController', require('./controllers/main/graphs/GraphsController'));\n homeControllers.controller('GraphsBlockchainController', require('./controllers/main/graphs/GraphsBlockchainController'));\n};\n","\"use strict\";\n\nmodule.exports = {\n\n init: () => {\n\n // Hack since Node v5\n try {\n window.jade = require('jade' + '/' + 'runtime');\n } catch (e) {\n }\n\n console.log('Configuring Angular app...');\n\n require('./app.config')();\n\n console.log('App initialized.');\n }\n};\n","module.exports = {\n server: \"\", // Empty server will use the browser current host\n port: \"\", // Empty port will use the browser current port\n default_port: 9220,\n dev_autoconf: false,\n api_timeout: 10000 // 10 sec timeout\n};\n","module.exports = {\n \"top.menu.overview\": \"Home\",\n \"top.menu.data\": \"Explore\",\n \"top.menu.settings\": \"Settings\",\n \"top.menu.wallet\": \"Wallet\",\n \"general.server.started\": \"Server started\",\n \"general.server.stopped\": \"Server stopped\",\n \"general.choose_option\": \"Choose your option\",\n \"general.network.reconf_ok\": \"Reconfiguration success\",\n \"global.button.validate\": \"Validate\",\n \"global.button.start\": \"Start\",\n \"err.unknown\": \"Unknown error\",\n \"err.connection\": \"Could not connect to node\",\n \"err.back_index\": \"Get back to previous screen\",\n \"err.sync.interrupted\": \"Sync interrupted because the following error occured:\",\n \"index.message.loading\": \"Loading...\",\n \"crypto.secret_key\": \"Secret key\",\n \"index.message.current_block\": \"Current block {{ number }}\",\n \"configuration.init.choose.title\": \"Initialization\",\n \"configuration.init.choose.message\": \"Your software has to be initialized. You may either create a new currency or connect to an existing one.\",\n \"configuration.init.choose.create\": \"Create a new currency\",\n \"configuration.init.choose.connect\": \"Connect to an existing currency\",\n \"configuration.init.choose.import\": \"Import from a backup file\",\n \"configuration.create_currency.cancel\": \"Cancel & go home\",\n \"configuration.create_uid.title\": \"Your identity\",\n \"configuration.create_uid.message\": \"As a first step, you need to define your personal, unique identity.<br/>The following informations will be <strong>definitive</strong> for this currency: please choose them carefully.\",\n \"configuration.create_uid.uid.tooltip\": \"The name you will be known as.\",\n \"configuration.create_uid.entropy.tooltip\": \"An entropy source to make your key unique: an e-mail, a phone n°, ...\",\n \"configuration.create_uid.password.tooltip\": \"A secret password to protect your key.\",\n \"configuration.create_uid.create_button\": \"Continue\",\n \"configuration.create_uid.preview_button\": \"Preview pubkey\",\n \"configuration.create_uid.nrp_algo_choose\": \"NRP algorithm\",\n \"configuration.create_uid.nrp_algo_choose_1\": \"N = 4096 ; r = 16 ; p = 1\",\n \"configuration.create_uid.modal_title\": \"Identity confirmation\",\n \"configuration.create_uid.modal_message\": \"This identity will be definitive for this currency: you will be known by your User ID and will be able to access your account using your Secret Key and Password values.\",\n \"configuration.create_uid.modal_agree\": \"Agree\",\n \"configuration.create_uid.modal_disagree\": \"Disagree\",\n \"configuration.create_uid.modal_preview_title\": \"Preview of pubkey\",\n \"configuration.create_uid.modal_preview_ok\": \"OK\",\n \"configuration.create_network.title\": \"Network\",\n \"configuration.create_network.message\": \"uCoin is a P2P software and needs bidirectionnal access to the network. Please chose carefully the following parameters.\",\n \"configuration.create_network.none\": \"None\",\n \"configuration.create_network.ipv4.title\": \"IPv4\",\n \"configuration.create_network.ipv6.title\": \"IPv6\",\n \"configuration.create_network.ipv4.message\": \"For compatibilty reasons, you may prefer to use classic IPv4 interfaces. The configuration is more complicated.\",\n \"configuration.create_network.local_ipv4\": \"Private (computer)\",\n \"configuration.create_network.remote_ipv4\": \"Public (box/router)\",\n \"configuration.create_network.local_ipv6\": \"IPv6\",\n \"configuration.create_network.port\": \"Port\",\n \"configuration.create_network.port.title\": \"Port\",\n \"configuration.create_network.ipv6.message\": \"IPv6 gives your computer a unique, direct address to your node over the Internet. This is the <b>recommended way</b> to connect your node to the network.\",\n \"configuration.create_network.port.message\": \"Wether you use IPv6 or IPv4, Duniter node will use this port number for connection to the network. With IPv4, this number will be used for both private and public interfaces.\",\n \"configuration.create_network.dns.title\": \"Domain name\",\n \"configuration.create_network.dns\": \"Domain name\",\n \"configuration.create_network.dns.message\": \"IPv6 (AAAA) and IPv4 (A) DNS records will be used.\",\n \"configuration.create_network.upnp\": \"Use UPnP\",\n \"configuration.create_network.button.validate\": \"Continue\",\n \"configuration.create_network.button.autoconf\": \"Automatic configuration\",\n \"configuration.create_parameters.title\": \"Currency\",\n \"configuration.create_parameters.message\": \"Initial parameters of the currency. It should be carefully chosen, as these parameters never change once the currency is started.\",\n \"configuration.create_parameters.currency.title\": \"Money units\",\n \"configuration.create_parameters.currency.message\": \"Give a name to your currency. The 3 following parameters configure the way new money units are created.\",\n \"configuration.create_parameters.currency\": \"Currency name\",\n \"configuration.create_parameters.c\": \"c\",\n \"configuration.create_parameters.dt\": \"UD period\",\n \"configuration.create_parameters.ud0\": \"UD(0)\",\n \"configuration.create_parameters.button.validate\": \"Continue\",\n \"configuration.create_parameters.wot.title\": \"Web of Trust\",\n \"configuration.create_parameters.wot.message\": \"The following parameters deal with identities and their links gathered in the Web of Trust concept.\",\n \"configuration.create_parameters.sigStock\": \"Max cert stock\",\n \"configuration.create_parameters.sigPeriod\": \"Delay between 2 certs\",\n \"configuration.create_parameters.sigValidity\": \"Cert expiry delay\",\n \"configuration.create_parameters.msValidity\": \"Membership expiry delay\",\n \"configuration.create_parameters.sigQty\": \"Min required certs\",\n \"configuration.create_parameters.sigWindow\": \"Cert time window\",\n \"configuration.create_parameters.stepMax\": \"Max distance\",\n \"configuration.create_parameters.xpercent\": \"Percent of distance\",\n \"configuration.create_parameters.blockchain.title\": \"Blockchain\",\n \"configuration.create_parameters.blockchain.message\": \"The technical support of money and identities is the blockchain. It also has some parameters driving its behavior.\",\n \"configuration.create_parameters.medianTimeBlocks\": \"Blocks count\",\n \"configuration.create_parameters.avgGenTime\": \"Block gen. duration\",\n \"configuration.create_parameters.dtDiffEval\": \"Blocks count for diff.\",\n \"configuration.create_parameters.blocksRot\": \"Personal diff. blocks\",\n \"configuration.create_parameters.percentRot\": \"Personal diff. rotation\",\n \"configuration.create_root.title\": \"Root block creation\",\n \"configuration.create_root.message\": \"This is the final step to create the new currency! The root block or <i>genesis</i> will include the first members and define the currency parameters. Once generated and submitted, the blockchain will be started.\",\n \"configuration.create_root.button.start\": \"Start HTTP\",\n \"configuration.create_root.button.stop\": \"Stop HTTP\",\n \"configuration.create_root.button.generate\": \"Give a try\",\n \"configuration.create_root.need_a_try\": \"You need to generate a first block with the « Give a try » button. Start HTTP server to do so.\",\n \"configuration.create_root.button.accept_and_send\": \"Accept this block and start currency\",\n \"configuration.create_root.button.cancel\": \"Cancel creation and go to home screen\",\n \"configuration.create_root.host_listening\": \"Host listening at:\",\n \"configuration.create_uid.pubkey_preview\": \"Public key preview\",\n \"home.current.number\": \"Current block #\",\n \"home.current.membersCount\": \"Members count\",\n \"home.current.medianTime\": \"Median time\",\n \"home.current.powMin\": \"Common difficulty level\",\n \"home.current.mmass\": \"Monetary mass\",\n \"home.pulling.network\": \"Network\",\n \"home.pulling.peer\": \"Peer\",\n \"home.pulling.state.unkown\": \"Next sync in few minutes\",\n \"home.pulling.state.synced\": \"Synced\",\n \"home.pulling.state.syncing\": \"Syncing...\",\n \"home.pow.unit\": \"blocks made by this key\",\n \"home.pow.is_mirror\": \"This node is a mirror\",\n \"home.pow.is_waiting\": \"Waiting for better proof conditions\",\n \"home.tabs.overview\": \"Overview\",\n \"home.tabs.overview.should_reconfigure\": \"Your configuration has changed and your node is no more reachable from the network. You should reconfigure it to have a functional node. If this message appears again, you should manually configure the network settings. Often, selecting only IPv6 interface (disabling IPv4) solves the problem.\",\n \"home.tabs.network\": \"Peers\",\n \"home.tabs.network.button.update\": \"Check peers again\",\n \"home.tabs.logs\": \"Logs\",\n \"home.tabs.logs.follow.logs\": \"Follow logs\",\n \"home.tabs.logs.pause.logs\": \"Pause logs\",\n \"home.tabs.logs.level.error\": \"Error\",\n \"home.tabs.logs.level.warn\": \"Warning\",\n \"home.tabs.logs.level.info\": \"Info\",\n \"home.tabs.logs.level.debug\": \"Debug\",\n \"home.tabs.logs.level.trace\": \"Trace\",\n \"sync.title\": \"Synchronize\",\n \"sync.message\": \"Your node will be synchronized with an existing currency: just enter technical details about a node to sync with it.\",\n \"sync.host\": \"Host\",\n \"sync.port\": \"Port\",\n \"sync.check\": \"Check node\",\n \"sync.start\": \"Synchronize with this node\",\n \"sync.failed\": \"Synchronization failed.\",\n \"sync.mode.simplified\": \"Simplified mode\",\n \"sync.mode.manual\": \"Manual mode\",\n \"sync.simplified.choose\": \"Node to connect to\",\n \"sync.simplified.default_option\": \"Please select a node to continue\",\n \"sync.simplified.currency\": \"Currency\",\n \"sync.simplified.main_mirror\": \"(main mirror)\",\n \"sync.simplified.official_mirror\": \"(other official mirror)\",\n \"sync.ready.node.part1\": \"This node is available!\",\n \"sync.ready.node.part2\": \"Click on the green button to proceed.\",\n \"sync.started.node\": \"Synchronization started on node:\",\n \"sync.error.unreachable.try.another.node\": \"This node is not available. Please select another one.\",\n \"home.menu.server.stop\": \"Stop server\",\n \"home.menu.server.start\": \"Start server\",\n \"home.menu.server.restart\": \"Restart server\",\n \"home.state\": \"Server:\",\n \"home.state.started\": \"STARTED\",\n \"home.state.stopped\": \"STOPPED\",\n \"settings.tabs.logs\": \"Logs\",\n \"settings.tabs.data\": \"Data\",\n \"settings.tabs.backup\": \"Backup\",\n \"settings.tabs.identity\": \"Crypto\",\n \"settings.tabs.network\": \"Network\",\n \"settings.tabs.currency\": \"Currency\",\n \"settings.tabs.cpu\": \"CPU\",\n \"settings.data.reset.title\": \"Reset this node\",\n \"settings.data.reset.message\": \"If you desire to reset this node's data and sync it again with the network, please select a node to sync against and validate.\",\n \"settings.data.reset.warning\": \"This process <strong>will not</strong> reset the node identity and network settings, which will be reused.\",\n \"settings.data.reset.peer.none_option\": \"Select a node\",\n \"settings.data.reset.peer.label\": \"Synchronization peer\",\n \"settings.data.reset.button\": \"Full reset of the node\",\n \"settings.data.reset_sync.button\": \"Reset data and start sync\",\n \"settings.logs.title\": \"Logs\",\n \"settings.logs.consult.message\": \"Your node continually generates information messages in a log file. This information may help you understand what your node <i>is doing</i> or what it <i>has done</i> few times ago.\",\n \"settings.logs.consult.button\": \"View real-time logs\",\n \"settings.logs.share.message\": \"You may want to <b>share your logs</b> with other people, sometimes to get help or to add informations in a bug tracker. Clicking on below button will extract the last 2000 lines of your logs and push it on the web, returning you a link to be shared with whoever you want.\",\n \"settings.logs.share.button\": \"Create a web link to your logs\",\n \"settings.logs.share.generating\": \"Generating your link...\",\n \"settings.logs.share.error\": \"An error occurred during the generation of your link:\",\n \"settings.data.backup.title\": \"Backup\",\n \"settings.data.backup.message\": \"You can create backups of your node's data and restore them using the buttons below.\",\n \"settings.data.backup.warning\": \"<b>Export</b> will only backup your node's data, which <i>excludes your secret key and configuration details</i>.<br><b>Import</b> will reset your node's data by applying the backup. Your secret keys and configuration remains untouched.\",\n \"settings.data.backup.button.export\": \"Create a data backup\",\n \"settings.data.backup.button.import\": \"Import a data backup\",\n \"settings.data.backup.importing\": \"Importing data...\",\n \"settings.data.backup.imported\": \"Import successfull!\",\n \"settings.network.button.validate\": \"Save and apply network settings\",\n \"settings.network.saved\": \"Configuration saved and applied successfully\",\n \"settings.key.title\": \"Public key of this node:\",\n \"settings.key.button.validate\": \"Save and use this key\",\n \"settings.key.button.change\": \"Change keyring\",\n \"settings.key.pubkey.description\": \"This public key is the public part of your keyring, which is composed of a public key and a private key. This public key is shared with all the peers of the network and users of the currency, while your private key is secretely kept and used by this node to process operations on the network.\",\n \"settings.data.modal_title\": \"Confirm full reset\",\n \"settings.data.modal_message\": \"This action will completely reset the data of your node and redirect you to initial configuration screen. Do you confirm?\",\n \"settings.data.modal_disagree\": \"No, cancel this\",\n \"settings.data.modal_agree\": \"Yes, process the reset\",\n \"settings.data.reset.experimental\": \"This functionality is still considered experimental. If you encounters strange behaviors, please stop the software and reset manually your node by removing all the files BUT conf.json under ~/.config/ucoin/ucoin_default, and restart the software.\",\n \"settings.cpu.title\": \"CPU settings\",\n \"settings.cpu.message\": \"You can adjust the CPU power dedicated to proof-of-work computation. The higher the value, the faster is your node, the higher the chances you have to compute a block early.\",\n \"settings.cpu.warning\": \"<b>Up to 8 cores</b> of your machine are dedicated to proof-of-work computation currently. Also, setting CPU to 100% does not mean Duniter will use 100% of each core, but will use as much as possible each of them, as a core is also shared with other programs.\",\n \"settings.cpu.range\": \"% of CPU power core dedicated to proof-of-work :\",\n \"settings.cpu.power\": \"Core power:\",\n \"settings.cpu.saved\": \"CPU settings saved.\",\n \"graphs.tabs.blockchain\": \"Blockchain\",\n \"graphs.tabs.currency\": \"Currency\",\n \"graphs.blockchain.range\": \"Graphs for the last X blocks: (please choose X value)\",\n \"graphs.blockchain.with.time\": \"Time variations graph\",\n \"graphs.blockchain.with.speed\": \"Writing speed graph\",\n \"graphs.blockchain.with.difficulty\": \"Difficulty graph\",\n \"help.about_duniter\": \"About Duniter\",\n \"help.about_duniter.title\": \"About\",\n \"help.about_duniter.subtitle\": \"Duniter Desktop\",\n \"help.about_duniter.version\": \"Version: \",\n \"help.about_duniter.forum\": \"Forum\",\n \"help.about_duniter.chat\": \"Chat\",\n \"help.new_version_available\": \"New version available\"\n}\n;","var co = require('co');\nvar _ = require('underscore');\n\nmodule.exports = (app) => {\n\n app.config(['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) => {\n\n // States\n $stateProvider.\n state('index', {\n url: '/',\n template: require('views/index'),\n resolve: {\n ws: (Webmin) => Webmin.ws(),\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'IndexController'\n }).\n\n state('about', {\n url: '/about',\n template: require('views/about'),\n resolve: {\n summary: (Webmin) => Webmin.summary(),\n version: (summary) => summary && 'v' + summary.version || 'unknown version'\n },\n controller: 'AboutController'\n }).\n\n state('configure', {\n abstract: true,\n url: '/configure',\n template: require('views/init/layout'),\n controller: ($scope) => {\n $scope.conf = {\n currency: 'super_currency',\n c: 0.007376575,\n dt: 30.4375 * 24 * 3600,\n ud0: 100,\n stepMax: 3,\n sigDelay: 3600 * 24 * 365 * 5,\n sigPeriod: 0, // Instant\n sigStock: 40,\n sigWindow: 3600 * 24 * 14, // 2 weeks\n sigValidity: 3600 * 24 * 365,\n msValidity: 3600 * 24 * 365,\n sigQty: 0,\n xpercent: 0.9,\n percentRot: 0.66,\n blocksRot: 20,\n avgGenTime: 16 * 60,\n dtDiffEval: 10,\n medianTimeBlocks: 20\n };\n }\n }).\n\n state('configure.choose', {\n url: '/choose',\n template: require('views/init/choose'),\n controller: ($scope, Importer) => {\n Importer($scope);\n }\n }).\n\n state('configure.create', {\n url: '/create',\n template: '<div class=\"ui-scrollable\" ui-view=\"\"></div>'\n }).\n\n state('configure.create.uid', {\n url: '/create/uid',\n template: require('views/init/create/create_uid'),\n controller: 'IdentityController'\n }).\n\n state('configure.create.network', {\n url: '/create/network',\n template: require('views/init/create/create_network'),\n resolve: {\n netinterfaces: (Webmin) => resolveNetworkAutoConf(Webmin),\n firstConf: () => true\n },\n controller: 'NetworkController'\n }).\n\n state('configure.create.parameters', {\n url: '/create/parameters',\n template: require('views/init/create/create_parameters'),\n controller: 'ParametersController'\n }).\n\n state('configure.create.root', {\n url: '/create/root',\n template: require('views/init/create/create_root'),\n controller: 'RootBlockController'\n }).\n\n state('sync', {\n url: '/sync?host=&port=&sync=&to=',\n template: require('views/init/sync/sync'),\n controller: 'SyncController'\n }).\n\n state('main', {\n abstract: true,\n url: '/main',\n template: require('views/main/main'),\n resolve: {\n ws: (Webmin) => Webmin.ws(),\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'MainController'\n }).\n\n state('main.home', {\n abstract: true,\n url: '/home',\n template: require('views/main/home/home'),\n controller: 'HomeController'\n }).\n\n state('main.home.overview', {\n url: '/overview',\n template: require('views/main/home/tabs/overview'),\n resolve: {\n startHttp: (Webmin) => Webmin.server.http.start()\n },\n controller: 'OverviewController'\n }).\n\n state('main.home.network', {\n url: '/network',\n template: require('views/main/home/tabs/network'),\n resolve: {\n peers: (Webmin, BMA) => co(function *() {\n const summary = yield Webmin.summary();\n return BMA(summary.host).network.peers();\n })\n },\n controller: 'HomeNetworkController'\n }).\n\n state('main.settings', {\n abstract: true,\n url: '/settings',\n template: require('views/main/settings/settings'),\n resolve: {\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'SettingsController'\n }).\n\n state('main.settings.data', {\n url: '/data',\n template: require('views/main/settings/tabs/data'),\n resolve: {\n peers: (Webmin, BMA) => co(function *() {\n try {\n const summary = yield Webmin.summary();\n let self = yield BMA(summary.host).network.peering.self();\n let res = yield BMA(summary.host).network.peers();\n return _.filter(res.peers, (p) => p.pubkey != self.pubkey && p.status == 'UP');\n } catch (e) {\n console.error(e);\n return [];\n }\n })\n },\n controller: 'DataController'\n }).\n\n state('main.settings.logs', {\n url: '/logs',\n template: require('views/main/settings/tabs/logs'),\n controller: 'LogsSettingsController'\n }).\n\n state('main.settings.backup', {\n url: '/backup',\n template: require('views/main/settings/tabs/backup'),\n controller: 'BackupController'\n }).\n\n state('main.settings.cpu', {\n url: '/cpu',\n template: require('views/main/settings/tabs/cpu'),\n resolve: {\n summary: (Webmin) => Webmin.summary()\n },\n controller: 'CPUController'\n }).\n\n state('main.settings.crypto', {\n url: '/crypto',\n template: require('views/main/settings/tabs/crypto'),\n controller: 'KeyController'\n }).\n\n state('main.settings.network', {\n url: '/network',\n resolve: {\n netinterfaces: (Webmin) => resolveNetworkAutoConf(Webmin),\n firstConf: () => false\n },\n template: require('views/main/settings/tabs/network'),\n controller: 'NetworkController'\n }).\n\n state('main.settings.currency', {\n url: '/currency',\n resolve: {\n conf: (summary) => co(function *() {\n return summary.parameters;\n })\n },\n template: require('views/main/settings/tabs/currency'),\n controller: 'CurrencyController'\n }).\n\n state('main.graphs', {\n abstract: true,\n url: '/graphs',\n template: require('views/main/graphs/graphs'),\n controller: 'GraphsController'\n }).\n\n state('main.graphs.blockchain', {\n url: '/blockchain',\n template: require('views/main/graphs/blockchain'),\n controller: 'GraphsBlockchainController'\n }).\n\n //state('graphs.crypto', {\n // url: '/crypto',\n // template: require('views/graphs/crypto'),\n // controller: 'KeyController'\n //}).\n //\n //state('graphs.network', {\n // url: '/network',\n // resolve: {\n // netinterfaces: (Webmin) => resolveNetworkAutoConf(Webmin),\n // firstConf: () => false\n // },\n // template: require('views/graphs/network'),\n // controller: 'NetworkController'\n //}).\n //\n //state('graphs.currency', {\n // url: '/currency',\n // resolve: {\n // conf: (bmapi) => co(function *() {\n // return bmapi.currency.parameters();\n // })\n // },\n // template: require('views/graphs/currency'),\n // controller: 'CurrencyController'\n //}).\n\n state('logs', {\n url: '/logs',\n template: require('views/logs'),\n resolve: {\n ws: (Webmin) => Webmin.ws()\n },\n controller: 'LogsController'\n }).\n\n state('error', {\n url: '/error\\?err',\n template: require('views/error'),\n controller: ($scope, $stateParams) =>\n $scope.errorMsg = $stateParams.err || 'err.unknown'\n });\n\n // Default route\n $urlRouterProvider.otherwise('/');\n }]);\n\n app.run(($rootScope, $state) => {\n $rootScope.$on('$stateChangeError', (event, toState, toParams, fromState, fromParams, error) => {\n console.error(error);\n $state.go('error', { err: error.message });\n });\n });\n\n function resolveNetworkAutoConf(Webmin) {\n return co(function *() {\n let netinterfaces = yield Webmin.network.interfaces();\n return netinterfaces || { local: {}, remote: {} };\n });\n }\n};\n","module.exports = (app) => {\n\n app.config(['$translateProvider', ($translateProvider) => {\n\n $translateProvider.translations('en', require('./i18n/en'));\n\n // Default language\n $translateProvider.preferredLanguage('en');\n\n // Other parameters\n $translateProvider.useSanitizeValueStrategy('');\n }]);\n};\n","\nmodule.exports = function Peer(json) {\n\n var that = this;\n\n var BMA_REGEXP = /^BASIC_MERKLED_API( ([a-z_][a-z0-9-_.]*))?( ([0-9.]+))?( ([0-9a-f:]+))?( ([0-9]+))$/;\n\n Object.keys(json).forEach(function(key) {\n that[key] = json[key];\n });\n\n that.endpoints = that.endpoints || [];\n that.statusTS = that.statusTS || 0;\n\n that.keyID = function () {\n return that.pubkey && that.pubkey.length > 10 ? that.pubkey.substring(0, 10) : \"Unknown\";\n };\n\n that.copyValues = function(to) {\n var obj = that;\n [\"version\", \"currency\", \"pub\", \"endpoints\", \"hash\", \"status\", \"statusTS\", \"block\", \"signature\"].forEach(function (key) {\n to[key] = obj[key];\n });\n };\n\n that.copyValuesFrom = function(from) {\n var obj = that;\n [\"version\", \"currency\", \"pub\", \"endpoints\", \"block\", \"signature\"].forEach(function (key) {\n obj[key] = from[key];\n });\n };\n\n that.json = function() {\n var obj = that;\n var json = {};\n [\"version\", \"currency\", \"endpoints\", \"status\", \"block\", \"signature\"].forEach(function (key) {\n json[key] = obj[key];\n });\n json.raw = that.getRaw();\n json.pubkey = that.pubkey;\n return json;\n };\n\n that.getBMA = function() {\n var bma = null;\n that.endpoints.forEach(function(ep){\n var matches = !bma && ep.match(BMA_REGEXP);\n if (matches) {\n bma = {\n \"dns\": matches[2] || '',\n \"ipv4\": matches[4] || '',\n \"ipv6\": matches[6] || '',\n \"port\": matches[8] || 9101\n };\n }\n });\n return bma || {};\n };\n\n that.getDns = function() {\n var bma = that.getBMA();\n return bma.dns ? bma.dns : null;\n };\n\n that.getIPv4 = function() {\n var bma = that.getBMA();\n return bma.ipv4 ? bma.ipv4 : null;\n };\n\n that.getIPv6 = function() {\n var bma = that.getBMA();\n return bma.ipv6 ? bma.ipv6 : null;\n };\n\n that.getPort = function() {\n var bma = that.getBMA();\n return bma.port ? bma.port : null;\n };\n\n that.getHost = function() {\n var bma = that.getBMA();\n var host =\n (that.hasValid4(bma) ? bma.ipv4 :\n (bma.dns ? bma.dns :\n (bma.ipv6 ? '[' + bma.ipv6 + ']' : '')));\n return host;\n };\n\n that.getURL = function() {\n var bma = that.getBMA();\n var base =\n (that.hasValid4(bma) ? bma.ipv4 :\n (bma.dns ? bma.dns :\n (bma.ipv6 ? '[' + bma.ipv6 + ']' : '')));\n if(bma.port)\n base += ':' + bma.port;\n return base;\n };\n\n that.hasValid4 = function(bma) {\n return bma.ipv4 && !bma.ipv4.match(/^127.0/) && !bma.ipv4.match(/^192.168/) ? true : false;\n };\n\n that.getNamedURL = function() {\n var bma = that.getBMA();\n var base =\n (that.hasValid4(bma) ? bma.ipv4 :\n (bma.dns ? bma.dns :\n (bma.ipv6 ? '[' + bma.ipv6 + ']' : '')));\n if(bma.port)\n base += ':' + bma.port;\n return base;\n };\n\n that.isReachable = function () {\n return that.getURL() ? true : false;\n };\n};\n","module.exports = function mobilecheck() {\n var check = false;\n (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\n return check;\n};\n","module.exports = (app) => {\n\n let Base58 = {};\n\n Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n Base58.alphabetMap = {};\n\n for(let i = 0; i < Base58.alphabet.length; i++) {\n Base58.alphabetMap[Base58.alphabet.charAt(i)] = i\n }\n\n Base58.encode = function(buffer) {\n if (buffer.length === 0) return '';\n\n let i, j, digits = [0];\n for (i = 0; i < buffer.length; i++) {\n for (j = 0; j < digits.length; j++) digits[j] <<= 8\n digits[digits.length - 1] += buffer[i];\n\n let carry = 0;\n for (j = digits.length - 1; j >= 0; j--){\n digits[j] += carry;\n carry = (digits[j] / 58) | 0;\n digits[j] %= 58\n }\n\n while (carry) {\n digits.unshift(carry);\n carry = (digits[0] / 58) | 0;\n digits[0] %= 58\n }\n }\n\n // deal with leading zeros\n for (i = 0; i < buffer.length - 1 && buffer[i] == 0; i++) digits.unshift(0)\n\n return digits.map(function(digit) { return Base58.alphabet[digit] }).join('')\n };\n\n Base58.decode = function(string) {\n if (string.length === 0) return (new Uint8Array());\n\n let input = string.split('').map(function(c){\n return Base58.alphabetMap[c]\n });\n\n let i, j, bytes = [0];\n for (i = 0; i < input.length; i++) {\n for (j = 0; j < bytes.length; j++) bytes[j] *= 58\n bytes[bytes.length - 1] += input[i];\n\n let carry = 0;\n for (j = bytes.length - 1; j >= 0; j--){\n bytes[j] += carry;\n carry = bytes[j] >> 8;\n bytes[j] &= 0xff\n }\n\n while (carry) {\n bytes.unshift(carry);\n carry = bytes[0] >> 8;\n bytes[0] &= 0xff\n }\n }\n\n // deal with leading zeros\n for (i = 0; i < input.length - 1 && input[i] == 0; i++) bytes.unshift(0)\n return (new Uint8Array(bytes))\n };\n\n app.factory('Base58', function() {\n return {\n encode: Base58.encode,\n decode: Base58.decode\n };\n });\n};\n","const co = require('co');\nconst _ = require('underscore');\nconst conf = require('../lib/conf/conf');\n\nmodule.exports = (angular) => {\n\n angular.module('duniter.services.bma', ['ngResource'])\n\n .factory('BMA', function($http, $q) {\n function httpProtocol() {\n return window.location.protocol + '//';\n }\n\n function wsProtocol() {\n return window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n }\n\n function BMA(host) {\n function getResource(uri, protocol) {\n return function (params) {\n return $q.when(httpGet(uri, params, protocol));\n }\n }\n\n function httpGet(uri, params, protocol) {\n return Q.Promise((resolve, reject) => {\n var config = {\n timeout: conf.api_timeout\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function (pkey) {\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n const url = (protocol || httpProtocol()) + host + uri + suffix;\n $http.get(url, config)\n .success(function (data, status, headers, config) {\n resolve(data);\n })\n .error(function (data, status, headers, config) {\n console.log(data);\n reject(data);\n });\n });\n }\n\n function postResource(uri) {\n return function (data, params) {\n return $q.when(Q.Promise((resolve, reject) => {\n var config = {\n timeout: 4000\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function (pkey) {\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n const url = httpProtocol() + host + uri + suffix;\n $http.post(url, data, config)\n .success(function (data, status, headers, config) {\n resolve(data);\n })\n .error(function (data, status, headers, config) {\n reject(data);\n });\n }));\n }\n }\n\n function bmaGET(uri) {\n return getResource('' + uri);\n }\n\n function bmaPOST(uri) {\n return postResource('' + uri);\n }\n\n function bmaWS(uri) {\n return ws(wsProtocol() + host + '' + uri);\n }\n\n let wsMap = {};\n\n function ws(uri) {\n var sock = wsMap[uri] || new WebSocket(uri);\n wsMap[uri] = sock;\n sock.onclose = function (e) {\n console.log('close');\n console.log(e);\n };\n sock.onerror = function (e) {\n console.log('onerror');\n console.log(e);\n };\n let opened = false, openedCallback;\n sock.onopen = function () {\n opened = true;\n openedCallback && openedCallback();\n };\n let listener, messageType;\n sock.onmessage = function (e) {\n let res = JSON.parse(e.data);\n if (res.type == 'log') {\n for (let i = 0, len = res.value.length; i < len; i++) {\n let log = res.value[i];\n // console[log.level](log.msg);\n }\n }\n if (listener && (messageType === undefined || (res.type === messageType))) {\n listener(res);\n }\n };\n return {\n on: function (type, callback) {\n messageType = type;\n listener = callback;\n },\n whenOpened: () => co(function *() {\n if (opened) return true;\n else {\n yield Q.Promise((resolve) => {\n openedCallback = resolve;\n });\n }\n }),\n send: (msg) => sock.send(msg)\n };\n }\n\n return {\n node: {\n summary: bmaGET('/node/summary')\n },\n wot: {\n lookup: bmaGET('/wot/lookup/:search'),\n members: bmaGET('/wot/members')\n },\n network: {\n peering: {\n self: bmaGET('/network/peering'),\n peers: bmaGET('/network/peering/peers')\n },\n peers: bmaGET('/network/peers')\n },\n currency: {\n parameters: bmaGET('/blockchain/parameters')\n },\n blockchain: {\n current: bmaGET('/blockchain/current'),\n block: bmaGET('/blockchain/block/:block'),\n blocks: bmaGET('/blockchain/blocks/:count/:from'),\n block_add: bmaPOST('/blockchain/block'),\n stats: {\n ud: bmaGET('/blockchain/with/ud'),\n tx: bmaGET('/blockchain/with/tx')\n }\n },\n websocket: {\n block: function () {\n return bmaWS('/ws/block');\n },\n peer: function () {\n return bmaWS('/ws/peer');\n }\n },\n origin: {\n network: {\n peering: {\n self: getResource('/network/peering', 'http://')\n }\n }\n }\n }\n }\n\n return BMA;\n });\n};\n","var _ = require('underscore');\nvar conf = require('../lib/conf/conf');\nlet moment = require('moment');\n\nmodule.exports = (app) => {\n\n app.filter('mt_date', () => {\n return (input) => {\n if(input == null){ return \"\"; }\n return moment(input * 1000).format('YYYY MM DD');\n };\n });\n\n app.filter('mt_time', () => {\n return (input) => {\n if(input == null){ return \"\"; }\n return moment(input * 1000).format('HH:mm:ss');\n };\n });\n};\n","module.exports = (app) => {\n\n app.factory('Graph', function() {\n return {\n\n speedGraph: function speedGraphs (id, offset, speeds, minSpeeds, maxSpeeds, getSeries) {\n var xValuex = [];\n for (var i = 0, len = speeds.length; i < len; i++) {\n xValuex.push(i + offset);\n }\n $(id).highcharts({\n chart: {\n type: \"area\",\n zoomType: 'x',\n events: {\n load: function () {\n getSeries(this.series);\n }\n }\n },\n title: {\n text: 'Blocks writing speed'\n },\n subtitle: {\n text: document.ontouchstart === undefined ?\n 'Click and drag in the plot area to zoom in' :\n 'Pinch the chart to zoom in'\n },\n xAxis: {\n //categories: xValuex,\n minRange: 3, // 10 blocks,\n labels: {\n formatter: function() {\n return this.value + offset;\n }\n }\n },\n yAxis: {\n //type: 'logarithmic',\n minorTickInterval: 1,\n title: {\n text: 'Blocks per hour (logarithmic scale)'\n },\n floor: 0,\n min: 0\n },\n colors: ['#ff0000', '#7cb5ec', '#000000'],\n legend: {\n enabled: true\n },\n tooltip: {\n shared: true,\n crosshairs: true,\n formatter: blockFormatter(offset)\n },\n plotOptions: {\n area: {\n fillColor: {\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},\n stops: [\n [0, Highcharts.getOptions().colors[0]],\n [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]\n ]\n },\n marker: {\n radius: 2\n },\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n\n series: [{\n type: 'line',\n name: \"Upper limit\",\n data: maxSpeeds\n },{\n type: 'area',\n name: \"Actual speed\",\n data: speeds\n },{\n type: 'line',\n name: \"Lower limit\",\n data: minSpeeds\n }\n ]\n });\n },\n\n difficultyGraph: function difficultyGraph (id, offset, difficulties) {\n $(id).highcharts({\n chart: {\n type: \"area\",\n zoomType: 'x'\n },\n title: {\n text: 'Proof-of-Work difficulty by block'\n },\n subtitle: {\n text: document.ontouchstart === undefined ?\n 'Click and drag in the plot area to zoom in' :\n 'Pinch the chart to zoom in'\n },\n xAxis: {\n minRange: 10, // 10 blocks,\n labels: {\n formatter: function() {\n return this.value + offset;\n }\n }\n },\n yAxis: {\n title: {\n text: 'Number of zeros'\n },\n floor: 0,\n min: 0\n },\n legend: {\n enabled: true\n },\n tooltip: {\n shared: true,\n crosshairs: true,\n formatter: blockFormatter(offset)\n },\n plotOptions: {\n area: {\n fillColor: {\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},\n stops: [\n [0, Highcharts.getOptions().colors[0]],\n [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]\n ]\n },\n marker: {\n radius: 2\n },\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n\n series: [\n {\n name: 'PoW difficulty',\n data: difficulties\n }\n ]\n });\n },\n\n timeGraphs: function timeGraphs (id, offset, timeAccelerations, medianTimeIncrements, speeds, minSpeeds, maxSpeeds) {\n var timesInc = [];\n medianTimeIncrements.forEach(function (inc) {\n timesInc.push(inc == 0 ? 1 : inc);\n });\n $(id).highcharts({\n chart: {\n // type: \"area\",\n zoomType: 'x'\n },\n title: {\n text: 'Blockchain time variations'\n },\n subtitle: {\n text: document.ontouchstart === undefined ?\n 'Click and drag in the plot area to zoom in' :\n 'Pinch the chart to zoom in'\n },\n xAxis: {\n minRange: 10, // 10 blocks,\n labels: {\n formatter: function() {\n return this.value + offset;\n }\n }\n },\n yAxis: {\n //type: 'logarithmic',\n minorTickInterval: 1,\n title: {\n text: 'Number of seconds (logarithmic scale)'\n }\n },\n legend: {\n enabled: true\n },\n tooltip: {\n shared: true,\n crosshairs: true,\n formatter: blockFormatter(offset)\n },\n plotOptions: {\n area: {\n fillColor: {\n linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},\n stops: [\n [0, Highcharts.getOptions().colors[0]],\n [1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity(0).get('rgba')]\n ]\n },\n marker: {\n radius: 2\n },\n lineWidth: 1,\n states: {\n hover: {\n lineWidth: 1\n }\n },\n threshold: null\n }\n },\n\n series: [\n {\n name: 'Time acceleration',\n data: timeAccelerations\n },{\n name: \"Median Time variation\",\n data: timesInc\n }\n ,{\n name: \"Too high duration\",\n data: maxSpeeds\n }\n ,{\n name: \"Actual duration\",\n data: speeds\n }\n ,{\n name: \"Too low duration\",\n data: minSpeeds\n }\n ]\n });\n }\n }\n });\n};\n\nfunction blockFormatter(offset) {\n return function() {\n var html = '<span style=\"font-size: 10px\">' + (this.x + offset) + '</span><br/>';\n for (var i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i];\n var series = point.series;\n html += '<span style=\"color:' + series.color + '\">\\u25CF</span>' + series.name + ': <b>' + point.y + '</b><br/>';\n }\n return html;\n }\n}\n","module.exports = (app) => {\n\n app.factory('Importer', function($http, $state, $timeout, UIUtils, Upload, Webmin) {\n\n return ($scope) => {\n\n $scope.uploadFiles = function(file, errFiles) {\n $scope.f = file;\n $scope.errFile = errFiles && errFiles[0];\n if (file) {\n UIUtils.toast('settings.data.backup.importing');\n file.upload = Upload.upload({\n url: Webmin.getImportURL(),\n data: { importData: file }\n });\n\n file.upload.then(function (response) {\n $timeout(function () {\n UIUtils.toast('settings.data.backup.imported');\n $state.go('main.home.overview');\n file.result = response.data;\n });\n }, function (response) {\n if (response.status > 0)\n $scope.errorMsg = response.status + ': ' + response.data;\n }, function (evt) {\n file.progress = Math.min(100, parseInt(100.0 *\n evt.loaded / evt.total));\n });\n }\n }\n };\n });\n};\n","module.exports = (app) => {\n\n app.factory('PubkeyGenerator', function($timeout, Webmin) {\n\n var co = require('co');\n\n return ($scope) => {\n\n let concat = \"\";\n $scope.pubkey_preview = \"\";\n let timeout = preview();\n\n function preview() {\n return $timeout(() => {\n if ($scope.$parent) {\n let salt = $scope.$parent.conf.idty_entropy;\n let pass = $scope.$parent.conf.idty_password;\n let newConcat = [salt, pass].join('');\n if (salt && pass && newConcat != concat) {\n concat = newConcat;\n $scope.previewPubkey(concat);\n timeout = preview();\n } else {\n timeout = preview();\n }\n }\n }, 100);\n }\n\n $scope.previewPubkey = () => co(function *() {\n let data = yield Webmin.key.preview({\n conf: $scope.$parent.conf\n });\n $scope.pubkey_preview = data.pubkey;\n }).catch(() => null);\n };\n });\n};\n","module.exports = (app) => {\n\n app.factory('UIUtils', function($q, $translate, $state, $location) {\n return {\n\n translate: (msg) => $q.when($translate(msg)),\n\n toastRaw: (msg) => {\n return Materialize.toast(msg, 4000);\n },\n\n toast: (msg) => {\n return $q.when($translate(msg)).then((translated) => Materialize.toast(translated, 4000))\n },\n\n enableInputs: () => $('i.prefix, label[value!=\"\"]').addClass('active'),\n\n enableTabs: () => {\n let jTabs = $('ul.tabs');\n jTabs.tabs();\n $('ul.tabs a').click((e) => {\n let href = $(e.currentTarget).attr('href');\n let state = href.slice(1);\n $state.go(state);\n });\n\n let currentID = $location.path()\n .replace(/\\//g, '.')\n .replace(/\\./, '');\n\n jTabs.tabs('select_tab', currentID);\n },\n\n changeTitle: (version) => document.title = 'Duniter ' + version\n }\n });\n};\n","const co = require('co');\nconst _ = require('underscore');\nconst conf = require('../lib/conf/conf');\n\nmodule.exports = (angular) => {\n\n angular.module('duniter.services.webmin', ['ngResource'])\n\n .factory('Webmin', function($http, $q) {\n\n function httpProtocol() {\n return window.location.protocol + '//';\n }\n\n function wsProtocol() {\n return window.location.protocol === 'https:' ? 'wss://' : 'ws://';\n }\n\n function Webmin(server) {\n\n function getResource(uri, protocol) {\n return function(params) {\n return $q.when(httpGet(uri, params, protocol));\n }\n }\n\n function httpGet(uri, params, protocol) {\n return Q.Promise((resolve, reject) => {\n var config = {\n timeout: conf.api_timeout\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function(pkey){\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n $http.get((protocol || httpProtocol()) + server + uri + suffix, config)\n .success(function(data, status, headers, config) {\n resolve(data);\n })\n .error(function(data, status, headers, config) {\n console.log(data);\n reject(data);\n });\n });\n }\n\n function postResource(uri) {\n return function(data, params) {\n return $q.when(Q.Promise((resolve, reject) => {\n var config = {\n timeout: 4000\n }, suffix = '', pkeys = [], queryParams = null;\n if (typeof params == 'object') {\n pkeys = _.keys(params);\n queryParams = {};\n }\n pkeys.forEach(function(pkey){\n var prevURI = uri;\n uri = uri.replace(new RegExp(':' + pkey), params[pkey]);\n if (prevURI == uri) {\n queryParams[pkey] = params[pkey];\n }\n });\n config.params = queryParams;\n $http.post(httpProtocol() + server + uri + suffix, data, config)\n .success(function(data, status, headers, config) {\n resolve(data);\n })\n .error(function(data, status, headers, config) {\n reject(data);\n });\n }));\n }\n }\n\n let wsMap = {};\n\n function ws(uri) {\n var sock = wsMap[uri] || new WebSocket(uri);\n wsMap[uri] = sock;\n sock.onclose = function(e) {\n console.log('close');\n console.log(e);\n };\n sock.onerror = function(e) {\n console.log('onerror');\n console.log(e);\n };\n let opened = false, openedCallback;\n sock.onopen = function() {\n opened = true;\n openedCallback && openedCallback();\n };\n let listener, messageType;\n sock.onmessage = function(e) {\n let res = JSON.parse(e.data);\n if (res.type == 'log') {\n for (let i = 0, len = res.value.length; i < len; i++) {\n let log = res.value[i];\n // console[log.level](log.msg);\n }\n }\n if (listener && (messageType === undefined || (res.type === messageType))) {\n listener(res);\n }\n };\n return {\n on: function(type, callback) {\n messageType = type;\n listener = callback;\n },\n whenOpened: () => co(function *() {\n if (opened) return true;\n else {\n yield Q.Promise((resolve) => {\n openedCallback = resolve;\n });\n }\n }),\n send: (msg) => sock.send(msg)\n };\n }\n\n return {\n getExportURL: () => httpProtocol() + \"localhost:9220\" + '/webmin/data/duniter_export',\n getImportURL: () => httpProtocol() + \"localhost:9220\" + '/webmin/data/duniter_import',\n isNodePubliclyReachable: getResource('/webmin/server/reachable'),\n ws: () => ws(wsProtocol() + \"localhost:9220\" + '/webmin/ws'),\n summary: getResource('/webmin/summary'),\n powSummary: getResource('/webmin/summary/pow'),\n logsExport: (nbLines) => getResource('/webmin/logs/export/' + nbLines)(),\n server: {\n http: {\n start: getResource('/webmin/server/http/start'),\n stop: getResource('/webmin/server/http/stop'),\n openUPnP: getResource('/webmin/server/http/upnp/open'),\n regularUPnP: getResource('/webmin/server/http/upnp/regular')\n },\n services: {\n startAll: getResource('/webmin/server/services/start_all'),\n stopAll: getResource('/webmin/server/services/stop_all')\n },\n sendConf: postResource('/webmin/server/send_conf'),\n netConf: postResource('/webmin/server/net_conf'),\n keyConf: postResource('/webmin/server/key_conf'),\n cpuConf: postResource('/webmin/server/cpu_conf'),\n testSync: postResource('/webmin/server/test_sync'),\n startSync: postResource('/webmin/server/start_sync'),\n previewNext: getResource('/webmin/server/preview_next'),\n autoConfNetwork: getResource('/webmin/server/auto_conf_network'),\n resetData: getResource('/webmin/server/reset/data'),\n republishNewSelfPeer: getResource('/webmin/server/republish_selfpeer')\n },\n key: {\n preview: postResource('/webmin/key/preview')\n },\n network: {\n interfaces: getResource('/webmin/network/interfaces')\n }\n }\n }\n let server = window.location.hostname;\n let port = window.location.port;\n let service = Webmin([server, port].join(':'));\n service.instance = Webmin;\n return service;\n });\n};\n"]} \ No newline at end of file -- GitLab