From a7d1ae8d0c174f95ddd035d1e9acd237b2591e23 Mon Sep 17 00:00:00 2001 From: joeuhren Date: Mon, 22 Mar 2021 18:45:47 -0600 Subject: [PATCH] New settings for viewing special address pages -Add new address_page.enable_hidden_address_view setting which controls whether the special hidden_address address page can be viewed -Add new address_page.enable_unknown_address_view setting which controls whether the special unknown_address address page can be viewed -route to special coinbase address is permanently disabled --- lib/settings.js | 8 +++ routes/index.js | 17 +++--- settings.json.template | 8 +++ views/address.pug | 118 +++++++++++++++++++---------------------- views/tx.pug | 36 ++++++++++--- 5 files changed, 113 insertions(+), 74 deletions(-) diff --git a/lib/settings.js b/lib/settings.js index 8881786..622faea 100644 --- a/lib/settings.js +++ b/lib/settings.js @@ -282,6 +282,14 @@ exports.transaction_page = { exports.address_page = { // show_sent_received: Determine whether to show Total Sent and Total Received columns at the top of the address page "show_sent_received": false, + // enable_hidden_address_view: Determine whether to allow viewing the special 'hidden_address' wallet address which is populated anytime a private/hidden wallet address is involved in a transaction + // NOTE: Enabling this option will add hyperlinks to all Hidden Addresses and allow viewing of the /address/hidden_address page + // Disabling this option will display all Hidden Addresses in plain-text without a hyperlink and visiting the /address/hidden_address page will result in a 404 error + "enable_hidden_address_view": false, + // enable_unknown_address_view: Determine whether to allow viewing the special 'unknown_address' wallet address which is populated anytime a wallet address cannot be deciphered + // NOTE: Enabling this option will add hyperlinks to all Unknown Addresses and allow viewing of the /address/unknown_address page + // Disabling this option will display all Unknown Addresses in plain-text without a hyperlink and visiting the /address/unknown_address page will result in a 404 error + "enable_unknown_address_view": false, // history_table: a collection of settings that pertain to the history table on the address page // Table data is populated via the /ext/getaddresstxs api "history_table": { diff --git a/routes/index.js b/routes/index.js index 5b51faa..cd7e944 100644 --- a/routes/index.js +++ b/routes/index.js @@ -178,12 +178,17 @@ function route_get_index(res, error) { } function route_get_address(res, hash) { - db.get_address(hash, false, function(address) { - if (address) - res.render('address', { active: 'address', address: address, showSync: db.check_show_sync_message()}); - else - route_get_index(res, hash + ' not found'); - }); + // check if trying to load a special address + if (hash != null && hash.toLowerCase() != 'coinbase' && ((hash.toLowerCase() == 'hidden_address' && settings.address_page.enable_hidden_address_view == true) || (hash.toLowerCase() == 'unknown_address' && settings.address_page.enable_unknown_address_view == true) || (hash.toLowerCase() != 'hidden_address' && hash.toLowerCase() != 'unknown_address'))) { + // lookup address in local collection + db.get_address(hash, false, function(address) { + if (address) + res.render('address', { active: 'address', address: address, showSync: db.check_show_sync_message()}); + else + route_get_index(res, hash + ' not found'); + }); + } else + route_get_index(res, hash + ' not found'); } function route_get_claim_form(res, hash) { diff --git a/settings.json.template b/settings.json.template index 256f41f..1bfaa59 100644 --- a/settings.json.template +++ b/settings.json.template @@ -366,6 +366,14 @@ "address_page": { // show_sent_received: Determine whether to show Total Sent and Total Received columns at the top of the address page "show_sent_received": false, + // enable_hidden_address_view: Determine whether to allow viewing the special 'hidden_address' wallet address which is populated anytime a private/hidden wallet address is involved in a transaction + // NOTE: Enabling this option will add hyperlinks to all Hidden Addresses and allow viewing of the /address/hidden_address page + // Disabling this option will display all Hidden Addresses in plain-text without a hyperlink and visiting the /address/hidden_address page will result in a 404 error + "enable_hidden_address_view": false, + // enable_unknown_address_view: Determine whether to allow viewing the special 'unknown_address' wallet address which is populated anytime a wallet address cannot be deciphered + // NOTE: Enabling this option will add hyperlinks to all Unknown Addresses and allow viewing of the /address/unknown_address page + // Disabling this option will display all Unknown Addresses in plain-text without a hyperlink and visiting the /address/unknown_address page will result in a 404 error + "enable_unknown_address_view": false, // history_table: a collection of settings that pertain to the history table on the address page // Table data is populated via the /ext/getaddresstxs api "history_table": { diff --git a/views/address.pug b/views/address.pug index e37cf52..97dc900 100644 --- a/views/address.pug +++ b/views/address.pug @@ -113,73 +113,67 @@ block content - var sentParts = sent.split('.'); - var received = Number(address.received / 100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true}); - var receivedParts = received.split('.'); - if address.a_id !== 'coinbase' || settings.address_page.show_sent_received == true - script. - $(document).ready(function() { - $('.summary-table').dataTable({ - info: false, - paging: false, - searching: false, - ordering: false, - responsive: true, - scrollX: true, - fnDrawCallback: function(settings) { - fixDataTableColumns(); - } - }) - }); + script. + $(document).ready(function() { + $('.summary-table').dataTable({ + info: false, + paging: false, + searching: false, + ordering: false, + responsive: true, + scrollX: true, + fnDrawCallback: function(settings) { + fixDataTableColumns(); + } + }) + }); - var theadClasses = []; if settings.shared_pages.table_header_bgcolor != null && settings.shared_pages.table_header_bgcolor != '' - theadClasses.push('thead-' + settings.shared_pages.table_header_bgcolor); .col-xs-12.col-md-12 - if address.a_id !== 'coinbase' || settings.address_page.show_sent_received == true - .card.card-default.border-0.card-address-summary.cardSpacer - .card-header(style='position:relative;') - if settings.claim_address_page.enabled == false || address.name == null || address.name == '' - if address.a_id == 'hidden_address' - strong #{settings.locale.hidden_address} - else if address.a_id == 'unknown_address' - strong #{settings.locale.unknown_address} - else - strong #{address.a_id} + .card.card-default.border-0.card-address-summary.cardSpacer + .card-header(style='position:relative;') + if settings.claim_address_page.enabled == false || address.name == null || address.name == '' + if address.a_id == 'hidden_address' + strong #{settings.locale.hidden_address} + else if address.a_id == 'unknown_address' + strong #{settings.locale.unknown_address} else - strong #{address.name} - | ​ - include ./includes/rl_labels.pug - if (!settings.labels[address.a_id] || !settings.labels[address.a_id].enabled) && settings.claim_address_page.enabled == true - a.badge.badge-pill.float-right.d-none.d-sm-block(href='/claim/' + address.a_id, style='font-size:smaller;padding-bottom:0;') - if address.name == null || address.name == '' - =" Is this yours? Claim it now for free!" - else - =" Update claimed address" - table.table.table-bordered.table-striped.summary-table.mobile-border-right(style='border-top:0;margin-top:0 !important;') - thead(class=theadClasses) - tr - if address.a_id !== 'coinbase' - th.text-center #{settings.locale.rl_balance} - span.small (#{settings.coin.symbol}) - if settings.address_page.show_sent_received == true - th.text-center #{settings.locale.total_sent} - span.small (#{settings.coin.symbol}) - if address.a_id !== 'coinbase' && settings.address_page.show_sent_received == true - th.text-center #{settings.locale.total_received} - span.small (#{settings.coin.symbol}) - if address.a_id !== 'coinbase' - th.text-center #{settings.locale.a_qr} - tbody - tr - if address.a_id !== 'coinbase' - td.text-center.addr-summary #{balanceParts[0]}. - span.decimal #{balanceParts[1]} - if settings.address_page.show_sent_received == true - td.text-center.addr-summary #{sentParts[0]}. - span.decimal #{sentParts[1]} - if address.a_id !== 'coinbase' && settings.address_page.show_sent_received == true - td.text-center.addr-summary #{receivedParts[0]}. - span.decimal #{receivedParts[1]} - if address.a_id !== 'coinbase' - td.text-center.addr-summary - img.qrcode(src='/qr/' + address.a_id) + strong #{address.a_id} + else + strong #{address.name} + | ​ + include ./includes/rl_labels.pug + if (!settings.labels[address.a_id] || !settings.labels[address.a_id].enabled) && settings.claim_address_page.enabled == true + a.badge.badge-pill.float-right.d-none.d-sm-block(href='/claim/' + address.a_id, style='font-size:smaller;padding-bottom:0;') + if address.name == null || address.name == '' + =" Is this yours? Claim it now for free!" + else + =" Update claimed address" + table.table.table-bordered.table-striped.summary-table.mobile-border-right(style='border-top:0;margin-top:0 !important;') + thead(class=theadClasses) + tr + th.text-center #{settings.locale.rl_balance} + span.small (#{settings.coin.symbol}) + if settings.address_page.show_sent_received == true + th.text-center #{settings.locale.total_sent} + span.small (#{settings.coin.symbol}) + if settings.address_page.show_sent_received == true + th.text-center #{settings.locale.total_received} + span.small (#{settings.coin.symbol}) + th.text-center #{settings.locale.a_qr} + tbody + tr + td.text-center.addr-summary #{balanceParts[0]}. + span.decimal #{balanceParts[1]} + if settings.address_page.show_sent_received == true + td.text-center.addr-summary #{sentParts[0]}. + span.decimal #{sentParts[1]} + if settings.address_page.show_sent_received == true + td.text-center.addr-summary #{receivedParts[0]}. + span.decimal #{receivedParts[1]} + td.text-center.addr-summary + img.qrcode(src='/qr/' + address.a_id) .card.card-default.border-0.cardSpacer .card-header strong #{settings.locale.ex_latest_transactions} diff --git a/views/tx.pug b/views/tx.pug index 4e6acbb..6d8832d 100644 --- a/views/tx.pug +++ b/views/tx.pug @@ -87,9 +87,17 @@ block content =address.claim_name include ./includes/rl_labels.pug else if address.addresses == 'hidden_address' - =settings.locale.hidden_sender + if settings.address_page.enable_hidden_address_view == true + a.loading.breakWord(href='/address/hidden_address') + =settings.locale.hidden_sender + else + =settings.locale.hidden_sender else - =settings.locale.unknown_sender + if settings.address_page.enable_unknown_address_view == true + a.loading.breakWord(href='/address/unknown_address') + =settings.locale.unknown_sender + else + =settings.locale.unknown_sender td.bg-danger.text-center #{ramountParts[0]}. span.decimal #{ramountParts[1]} else @@ -124,17 +132,33 @@ block content else if address.amount > 0 td if address.addresses == 'hidden_address' - =settings.locale.hidden_recipient + if settings.address_page.enable_hidden_address_view == true + a.loading.breakWord(href='/address/hidden_address') + =settings.locale.hidden_recipient + else + =settings.locale.hidden_recipient else - =settings.locale.unknown_recipient + if settings.address_page.enable_unknown_address_view == true + a.loading.breakWord(href='/address/unknown_address') + =settings.locale.unknown_recipient + else + =settings.locale.unknown_recipient td.bg-success.text-center #{ramountParts[0]}. span.decimal #{ramountParts[1]} else td(colspan='2') if address.addresses == 'hidden_address' - =settings.locale.hidden_recipient + if settings.address_page.enable_hidden_address_view == true + a.loading.breakWord(href='/address/hidden_address') + =settings.locale.hidden_recipient + else + =settings.locale.hidden_recipient else - =settings.locale.unknown_recipient + if settings.address_page.enable_unknown_address_view == true + a.loading.breakWord(href='/address/unknown_address') + =settings.locale.unknown_recipient + else + =settings.locale.unknown_recipient else - var ramount = Number(address.amount / 100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true}); - var ramountParts = ramount.split('.');