|
|
|
@ -24,6 +24,17 @@ if (cluster.isMaster) {
|
|
|
|
|
app.use(bodyParser.urlencoded({extended: false}));
|
|
|
|
|
app.use(bodyParser.json());
|
|
|
|
|
|
|
|
|
|
let pool_list = [];
|
|
|
|
|
if(global.config.pps.enable === true){
|
|
|
|
|
pool_list.push('pps');
|
|
|
|
|
}
|
|
|
|
|
if(global.config.solo.enable === true){
|
|
|
|
|
pool_list.push('solo');
|
|
|
|
|
}
|
|
|
|
|
if(global.config.pplns.enable === true){
|
|
|
|
|
pool_list.push('pplns');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ROUTES FOR OUR API
|
|
|
|
|
// =============================================================================
|
|
|
|
|
|
|
|
|
@ -62,16 +73,6 @@ app.get('/pool/stats', function (req, res) {
|
|
|
|
|
let localCache = global.database.getCache('pool_stats_global');
|
|
|
|
|
delete(localCache.minerHistory);
|
|
|
|
|
delete(localCache.hashHistory);
|
|
|
|
|
let pool_list = [];
|
|
|
|
|
if(global.config.pps.enable === true){
|
|
|
|
|
pool_list.push('pps');
|
|
|
|
|
}
|
|
|
|
|
if(global.config.solo.enable === true){
|
|
|
|
|
pool_list.push('solo');
|
|
|
|
|
}
|
|
|
|
|
if(global.config.pplns.enable === true){
|
|
|
|
|
pool_list.push('pplns');
|
|
|
|
|
}
|
|
|
|
|
res.json({pool_list: pool_list, pool_statistics: localCache});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
@ -150,11 +151,15 @@ app.get('/pool/ports', function (req, res) {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.get('/pool/blocks/:pool_type', function (req, res) {
|
|
|
|
|
res.json(global.database.getBlockList(req.params.pool_type));
|
|
|
|
|
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 25;
|
|
|
|
|
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
|
|
|
|
|
res.json(global.database.getBlockList(req.params.pool_type).slice(page, page + limit + 1));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.get('/pool/blocks', function (req, res) {
|
|
|
|
|
res.json(global.database.getBlockList());
|
|
|
|
|
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 25;
|
|
|
|
|
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
|
|
|
|
|
res.json(global.database.getBlockList().slice(page, page + limit + 1));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.get('/pool/payments/:pool_type', function (req, res) {
|
|
|
|
@ -205,8 +210,10 @@ app.get('/pool/payments/:pool_type', function (req, res) {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.get('/pool/payments', function (req, res) {
|
|
|
|
|
let query = "SELECT * FROM transactions ORDER BY id DESC";
|
|
|
|
|
global.mysql.query(query).then(function (rows) {
|
|
|
|
|
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 10;
|
|
|
|
|
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
|
|
|
|
|
let query = "SELECT * FROM transactions ORDER BY id DESC LIMIT ? page ?";
|
|
|
|
|
global.mysql.query(query, [limit, page]).then(function (rows) {
|
|
|
|
|
if (rows.length === 0) {
|
|
|
|
|
return res.json([]);
|
|
|
|
|
}
|
|
|
|
@ -247,19 +254,21 @@ app.get('/miner/:address/identifiers', function (req, res) {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
app.get('/miner/:address/payments', function (req, res) {
|
|
|
|
|
let limit = typeof(req.query.limit) !== 'undefined' ? Number(req.query.limit) : 25;
|
|
|
|
|
let page = typeof(req.query.page) !== 'undefined' ? Number(req.query.page) : 0;
|
|
|
|
|
let address_parts = req.params.address.split('.');
|
|
|
|
|
let address = address_parts[0];
|
|
|
|
|
let payment_id = address_parts[1];
|
|
|
|
|
let query = "SELECT amount, pool_type, transaction_id, UNIX_TIMESTAMP(paid_time) as ts FROM " +
|
|
|
|
|
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id = ? ORDER BY paid_time DESC LIMIT 25";
|
|
|
|
|
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id = ? ORDER BY paid_time DESC LIMIT ? OFFSET ?";
|
|
|
|
|
if (typeof(payment_id) === 'undefined') {
|
|
|
|
|
query = "SELECT amount as amt, pool_type, transaction_id, UNIX_TIMESTAMP(paid_time) as ts FROM " +
|
|
|
|
|
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id IS ? ORDER BY paid_time DESC LIMIT 25";
|
|
|
|
|
"payments WHERE payment_address = ? AND paid_time < ? AND payment_id IS ? ORDER BY paid_time DESC LIMIT ? OFFSET ?";
|
|
|
|
|
}
|
|
|
|
|
let start = req.query.start || Date.now() / 1000;
|
|
|
|
|
start *= 1000;
|
|
|
|
|
let response = [];
|
|
|
|
|
global.mysql.query(query, [address, global.support.formatDate(start), payment_id]).then(function (rows) {
|
|
|
|
|
global.mysql.query(query, [address, global.support.formatDate(start), payment_id, limit, page]).then(function (rows) {
|
|
|
|
|
if (rows.length === 0) {
|
|
|
|
|
return res.json(response);
|
|
|
|
|
}
|
|
|
|
|