From 37475434248268b8f05eb53714f3609affac8595 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Wed, 5 Feb 2014 15:30:26 +0100 Subject: [PATCH 1/3] [UPDATE] Check for wallet balance before starting payouts --- cronjobs/payouts.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index 908734ee..2b99fee6 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -34,9 +34,19 @@ if ($bitcoin->can_connect() !== true) { $log->logFatal(" unable to connect to RPC server, exiting"); $monitoring->endCronjob($cron_name, 'E0006', 1, true); } +if (!$dWalletBalance = $bitcoin->getbalance()) + $dWalletBalance = 0; // Fetch our manual payouts, process them if ($setting->getValue('disable_manual_payouts') != 1 && $aManualPayouts = $transaction->getMPQueue()) { + // Calculate our sum first + $dMPTotalAmount = 0; + foreach ($aManualPayouts as $aUserData) $dMPTotalAmount += $aUserData['confirmed']; + if ($dMPTotalAmount > $dWalletBalance) { + $log->logError(" Wallet does not cover MP payouts"); + $monitoring->endCronjob($cron_name, 'E0006', 0, true); + } + $log->logInfo(' found ' . count($aManualPayouts) . ' queued manual payouts'); $mask = ' | %-10.10s | %-25.25s | %-20.20s | %-40.40s | %-20.20s |'; $log->logInfo(sprintf($mask, 'UserID', 'Username', 'Balance', 'Address', 'Payout ID')); @@ -73,8 +83,18 @@ if ($setting->getValue('disable_manual_payouts') != 1 && $aManualPayouts = $tran } } +if (!$dWalletBalance = $bitcoin->getbalance()) + $dWalletBalance = 0; // Fetch our auto payouts, process them if ($setting->getValue('disable_auto_payouts') != 1 && $aAutoPayouts = $transaction->getAPQueue()) { + // Calculate our sum first + $dAPTotalAmount = 0; + foreach ($aAutoPayouts as $aUserData) $dAPTotalAmount += $aUserData['confirmed']; + if ($dAPTotalAmount > $dWalletBalance) { + $log->logError(" Wallet does not cover AP payouts"); + $monitoring->endCronjob($cron_name, 'E0006', 0, true); + } + $log->logInfo(' found ' . count($aAutoPayouts) . ' queued auto payouts'); $mask = ' | %-10.10s | %-25.25s | %-20.20s | %-40.40s | %-20.20s |'; $log->logInfo(sprintf($mask, 'UserID', 'Username', 'Balance', 'Address', 'Threshold')); From 499aa986c0cf605584c33781a79cae585ac183c3 Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Wed, 5 Feb 2014 16:15:18 +0100 Subject: [PATCH 2/3] [FIX] Cron error code for monitoring --- cronjobs/payouts.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index 2b99fee6..5d55a90c 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -44,7 +44,7 @@ if ($setting->getValue('disable_manual_payouts') != 1 && $aManualPayouts = $tran foreach ($aManualPayouts as $aUserData) $dMPTotalAmount += $aUserData['confirmed']; if ($dMPTotalAmount > $dWalletBalance) { $log->logError(" Wallet does not cover MP payouts"); - $monitoring->endCronjob($cron_name, 'E0006', 0, true); + $monitoring->endCronjob($cron_name, 'E0078', 0, true); } $log->logInfo(' found ' . count($aManualPayouts) . ' queued manual payouts'); @@ -92,7 +92,7 @@ if ($setting->getValue('disable_auto_payouts') != 1 && $aAutoPayouts = $transact foreach ($aAutoPayouts as $aUserData) $dAPTotalAmount += $aUserData['confirmed']; if ($dAPTotalAmount > $dWalletBalance) { $log->logError(" Wallet does not cover AP payouts"); - $monitoring->endCronjob($cron_name, 'E0006', 0, true); + $monitoring->endCronjob($cron_name, 'E0078', 0, true); } $log->logInfo(' found ' . count($aAutoPayouts) . ' queued auto payouts'); From bdaa4933fa72ccc568df0484d41f48f3e58eaf3c Mon Sep 17 00:00:00 2001 From: Sebastian Grewe Date: Wed, 5 Feb 2014 16:16:23 +0100 Subject: [PATCH 3/3] [FIX] Cron error code for monitoring --- cronjobs/payouts.php | 4 ++-- public/include/config/error_codes.inc.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php index 5d55a90c..8fbcac4f 100755 --- a/cronjobs/payouts.php +++ b/cronjobs/payouts.php @@ -44,7 +44,7 @@ if ($setting->getValue('disable_manual_payouts') != 1 && $aManualPayouts = $tran foreach ($aManualPayouts as $aUserData) $dMPTotalAmount += $aUserData['confirmed']; if ($dMPTotalAmount > $dWalletBalance) { $log->logError(" Wallet does not cover MP payouts"); - $monitoring->endCronjob($cron_name, 'E0078', 0, true); + $monitoring->endCronjob($cron_name, 'E0079', 0, true); } $log->logInfo(' found ' . count($aManualPayouts) . ' queued manual payouts'); @@ -92,7 +92,7 @@ if ($setting->getValue('disable_auto_payouts') != 1 && $aAutoPayouts = $transact foreach ($aAutoPayouts as $aUserData) $dAPTotalAmount += $aUserData['confirmed']; if ($dAPTotalAmount > $dWalletBalance) { $log->logError(" Wallet does not cover AP payouts"); - $monitoring->endCronjob($cron_name, 'E0078', 0, true); + $monitoring->endCronjob($cron_name, 'E0079', 0, true); } $log->logInfo(' found ' . count($aAutoPayouts) . ' queued auto payouts'); diff --git a/public/include/config/error_codes.inc.php b/public/include/config/error_codes.inc.php index 50c4db24..93ec3d3c 100644 --- a/public/include/config/error_codes.inc.php +++ b/public/include/config/error_codes.inc.php @@ -74,4 +74,5 @@ $aErrorCodes['E0075'] = 'Upgrade required'; $aErrorCodes['E0076'] = 'No coins in wallet available'; $aErrorCodes['E0077'] = 'RPC method or connection failed'; $aErrorCodes['E0078'] = 'RPC method did not return 200 OK'; +$aErrorCodes['E0079'] = 'Wallet does not cover payouts total amount'; ?>