Merge pull request #1922 from MPOS/disable-worker-notifications

[ADDED] IDLE Worker Global Switch
This commit is contained in:
Sebastian Grewe 2014-03-11 09:32:06 +01:00
commit 32ebfd851e
8 changed files with 57 additions and 43 deletions

View File

@ -29,47 +29,49 @@ if ($setting->getValue('disable_notifications') == 1) {
$monitoring->endCronjob($cron_name, 'E0009', 0, true, false); $monitoring->endCronjob($cron_name, 'E0009', 0, true, false);
} }
$log->logDebug(" IDLE Worker Notifications ..."); if ($setting->getValue('notifications_disable_idle_worker') != 1) {
// Find all IDLE workers $log->logDebug(" IDLE Worker Notifications ...");
$aWorkers = $worker->getAllIdleWorkers(); // Find all IDLE workers
if (empty($aWorkers)) { $aWorkers = $worker->getAllIdleWorkers();
$log->logDebug(" no idle workers found"); if (empty($aWorkers)) {
} else { $log->logDebug(" no idle workers found");
$log->logInfo(" found " . count($aWorkers) . " IDLE workers"); } else {
foreach ($aWorkers as $aWorker) { $log->logInfo(" found " . count($aWorkers) . " IDLE workers");
$aData = $aWorker; foreach ($aWorkers as $aWorker) {
$aData['username'] = $user->getUserName($aWorker['account_id']); $aData = $aWorker;
$aData['subject'] = 'IDLE Worker : ' . $aWorker['username']; $aData['username'] = $user->getUserName($aWorker['account_id']);
$aData['worker'] = $aWorker['username']; $aData['subject'] = 'IDLE Worker : ' . $aWorker['username'];
$aData['email'] = $user->getUserEmail($aData['username']); $aData['worker'] = $aWorker['username'];
$log->logDebug(" " . $aWorker['username'] . "..."); $aData['email'] = $user->getUserEmail($aData['username']);
if (!$notification->sendNotification($aWorker['account_id'], 'idle_worker', $aData)) $log->logDebug(" " . $aWorker['username'] . "...");
$log->logDebug(" Failed sending notifications: " . $notification->getCronError()); if (!$notification->sendNotification($aWorker['account_id'], 'idle_worker', $aData))
} $log->logDebug(" Failed sending notifications: " . $notification->getCronError());
}
$log->logDebug(" Reset IDLE Worker Notifications ...");
// We notified, lets check which recovered
$aNotifications = $notification->getAllActive('idle_worker');
if (!empty($aNotifications)) {
$log->logInfo(" found " . count($aNotifications) . " active notification(s)");
foreach ($aNotifications as $aNotification) {
$aData = json_decode($aNotification['data'], true);
$aWorker = $worker->getWorker($aData['id']);
$log->logDebug(" " . $aWorker['username'] . " ...");
if ($aWorker['hashrate'] > 0) {
if ($notification->setInactive($aNotification['id'])) {
$log->logDebug(" updated #" . $aNotification['id'] . " for " . $aWorker['username'] . " as inactive");
} else {
$log->logError(" failed to update #" . $aNotification['id'] . " for " . $aWorker['username']);
}
} else {
$log->logDebug(" still inactive");
} }
} }
} else {
$log->logDebug(" no active IDLE worker notifications");
$log->logDebug(" Reset IDLE Worker Notifications ...");
// We notified, lets check which recovered
$aNotifications = $notification->getAllActive('idle_worker');
if (!empty($aNotifications)) {
$log->logInfo(" found " . count($aNotifications) . " active notification(s)");
foreach ($aNotifications as $aNotification) {
$aData = json_decode($aNotification['data'], true);
$aWorker = $worker->getWorker($aData['id']);
$log->logDebug(" " . $aWorker['username'] . " ...");
if ($aWorker['hashrate'] > 0) {
if ($notification->setInactive($aNotification['id'])) {
$log->logDebug(" updated #" . $aNotification['id'] . " for " . $aWorker['username'] . " as inactive");
} else {
$log->logError(" failed to update #" . $aNotification['id'] . " for " . $aWorker['username']);
}
} else {
$log->logDebug(" still inactive");
}
}
} else {
$log->logDebug(" no active IDLE worker notifications");
}
} }
require_once('cron_end.inc.php'); require_once('cron_end.inc.php');

View File

@ -425,3 +425,10 @@ $aSettings['notifications'][] = array(
'name' => 'notifications_disable_block', 'value' => $setting->getValue('notifications_disable_block'), 'name' => 'notifications_disable_block', 'value' => $setting->getValue('notifications_disable_block'),
'tooltip' => 'Enable/Disable block notifications globally. Will remove the user option too.' 'tooltip' => 'Enable/Disable block notifications globally. Will remove the user option too.'
); );
$aSettings['notifications'][] = array(
'display' => 'Disable IDLE Worker Notifications', 'type' => 'select',
'options' => array( 0 => 'No', 1 => 'Yes'),
'default' => 0,
'name' => 'notifications_disable_idle_worker', 'value' => $setting->getValue('notifications_disable_idle_worker'),
'tooltip' => 'Enable/Disable IDLE worker notifications globally. Will remove the user option too.'
);

View File

