diff --git a/app/rpcApi.js b/app/rpcApi.js index 791e2bb..a89b0c4 100644 --- a/app/rpcApi.js +++ b/app/rpcApi.js @@ -39,7 +39,11 @@ function getInfo() { return new Promise(function(resolve, reject) { client.cmd('getinfo', function(err, result, resHeaders) { if (err) { - return console.log("Error 3207fh0f: " + err); + console.log("Error 3207fh0f: " + err); + + reject(err); + + return; } resolve(result); @@ -51,7 +55,11 @@ function getMempoolInfo() { return new Promise(function(resolve, reject) { client.cmd('getmempoolinfo', function(err, result, resHeaders) { if (err) { - return console.log("Error 23407rhwe07fg: " + err); + console.log("Error 23407rhwe07fg: " + err); + + reject(err); + + return; } resolve(result); @@ -63,10 +71,12 @@ function getMempoolStats() { return new Promise(function(resolve, reject) { client.cmd('getrawmempool', true, function(err, result, resHeaders) { if (err) { - return console.log("Error 428thwre0ufg: " + err); - } + console.log("Error 428thwre0ufg: " + err); - console.log("abc: " + JSON.stringify(result).substring(0, 100)); + reject(err); + + return; + } var compiledResult = {}; compiledResult.count = 0; @@ -128,12 +138,20 @@ function getBlockByHeight(blockHeight) { client.cmd('getblockhash', blockHeight, function(err, result, resHeaders) { if (err) { - return console.log("Error 0928317yr3w: " + err); + console.log("Error 0928317yr3w: " + err); + + reject(err); + + return; } client.cmd('getblock', result, function(err2, result2, resHeaders2) { if (err2) { - return console.log("Error 320fh7e0hg: " + err2); + console.log("Error 320fh7e0hg: " + err2); + + reject(err2); + + return; } resolve({ success:true, getblockhash:result, getblock:result2 }); @@ -192,6 +210,10 @@ function getBlockByHash(blockHash) { client.cmd('getblock', blockHash, function(err, result, resHeaders) { if (err) { console.log("Error 0u2fgewue: " + err); + + reject(err); + + return; } resolve(result); @@ -206,8 +228,8 @@ function getTransactionInputs(rpcClient, transaction, inputLimit=0) { var txids = []; for (var i = 0; i < transaction.vin.length; i++) { if (i < inputLimit || inputLimit == 0) { - txids.push(transaction.vin[i].txid); - } + txids.push(transaction.vin[i].txid); + } } getRawTransactions(txids).then(function(inputTransactions) { @@ -232,6 +254,10 @@ function getRawTransaction(txid) { client.cmd('getrawtransaction', txid, 1, function(err, result, resHeaders) { if (err) { console.log("Error 329813yre823: " + err); + + reject(err); + + return; } resolve(result); @@ -256,6 +282,11 @@ function getRawTransactions(txids) { result.confirmations = blockZeroResult.getblock.confirmations; resolve([result]); + + }).catch(function(err) { + reject(err); + + return; }); return; diff --git a/routes/baseActionsRouter.js b/routes/baseActionsRouter.js index d90f113..babd433 100644 --- a/routes/baseActionsRouter.js +++ b/routes/baseActionsRouter.js @@ -44,6 +44,10 @@ router.get("/", function(req, res) { res.render("index"); }); + }).catch(function(err) { + res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port; + + res.render("index"); }); }); @@ -53,6 +57,11 @@ router.get("/node-info", function(req, res) { rpcApi.getInfo().then(function(getinfo) { res.locals.getinfo = getinfo; + res.render("node-info"); + + }).catch(function(err) { + res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port; + res.render("node-info"); }); }); @@ -68,6 +77,10 @@ router.get("/mempool", function(req, res) { res.render("mempool"); }); + }).catch(function(err) { + res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port; + + res.render("mempool"); }); }); @@ -145,6 +158,10 @@ router.get("/blocks", function(req, res) { res.render("blocks"); }); + }).catch(function(err) { + res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port; + + res.render("blocks"); }); }); @@ -193,6 +210,10 @@ router.post("/search", function(req, res) { res.redirect("/"); }); }); + }).catch(function(err) { + res.locals.userMessage = "Unable to connect to Bitcoin Node at " + env.bitcoind.host + ":" + env.bitcoind.port; + + res.render("index"); }); }); diff --git a/views/blocks.pug b/views/blocks.pug index 600737b..f6ee75c 100644 --- a/views/blocks.pug +++ b/views/blocks.pug @@ -4,29 +4,32 @@ block content h1(class="h2") Blocks hr - nav(aria-label="Page navigation") - ul(class="pagination justify-content-center") - li(class="page-item", class=(sort == "asc" ? "active" : false)) - a(class="page-link", href=(sort == "asc" ? "javascript:void(0)" : "/blocks?limit=" + limit + "&offset=0" + "&sort=asc")) - span(aria-hidden="true") Oldest blocks first - li(class="page-item", class=(sort == "desc" ? "active" : false)) - a(class="page-link", href=(sort == "desc" ? "javascript:void(0)" : "/blocks?limit=" + limit + "&offset=0" + "&sort=desc")) - span(aria-hidden="true") Newest blocks first + if (blocks) + nav(aria-label="Page navigation") + ul(class="pagination justify-content-center") + li(class="page-item", class=(sort == "asc" ? "active" : false)) + a(class="page-link", href=(sort == "asc" ? "javascript:void(0)" : "/blocks?limit=" + limit + "&offset=0" + "&sort=asc")) + span(aria-hidden="true") Oldest blocks first + li(class="page-item", class=(sort == "desc" ? "active" : false)) + a(class="page-link", href=(sort == "desc" ? "javascript:void(0)" : "/blocks?limit=" + limit + "&offset=0" + "&sort=desc")) + span(aria-hidden="true") Newest blocks first - include includes/blocks-list.pug + include includes/blocks-list.pug - hr - - if (blockCount > limit) - - var pageNumber = offset / limit + 1; - - var pageCount = Math.floor(blockCount / limit); - - if (pageCount * limit < blockCount) { - - pageCount++; - - } - - var paginationUrlFunction = function(x) { - - return paginationBaseUrl + "?limit=" + limit + "&offset=" + ((x - 1) * limit + "&sort=" + sort); - - } - hr - include includes/pagination.pug \ No newline at end of file + if (blockCount > limit) + - var pageNumber = offset / limit + 1; + - var pageCount = Math.floor(blockCount / limit); + - if (pageCount * limit < blockCount) { + - pageCount++; + - } + - var paginationUrlFunction = function(x) { + - return paginationBaseUrl + "?limit=" + limit + "&offset=" + ((x - 1) * limit + "&sort=" + sort); + - } + + hr + + include includes/pagination.pug + else + p No blocks found \ No newline at end of file diff --git a/views/index.pug b/views/index.pug index c2b41f4..ace7758 100644 --- a/views/index.pug +++ b/views/index.pug @@ -11,13 +11,25 @@ block content **BTC Explorer** is [open-source](https://github.com/janoside/btc-rpc-explorer). If you run your own [Bitcoin Full Node](https://bitcoin.org/en/full-node), **BTC Explorer** can easily run alongside it, communicating via RPC calls. See the project [ReadMe](https://github.com/janoside/btc-rpc-explorer) for a list of features and instructions for running. + if (latestBlocks) + h3 Latest Blocks - h3 Latest Blocks + - var blocks = latestBlocks; + - var blockOffset = 0; - - var blocks = latestBlocks; - - var blockOffset = 0; + include includes/blocks-list.pug - include includes/blocks-list.pug + hr + a(href="/blocks", class="btn btn-primary btn-block") See more hr - a(href="/blocks", class="btn btn-primary btn-block") See more \ No newline at end of file + + div(class="text-center") + :markdown-it + Public instance maintained at [https://btc-explorer.com](https://btc-explorer.com) + + Donate bitcoin: [3NPGpNyLLmVKCEcuipBs7G4KpQJoJXjDGe](bitcoin:3NPGpNyLLmVKCEcuipBs7G4KpQJoJXjDGe) / zCash: [t1bEGh8eABmZu8Ned3awCgBdkAhz2mKzJxP](zcash:t1bEGh8eABmZu8Ned3awCgBdkAhz2mKzJxP) + + Source code available on github: [https://github.com/janoside/btc-rpc-explorer](https://github.com/janoside/btc-rpc-explorer) + + © 2017 Dan Janosik \ No newline at end of file