Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ Comes with lightweight example front-end script which uses the pool's AJAX API.
* https://moneropool.com
* http://monero.crypto-pool.fr
* https://minexmr.com
* https://moneropool.us


Usage
Expand Down
15 changes: 11 additions & 4 deletions lib/pool.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ var shareTrustMinFloat = shareTrustEnabled ? config.poolServer.shareTrust.min /


var banningEnabled = config.poolServer.banning && config.poolServer.banning.enabled;
var client_ip = {};


setInterval(function(){
Expand Down Expand Up @@ -97,7 +98,7 @@ process.on('message', function(message) {


function IsBannedIp(ip){
if (!banningEnabled || !bannedIPs[ip]) return false;
if (!banningEnabled || !bannedIPs[ip] || ip == "127.0.0.1") return false;

var bannedTime = bannedIPs[ip];
var bannedTimeAgo = Date.now() - bannedTime;
Expand Down Expand Up @@ -616,7 +617,8 @@ var httpResponse = ' 200 OK\nContent-Type: text/plain\nContent-Length: 20\n\nmin

function startPoolServerTcp(callback){
async.each(config.poolServer.ports, function(portData, cback){
var handleMessage = function(socket, jsonData, pushMessage){
var handleMessage = function(socket, jsonData, pushMessage, c_ip){
c_ip = c_ip || socket.remoteAddress;
if (!jsonData.id) {
log('warn', logSystem, 'Miner RPC request missing RPC id');
return;
Expand All @@ -641,7 +643,7 @@ function startPoolServerTcp(callback){
socket.write(sendData);
};

handleMinerMethod(jsonData.method, jsonData.params, socket.remoteAddress, portData, sendReply, pushMessage);
handleMinerMethod(jsonData.method, jsonData.params, c_ip, portData, sendReply, pushMessage);
};

net.createServer(function(socket){
Expand Down Expand Up @@ -689,13 +691,18 @@ function startPoolServerTcp(callback){
break;
}
}
if (message.indexOf('PROXY TCP4') === 0) {
client_ip[socket.remotePort] = message.split(' ')[2];
log('info', logSystem, 'Proxy V1 request %s: %s', [client_ip[socket.remotePort], message]);
continue;
}

log('warn', logSystem, 'Malformed message from %s: %s', [socket.remoteAddress, message]);
socket.destroy();

break;
}
handleMessage(socket, jsonData, pushMessage);
handleMessage(socket, jsonData, pushMessage, client_ip[socket.remotePort]);
}
dataBuffer = incomplete;
}
Expand Down
23 changes: 20 additions & 3 deletions website_example/pages/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,8 @@ <h4 class="yourStats">Payments</h4>

var intervalMarketPolling = setInterval(updateMarkets, 300000); //poll market data every 5 minutes
var xhrMarketGets = {};
var conversionRate;
var conversionUnit;
updateMarkets();
function updateMarkets(){
var completedFetches = 0;
Expand All @@ -300,6 +302,11 @@ <h4 class="yourStats">Payments</h4>
if (price > 1) price = Math.round(price * 100) / 100;
else price = marketsData[f].ticker.price;

if (typeof(cryptonatorEarnings) != 'undefined' && cryptonatorWidget[f] == cryptonatorEarnings) {
conversionRate = parseFloat(price);
conversionUnit = marketsData[f].ticker.target;
}

$marketHeader.after('<div class="marketTicker">' + marketsData[f].ticker.base + ': <span>' + price + ' ' + marketsData[f].ticker.target + '</span></div>');
}
$('#marketLastUpdated').timeago('update', new Date(marketsData[0].timestamp * 1000).toISOString());
Expand Down Expand Up @@ -328,7 +335,7 @@ <h4 class="yourStats">Payments</h4>
var inp2 = parseFloat($('#calcHashRate').val()) * rateUnit;
var resl = ( lastStats.network.reward / coinUnits) / ((lastStats.network.difficulty / inp2) / 86400 );
if (!isNaN(resl)) {
updateText('calcHashAmount', (Math.round(resl * 100) / 100).toString());
updateText('calcHashAmount', (Math.round(resl * 1000) / 1000).toString());
return;
}
}
Expand Down Expand Up @@ -408,8 +415,18 @@ <h4 class="yourStats">Payments</h4>

updateText('yourHashrateHolder', (data.stats.hashrate || '0 H') + '/sec');
updateText('yourHashes', (data.stats.hashes || 0).toString());
updateText('yourPaid', getReadableCoins(data.stats.paid));
updateText('yourPendingBalance', getReadableCoins(data.stats.balance));
var earningsPaid = (data.stats.paid || 0);
var convertedPaid = Math.round(100 * parseFloat(getReadableCoins(earningsPaid,0,false)) * conversionRate) / 100;
var earningsBalance = (data.stats.balance || 0);
var convertedBalance = Math.round(100 * parseFloat(getReadableCoins(earningsBalance,0,false)) * conversionRate) / 100;
if (conversionUnit) {
updateText('yourPaid', getReadableCoins(earningsPaid) + " (" + convertedPaid + " " + conversionUnit + ")");
updateText('yourPendingBalance', getReadableCoins(earningsBalance) + " (" + convertedBalance + " " + conversionUnit + ")");
}
else {
updateText('yourPaid', getReadableCoins(earningsPaid));
updateText('yourPendingBalance', getReadableCoins(earningsBalance));
}

renderPayments(data.payments);

Expand Down