@ -24,6 +24,7 @@ if ($user->isAuthenticated()) {
// Fetch global settings // Fetch global settings
$smarty->assign('DISABLE_BLOCKNOTIFICATIONS', $setting->getValue('notifications_disable_block')); $smarty->assign('DISABLE_BLOCKNOTIFICATIONS', $setting->getValue('notifications_disable_block'));
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
// Fetch user notification settings // Fetch user notification settings
$aSettings = $notification->getNotificationSettings($_SESSION['USERDATA']['id']); $aSettings = $notification->getNotificationSettings($_SESSION['USERDATA']['id']);

View File

@ -40,6 +40,7 @@ if ($user->isAuthenticated()) {
break; break;
} }
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
$aWorkers = $worker->getWorkers($_SESSION['USERDATA']['id']); $aWorkers = $worker->getWorkers($_SESSION['USERDATA']['id']);
if (!$aWorkers) $_SESSION['POPUP'][] = array('CONTENT' => 'You have no workers configured', 'TYPE' => 'errormsg'); if (!$aWorkers) $_SESSION['POPUP'][] = array('CONTENT' => 'You have no workers configured', 'TYPE' => 'errormsg');

View File

@ -15,6 +15,7 @@ empty($_REQUEST['start']) ? $start = 0 : $start = $_REQUEST['start'];
$aWorkers = $worker->getAllWorkers($iLimit, $interval, $start); $aWorkers = $worker->getAllWorkers($iLimit, $interval, $start);
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
$smarty->assign('LIMIT', $iLimit); $smarty->assign('LIMIT', $iLimit);
$smarty->assign('WORKERS', $aWorkers); $smarty->assign('WORKERS', $aWorkers);
$smarty->assign('CONTENT', 'default.tpl'); $smarty->assign('CONTENT', 'default.tpl');

View File

@ -13,6 +13,7 @@
<th align="left">Type</th> <th align="left">Type</th>
<th align="center">Active</th> <th align="center">Active</th>
</tr> </tr>
{if $DISABLE_IDLEWORKERNOTIFICATIONS|default:"" != 1}
<tr> <tr>
<td align="left">IDLE Worker</td> <td align="left">IDLE Worker</td>
<td> <td>
@ -25,6 +26,7 @@
</span> </span>
</td> </td>
</tr> </tr>
{/if}
{if $DISABLE_BLOCKNOTIFICATIONS|default:"" != 1} {if $DISABLE_BLOCKNOTIFICATIONS|default:"" != 1}
<tr> <tr>
<td align="left">New Blocks</td> <td align="left">New Blocks</td>

View File

@ -37,7 +37,7 @@
<th align="left">Worker Login</th> <th align="left">Worker Login</th>
<th align="left">Worker Password</th> <th align="left">Worker Password</th>
<th align="center">Active</th> <th align="center">Active</th>
{if $GLOBAL.config.disable_notifications != 1}<th align="center">Monitor</th>{/if} {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}<th align="center">Monitor</th>{/if}
<th align="right">Khash/s</th> <th align="right">Khash/s</th>
<th align="right">Difficulty</th> <th align="right">Difficulty</th>
<th align="center" style="padding-right: 25px;">Action</th> <th align="center" style="padding-right: 25px;">Action</th>
@ -51,7 +51,7 @@
<td align="left"{if $WORKERS[worker].hashrate > 0} style="color: orange"{/if}>{$username.0|escape}.<input name="data[{$WORKERS[worker].id}][username]" value="{$username.1|escape}" size="10" required/></td> <td align="left"{if $WORKERS[worker].hashrate > 0} style="color: orange"{/if}>{$username.0|escape}.<input name="data[{$WORKERS[worker].id}][username]" value="{$username.1|escape}" size="10" required/></td>
<td align="left"><input type="text" name="data[{$WORKERS[worker].id}][password]" value="{$WORKERS[worker].password|escape}" size="10" required></td> <td align="left"><input type="text" name="data[{$WORKERS[worker].id}][password]" value="{$WORKERS[worker].password|escape}" size="10" required></td>
<td align="center"><i class="icon-{if $WORKERS[worker].hashrate > 0}ok{else}cancel{/if}"></i></td> <td align="center"><i class="icon-{if $WORKERS[worker].hashrate > 0}ok{else}cancel{/if}"></i></td>
{if $GLOBAL.config.disable_notifications != 1} {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}
<td> <td>
<span class="toggle"> <span class="toggle">
<label for="data[{$WORKERS[worker].id}][monitor]"> <label for="data[{$WORKERS[worker].id}][monitor]">

View File

@ -25,8 +25,8 @@
<th align="left">Worker Name</th> <th align="left">Worker Name</th>
<th align="left">Password</th> <th align="left">Password</th>
<th align="center">Active</th> <th align="center">Active</th>
{if $GLOBAL.config.disable_notifications != 1}<th align="center">Monitor</th>{/if}
<th align="right">Khash/s</th> <th align="right">Khash/s</th>
{if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}<th align="center">Monitor</th>{/if}
<th align="right">Difficulty</th> <th align="right">Difficulty</th>
<th align="right" style="padding-right: 25px;">Avg Difficulty</th> <th align="right" style="padding-right: 25px;">Avg Difficulty</th>
</tr> </tr>
@ -38,7 +38,7 @@
<td align="left">{$WORKERS[worker].username|escape}</td> <td align="left">{$WORKERS[worker].username|escape}</td>
<td align="left">{$WORKERS[worker].password|escape}</td> <td align="left">{$WORKERS[worker].password|escape}</td>
<td align="center"><i class="icon-{if $WORKERS[worker].hashrate > 0}ok{else}cancel{/if}"></i></td> <td align="center"><i class="icon-{if $WORKERS[worker].hashrate > 0}ok{else}cancel{/if}"></i></td>
{if $GLOBAL.config.disable_notifications != 1} {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}
<td align="center"><i class="icon-{if $WORKERS[worker].monitor}ok{else}cancel{/if}"></i></td> <td align="center"><i class="icon-{if $WORKERS[worker].monitor}ok{else}cancel{/if}"></i></td>
{/if} {/if}
<td align="right">{$WORKERS[worker].hashrate|number_format|default:"0"}</td> <td align="right">{$WORKERS[worker].hashrate|number_format|default:"0"}</td>