Address Labels -> Claim Address
This commit is contained in:
@@ -19,7 +19,7 @@ nodeapi.setWalletDetails(settings.wallet);
|
||||
if (settings.heavy != true) {
|
||||
nodeapi.setAccess('only', ['getinfo', 'getnetworkhashps', 'getmininginfo','getdifficulty', 'getconnectioncount',
|
||||
'getmasternodecount', 'getmasternodelist', 'getvotelist', 'getblockcount', 'getblockhash', 'getblock', 'getrawtransaction',
|
||||
'getpeerinfo', 'gettxoutsetinfo']);
|
||||
'getpeerinfo', 'gettxoutsetinfo', 'verifymessage']);
|
||||
} else {
|
||||
// enable additional heavy api calls
|
||||
/*
|
||||
@@ -36,7 +36,7 @@ if (settings.heavy != true) {
|
||||
nodeapi.setAccess('only', ['getinfo', 'getstakinginfo', 'getnetworkhashps', 'getdifficulty', 'getconnectioncount',
|
||||
'getmasternodecount', 'getmasternodelist', 'getvotelist', 'getblockcount', 'getblockhash',
|
||||
'getblock', 'getrawtransaction', 'getmaxmoney', 'getvote', 'getmaxvote', 'getphase', 'getreward', 'getpeerinfo',
|
||||
'getnextrewardestimate', 'getnextrewardwhenstr', 'getnextrewardwhensec', 'getsupply', 'gettxoutsetinfo']);
|
||||
'getnextrewardestimate', 'getnextrewardwhenstr', 'getnextrewardwhensec', 'getsupply', 'gettxoutsetinfo', 'verifymessage']);
|
||||
}
|
||||
// determine if cors should be enabled
|
||||
if (settings.usecors == true) {
|
||||
@@ -244,6 +244,27 @@ app.use('/ext/getaddresstxsajax/:address', function(req,res){
|
||||
});
|
||||
});
|
||||
|
||||
app.post('/address/:hash/claim', function(req, res){
|
||||
var address = req.body.address;
|
||||
var signature = req.body.signature;
|
||||
var message = req.body.message;
|
||||
request({
|
||||
url: 'http://127.0.0.1:' + settings.port + '/api/verifymessage?address='+address+ '&signature='+ signature + '&message=' + message,
|
||||
method: 'GET',
|
||||
}, function(error, response, body){
|
||||
//console.log('error', error);
|
||||
//console.log('response', response);
|
||||
if(body == "false"){
|
||||
console.log('failed');
|
||||
res.json({"status": "failed", "error":true, "message": error});
|
||||
}else if(body == "true"){
|
||||
db.update_label(address, message, function(){
|
||||
res.json({"status": "success"});
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
app.use('/ext/connections', function(req,res){
|
||||
db.get_peers(function(peers){
|
||||
res.send({data: peers});
|
||||
|
||||
@@ -330,6 +330,18 @@ module.exports = {
|
||||
});
|
||||
},
|
||||
|
||||
update_label: function(hash, message, cb){
|
||||
find_address(hash, false, function(address){
|
||||
if (address){
|
||||
Address.updateOne({a_id:hash}, {
|
||||
name: message,
|
||||
}, function(){
|
||||
return cb();
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
check_stats: function(coin, cb) {
|
||||
Stats.findOne({coin: coin}, function(err, stats) {
|
||||
if(stats) {
|
||||
|
||||
+3
-3
@@ -117,7 +117,7 @@ module.exports = {
|
||||
} else {
|
||||
client.cmd([{method:'getblockhash', params: [parseInt(height)]}], function(err, response){
|
||||
if (err)
|
||||
console.log('There was an error. Check your console.');
|
||||
return cb('There was an error. Check your console.');
|
||||
else
|
||||
return cb(response);
|
||||
});
|
||||
@@ -133,7 +133,7 @@ module.exports = {
|
||||
} else {
|
||||
client.cmd([{method:'getblock', params: [hash]}], function(err, response){
|
||||
if (err)
|
||||
console.log('There was an error. Check your console.');
|
||||
return cb('There was an error. Check your console.');
|
||||
else
|
||||
return cb(response);
|
||||
});
|
||||
@@ -149,7 +149,7 @@ module.exports = {
|
||||
} else {
|
||||
client.cmd([{method:'getrawtransaction', params: [hash, 1]}], function(err, response){
|
||||
if (err)
|
||||
console.log('There was an error. Check your console.');
|
||||
return cb('There was an error. Check your console.');
|
||||
else
|
||||
return cb(response);
|
||||
});
|
||||
|
||||
+22
-5
@@ -29,12 +29,14 @@ module.exports = function(){
|
||||
|
||||
var command = [];
|
||||
|
||||
if (method == 'sendmany' ||
|
||||
method == 'getmasternodecountonline' ||
|
||||
method == 'getmasternodecount' ||
|
||||
method == 'getmasternodelist' ||
|
||||
if (method == 'sendmany' ||
|
||||
method == 'getmasternodecountonline' ||
|
||||
method == 'getmasternodecount' ||
|
||||
method == 'getmasternodelist' ||
|
||||
method == 'getvotelist') {
|
||||
command = specialApiCase(method);
|
||||
} else if (method == 'verifymessage') {
|
||||
command = specialApiCase(method, query_parameters);
|
||||
} else {
|
||||
command = [{
|
||||
method: method,
|
||||
@@ -74,7 +76,7 @@ module.exports = function(){
|
||||
}
|
||||
}
|
||||
|
||||
function specialApiCase(method_name){
|
||||
function specialApiCase(method_name, query_parameters){
|
||||
var params = [];
|
||||
|
||||
switch(method_name) {
|
||||
@@ -128,6 +130,21 @@ module.exports = function(){
|
||||
params.push(sSplit[i]);
|
||||
}
|
||||
break;
|
||||
case 'verifymessage':
|
||||
for (var parameter in query_parameters) {
|
||||
if (query_parameters.hasOwnProperty(parameter)) {
|
||||
if (parameter == 'address' || parameter == 'message')
|
||||
params.push(query_parameters[parameter]);
|
||||
if (parameter == 'signature') {
|
||||
var param = decodeURIComponent(query_parameters[parameter]);
|
||||
while (param.indexOf(" ") > -1) {
|
||||
param = param.replace(" ", "+");
|
||||
}
|
||||
params.push(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return [{
|
||||
|
||||
+3
-2
@@ -3,9 +3,10 @@ var mongoose = require('mongoose')
|
||||
|
||||
var AddressSchema = new Schema({
|
||||
a_id: { type: String, unique: true, index: true},
|
||||
received: { type: Number, default: 0 },
|
||||
name: { type: String, default: ''},
|
||||
received: { type: Number, default: 0, index: true },
|
||||
sent: { type: Number, default: 0 },
|
||||
balance: {type: Number, default: 0},
|
||||
balance: {type: Number, default: 0, index: true},
|
||||
}, {id: false});
|
||||
|
||||
module.exports = mongoose.model('Address', AddressSchema);
|
||||
|
||||
@@ -109,6 +109,16 @@ function route_get_address(res, hash, count) {
|
||||
});
|
||||
}
|
||||
|
||||
function route_get_claim_form(res, hash){
|
||||
db.get_address(hash, false, function(address) {
|
||||
if (address) {
|
||||
res.render("claim_address", { active: "address", address: address});
|
||||
} else {
|
||||
route_get_index(res, hash + ' not found');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* GET home page. */
|
||||
router.get('/', function(req, res) {
|
||||
route_get_index(res, null);
|
||||
@@ -207,6 +217,10 @@ router.get('/block/:hash', function(req, res) {
|
||||
route_get_block(res, req.params.hash);
|
||||
});
|
||||
|
||||
router.get('/address/:hash/claim', function(req,res){
|
||||
route_get_claim_form(res, req.params.hash);
|
||||
});
|
||||
|
||||
router.get('/address/:hash', function(req, res) {
|
||||
route_get_address(res, req.params.hash, settings.txcount);
|
||||
});
|
||||
|
||||
+19
-12
@@ -11,19 +11,26 @@ block content
|
||||
.panel.panel-default.panel-address-summary
|
||||
.panel-heading(style='position:relative;')
|
||||
strong #{address.a_id}
|
||||
if settings.labels[address.a_id]
|
||||
if settings.labels[address.a_id].type
|
||||
label(class='label label-' + settings.labels[address.a_id].type + ' pull-right hidden-xs', style='margin-left:15px;')
|
||||
=settings.labels[address.a_id].label
|
||||
if settings.labels[address.a_id].url
|
||||
a(href=settings.labels[address.a_id].url, target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
if settings.labels[address.a_id]
|
||||
if settings.labels[address.a_id].type
|
||||
label(class='label label-'+settings.labels[address.a_id].type+' pull-right hidden-xs', style='margin-left:15px;')
|
||||
=settings.labels[address.a_id].label
|
||||
if settings.labels[address.a_id].url
|
||||
a(href=settings.labels[address.a_id].url, target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
else
|
||||
label.label.label-default.pull-right.hidden-xs(style='margin-left:15px;')
|
||||
=settings.labels[address.a_id].label
|
||||
if settings.labels[address.a_id].url
|
||||
a(href=settings.labels[address.a_id].url, target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
else
|
||||
label.label.label-default.pull-right.hidden-xs(style='margin-left:15px;')
|
||||
=settings.labels[address.a_id].label
|
||||
if settings.labels[address.a_id].url
|
||||
a(href=settings.labels[address.a_id].url, target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
if address.name !== "" && typeof address.name !== "undefined"
|
||||
label(class='label label-default pull-right hidden-xs', style='margin-left:15px;')
|
||||
=address.name
|
||||
else
|
||||
a.badge.badge-pill.pull-right(href="/address/"+ address.a_id +"/claim" style="font-size: smaller;")
|
||||
=" Is this yours? Claim it now for free!"
|
||||
table.table.table-bordered.table-striped.summary-table
|
||||
thead
|
||||
tr
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
script.
|
||||
$(function () {
|
||||
|
||||
$('form').on('submit', function (e) {
|
||||
|
||||
e.preventDefault();
|
||||
var address;
|
||||
var message;
|
||||
var signature;
|
||||
address = $('input#address').val();
|
||||
message = $('input#message').val();
|
||||
signature = $('input#signature').val();
|
||||
var url = '/address/'+address+'/claim';
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: url,
|
||||
data: {
|
||||
'address': address,
|
||||
'message': message,
|
||||
'signature': signature
|
||||
},
|
||||
success: function (data) {
|
||||
if(data.status == "success")
|
||||
window.location = "/address/"+address;
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
- var balance = ((address.received - address.sent) / 100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true});
|
||||
- var balanceParts = balance.split('.');
|
||||
- var sent = (address.sent /100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true});
|
||||
- var sentParts = sent.split('.');
|
||||
- var received = (address.received / 100000000).toLocaleString('en',{'minimumFractionDigits':2,'maximumFractionDigits':8,'useGrouping':true});
|
||||
- var receivedParts = received.split('.');
|
||||
.col-xs-12.col-md-10.col-md-offset-1
|
||||
.panel.panel-default.panel-address-summary
|
||||
.panel-heading(style='position:relative;')
|
||||
strong=address.a_id
|
||||
if settings.labels[address.a_id]
|
||||
if settings.labels[address.a_id].type
|
||||
label(class='badge label-#{ settings.labels[address.a_id].type} pull-right d-none d-sm-block', style='margin-left:15px;')
|
||||
=settings.labels[address.a_id].label
|
||||
if settings.labels[address.a_id].url
|
||||
a(href="#{ settings.labels[address.a_id].url}'", target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
else
|
||||
label.badge.badge-pill.pull-right.d-none.d-sm-block(style='margin-left:15px;')
|
||||
=settings.labels[address.a_id].label
|
||||
if settings.labels[address.a_id].url
|
||||
a(href='#{settings.labels[address.a_id].url}', target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
table.table.table-bordered.table-striped.summary-table
|
||||
thead
|
||||
tr
|
||||
if settings.show_sent_received == true
|
||||
th.hidden-xs #{settings.locale.total_sent} (#{settings.symbol})
|
||||
if address.a_id !== 'coinbase'
|
||||
if settings.show_sent_received == true
|
||||
th.hidden-xs #{settings.locale.total_received} (#{settings.symbol})
|
||||
th #{settings.locale.rl_balance} (#{settings.symbol})
|
||||
th #{settings.locale.a_qr}
|
||||
tbody
|
||||
tr
|
||||
if settings.show_sent_received == true
|
||||
td.addr-summary.hidden-xs #{sentParts[0]}.
|
||||
span.decimal #{sentParts[1]}
|
||||
if address.a_id !== 'coinbase'
|
||||
if settings.show_sent_received == true
|
||||
td.addr-summary.hidden-xs #{receivedParts[0]}.
|
||||
span.decimal #{receivedParts[1]}
|
||||
td.addr-summary #{balanceParts[0]}.
|
||||
span.decimal #{balanceParts[1]}
|
||||
td.addr-summary
|
||||
img.qrcode(src='/qr/'+address.a_id)
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
strong Claim this Address
|
||||
form#claimForm
|
||||
.form-group
|
||||
fieldset
|
||||
label.control-label(for='address') Wallet Address
|
||||
input#address.form-control(type='text' value=address.a_id readonly="")
|
||||
.form-group
|
||||
fieldset
|
||||
label(for='message') Username
|
||||
input#message.form-control(type='text' placeholder='User Name')
|
||||
.form-group
|
||||
fieldset
|
||||
label(for='signature') Signature
|
||||
input#signature.form-control(type='text' placeholder='Signature')
|
||||
button.btn.btn-primary(type='submit') Submit
|
||||
.footer-padding
|
||||
@@ -1,13 +1,17 @@
|
||||
if settings.labels[item.a_id]
|
||||
if settings.labels[item.a_id].type
|
||||
label(class='label label-' + settings.labels[item.a_id].type + ' hidden-xs', style='margin-left:15px;')
|
||||
if settings.labels[item.a_id].type
|
||||
label(class='label label-' + settings.labels[item.a_id].type + ' pull-right hidden-xs', style='margin-left:15px;')
|
||||
=settings.labels[item.a_id].label
|
||||
if settings.labels[item.a_id].url
|
||||
a(href=settings.labels[item.a_id].url, target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
else
|
||||
label.label.label-default.hidden-xs(style='margin-left:15px;')
|
||||
label.label.label-default.pull-right.hidden-xs(style='margin-left:15px;')
|
||||
=settings.labels[item.a_id].label
|
||||
if settings.labels[item.a_id].url
|
||||
a(href=settings.labels[item.a_id].url, target='_blank')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
span.fa.fa-question-circle(style='margin-left:5px;')
|
||||
else
|
||||
if item.name !== "" && typeof item.name !== "undefined"
|
||||
label(class='label label-default pull-right hidden-xs', style='margin-left:15px;')
|
||||
=item.name
|
||||
Reference in New Issue
Block a user