|
|
@ -1,17 +1,20 @@ |
|
|
|
<?php |
|
|
|
<?php |
|
|
|
session_start(); |
|
|
|
session_start(); |
|
|
|
# |
|
|
|
# |
|
|
|
global $title, $miner, $port, $readonly, $notify, $rigs; |
|
|
|
global $doctype, $title, $miner, $port, $readonly, $notify, $rigs; |
|
|
|
global $mcast, $mcastaddr, $mcastport, $mcastcode; |
|
|
|
global $mcast, $mcastexpect, $mcastaddr, $mcastport, $mcastcode; |
|
|
|
global $mcastlistport, $mcasttimeout; |
|
|
|
global $mcastlistport, $mcasttimeout, $allowgen; |
|
|
|
global $rigipsecurity, $rigtotals, $forcerigtotals; |
|
|
|
global $rigipsecurity, $rigtotals, $forcerigtotals; |
|
|
|
global $socksndtimeoutsec, $sockrcvtimeoutsec; |
|
|
|
global $socksndtimeoutsec, $sockrcvtimeoutsec; |
|
|
|
global $checklastshare, $poolinputs, $hidefields; |
|
|
|
global $checklastshare, $poolinputs, $hidefields; |
|
|
|
global $ignorerefresh, $changerefresh, $autorefresh; |
|
|
|
global $ignorerefresh, $changerefresh, $autorefresh; |
|
|
|
global $allowcustompages, $customsummarypages; |
|
|
|
global $allowcustompages, $customsummarypages; |
|
|
|
global $miner_font_family, $miner_font_size; |
|
|
|
global $miner_font_family, $miner_font_size; |
|
|
|
|
|
|
|
global $bad_font_family, $bad_font_size; |
|
|
|
global $colouroverride, $placebuttons, $userlist; |
|
|
|
global $colouroverride, $placebuttons, $userlist; |
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
$doctype = "<!DOCTYPE html>\n"; |
|
|
|
|
|
|
|
# |
|
|
|
# See API-README for more details of these variables and how |
|
|
|
# See API-README for more details of these variables and how |
|
|
|
# to configure miner.php |
|
|
|
# to configure miner.php |
|
|
|
# |
|
|
|
# |
|
|
@ -48,6 +51,9 @@ $rigs = array('127.0.0.1:4028'); |
|
|
|
# Set $mcast to true to look for your rigs and ignore $rigs |
|
|
|
# Set $mcast to true to look for your rigs and ignore $rigs |
|
|
|
$mcast = false; |
|
|
|
$mcast = false; |
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
# Set $mcastexpect to at least how many rigs you expect it to find |
|
|
|
|
|
|
|
$mcastexpect = 0; |
|
|
|
|
|
|
|
# |
|
|
|
# API Multicast address all cgminers are listening on |
|
|
|
# API Multicast address all cgminers are listening on |
|
|
|
$mcastaddr = '224.0.0.75'; |
|
|
|
$mcastaddr = '224.0.0.75'; |
|
|
|
# |
|
|
|
# |
|
|
@ -64,6 +70,10 @@ $mcastlistport = 4027; |
|
|
|
# to wait for replies to the Multicast message |
|
|
|
# to wait for replies to the Multicast message |
|
|
|
$mcasttimeout = 1.5; |
|
|
|
$mcasttimeout = 1.5; |
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
# Set $allowgen to true to allow customsummarypages to use 'gen' |
|
|
|
|
|
|
|
# false means ignore any 'gen' options |
|
|
|
|
|
|
|
$allowgen = false; |
|
|
|
|
|
|
|
# |
|
|
|
# Set $rigipsecurity to false to show the IP/Port of the rig |
|
|
|
# Set $rigipsecurity to false to show the IP/Port of the rig |
|
|
|
# in the socket error messages and also show the full socket message |
|
|
|
# in the socket error messages and also show the full socket message |
|
|
|
$rigipsecurity = true; |
|
|
|
$rigipsecurity = true; |
|
|
@ -139,7 +149,7 @@ $poolspage = array( |
|
|
|
'POOL.Has GBT=GBT', 'STATS.Times Sent=TSent', |
|
|
|
'POOL.Has GBT=GBT', 'STATS.Times Sent=TSent', |
|
|
|
'STATS.Bytes Sent=BSent', 'STATS.Net Bytes Sent=NSent', |
|
|
|
'STATS.Bytes Sent=BSent', 'STATS.Net Bytes Sent=NSent', |
|
|
|
'STATS.Times Recv=TRecv', 'STATS.Bytes Recv=BRecv', |
|
|
|
'STATS.Times Recv=TRecv', 'STATS.Bytes Recv=BRecv', |
|
|
|
'STATS.Net Bytes Recv=NRecv')); |
|
|
|
'STATS.Net Bytes Recv=NRecv', 'GEN.AvShr=AvShr')); |
|
|
|
# |
|
|
|
# |
|
|
|
$poolssum = array( |
|
|
|
$poolssum = array( |
|
|
|
'SUMMARY' => array('MHS av', 'Found Blocks', 'Accepted', |
|
|
|
'SUMMARY' => array('MHS av', 'Found Blocks', 'Accepted', |
|
|
@ -156,7 +166,9 @@ $poolsext = array( |
|
|
|
'calc' => array('POOL.Difficulty Accepted' => 'sum', 'POOL.Difficulty Rejected' => 'sum', |
|
|
|
'calc' => array('POOL.Difficulty Accepted' => 'sum', 'POOL.Difficulty Rejected' => 'sum', |
|
|
|
'STATS.Times Sent' => 'sum', 'STATS.Bytes Sent' => 'sum', |
|
|
|
'STATS.Times Sent' => 'sum', 'STATS.Bytes Sent' => 'sum', |
|
|
|
'STATS.Net Bytes Sent' => 'sum', 'STATS.Times Recv' => 'sum', |
|
|
|
'STATS.Net Bytes Sent' => 'sum', 'STATS.Times Recv' => 'sum', |
|
|
|
'STATS.Bytes Recv' => 'sum', 'STATS.Net Bytes Recv' => 'sum'), |
|
|
|
'STATS.Bytes Recv' => 'sum', 'STATS.Net Bytes Recv' => 'sum', |
|
|
|
|
|
|
|
'POOL.Accepted' => 'sum'), |
|
|
|
|
|
|
|
'gen' => array('AvShr' => 'round(POOL.Difficulty Accepted/max(POOL.Accepted,1)*100)/100'), |
|
|
|
'having' => array(array('STATS.Bytes Recv', '>', 0))) |
|
|
|
'having' => array(array('STATS.Bytes Recv', '>', 0))) |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
@ -176,9 +188,12 @@ $warnfont = '<font color=red><b>'; |
|
|
|
$warnoff = '</b></font>'; |
|
|
|
$warnoff = '</b></font>'; |
|
|
|
$dfmt = 'H:i:s j-M-Y \U\T\CP'; |
|
|
|
$dfmt = 'H:i:s j-M-Y \U\T\CP'; |
|
|
|
# |
|
|
|
# |
|
|
|
$miner_font_family = 'verdana,arial,sans'; |
|
|
|
$miner_font_family = 'Verdana, Arial, sans-serif, sans'; |
|
|
|
$miner_font_size = '13pt'; |
|
|
|
$miner_font_size = '13pt'; |
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
$bad_font_family = '"Times New Roman", Times, serif'; |
|
|
|
|
|
|
|
$bad_font_size = '18pt'; |
|
|
|
|
|
|
|
# |
|
|
|
# Edit this or redefine it in myminer.php to change the colour scheme |
|
|
|
# Edit this or redefine it in myminer.php to change the colour scheme |
|
|
|
# See $colourtable below for the list of names |
|
|
|
# See $colourtable below for the list of names |
|
|
|
$colouroverride = array(); |
|
|
|
$colouroverride = array(); |
|
|
@ -198,7 +213,7 @@ if (file_exists('myminer.php')) |
|
|
|
# This is the system default that must always contain all necessary |
|
|
|
# This is the system default that must always contain all necessary |
|
|
|
# colours so it must be a constant |
|
|
|
# colours so it must be a constant |
|
|
|
# You can override these values with $colouroverride |
|
|
|
# You can override these values with $colouroverride |
|
|
|
# The only one missing is in $warnfont |
|
|
|
# The only one missing is $warnfont |
|
|
|
# - which you can override directly anyway |
|
|
|
# - which you can override directly anyway |
|
|
|
global $colourtable; |
|
|
|
global $colourtable; |
|
|
|
$colourtable = array( |
|
|
|
$colourtable = array( |
|
|
@ -210,6 +225,8 @@ $colourtable = array( |
|
|
|
'td.h background' => '#c4ffff', |
|
|
|
'td.h background' => '#c4ffff', |
|
|
|
'td.err color' => 'black', |
|
|
|
'td.err color' => 'black', |
|
|
|
'td.err background' => '#ff3050', |
|
|
|
'td.err background' => '#ff3050', |
|
|
|
|
|
|
|
'td.bad color' => 'black', |
|
|
|
|
|
|
|
'td.bad background' => '#ff3050', |
|
|
|
'td.warn color' => 'black', |
|
|
|
'td.warn color' => 'black', |
|
|
|
'td.warn background' => '#ffb050', |
|
|
|
'td.warn background' => '#ffb050', |
|
|
|
'td.sta color' => 'green', |
|
|
|
'td.sta color' => 'green', |
|
|
@ -269,9 +286,10 @@ function getdom($domname) |
|
|
|
return getcss($domname, true); |
|
|
|
return getcss($domname, true); |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
|
function htmlhead($checkapi, $rig, $pg = null, $noscript = false) |
|
|
|
function htmlhead($mcerr, $checkapi, $rig, $pg = null, $noscript = false) |
|
|
|
{ |
|
|
|
{ |
|
|
|
global $title, $miner_font_family, $miner_font_size; |
|
|
|
global $doctype, $title, $miner_font_family, $miner_font_size; |
|
|
|
|
|
|
|
global $bad_font_family, $bad_font_size; |
|
|
|
global $error, $readonly, $poolinputs, $here; |
|
|
|
global $error, $readonly, $poolinputs, $here; |
|
|
|
global $ignorerefresh, $autorefresh; |
|
|
|
global $ignorerefresh, $autorefresh; |
|
|
|
|
|
|
|
|
|
|
@ -300,14 +318,16 @@ function htmlhead($checkapi, $rig, $pg = null, $noscript = false) |
|
|
|
$readonly = true; |
|
|
|
$readonly = true; |
|
|
|
} |
|
|
|
} |
|
|
|
$miner_font = "font-family:$miner_font_family; font-size:$miner_font_size;"; |
|
|
|
$miner_font = "font-family:$miner_font_family; font-size:$miner_font_size;"; |
|
|
|
|
|
|
|
$bad_font = "font-family:$bad_font_family; font-size:$bad_font_size;"; |
|
|
|
|
|
|
|
|
|
|
|
echo "<html><head>$refreshmeta |
|
|
|
echo "$doctype<html><head>$refreshmeta |
|
|
|
<title>$title</title> |
|
|
|
<title>$title</title> |
|
|
|
<style type='text/css'> |
|
|
|
<style type='text/css'> |
|
|
|
td { $miner_font ".getcss('td')."} |
|
|
|
td { $miner_font ".getcss('td')."} |
|
|
|
td.two { $miner_font ".getcss('td.two')."} |
|
|
|
td.two { $miner_font ".getcss('td.two')."} |
|
|
|
td.h { $miner_font ".getcss('td.h')."} |
|
|
|
td.h { $miner_font ".getcss('td.h')."} |
|
|
|
td.err { $miner_font ".getcss('td.err')."} |
|
|
|
td.err { $miner_font ".getcss('td.err')."} |
|
|
|
|
|
|
|
td.bad { $bad_font ".getcss('td.bad')."} |
|
|
|
td.warn { $miner_font ".getcss('td.warn')."} |
|
|
|
td.warn { $miner_font ".getcss('td.warn')."} |
|
|
|
td.sta { $miner_font ".getcss('td.sta')."} |
|
|
|
td.sta { $miner_font ".getcss('td.sta')."} |
|
|
|
td.tot { $miner_font ".getcss('td.tot')."} |
|
|
|
td.tot { $miner_font ".getcss('td.tot')."} |
|
|
@ -339,6 +359,14 @@ echo "</script>\n"; |
|
|
|
<tr><td align=center valign=top> |
|
|
|
<tr><td align=center valign=top> |
|
|
|
<table border=0 cellpadding=4 cellspacing=0 summary='Mine'> |
|
|
|
<table border=0 cellpadding=4 cellspacing=0 summary='Mine'> |
|
|
|
<?php |
|
|
|
<?php |
|
|
|
|
|
|
|
echo $mcerr; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
function minhead($mcerr = '') |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
global $readonly; |
|
|
|
|
|
|
|
$readonly = true; |
|
|
|
|
|
|
|
htmlhead($mcerr, false, null, null, true); |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
|
global $haderror, $error; |
|
|
|
global $haderror, $error; |
|
|
@ -643,9 +671,14 @@ function newrow() |
|
|
|
echo '<tr>'; |
|
|
|
echo '<tr>'; |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
function othrow($row) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return "<tr>$row</tr>"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
# |
|
|
|
function otherrow($row) |
|
|
|
function otherrow($row) |
|
|
|
{ |
|
|
|
{ |
|
|
|
echo "<tr>$row</tr>"; |
|
|
|
echo othrow($row); |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
|
function endrow() |
|
|
|
function endrow() |
|
|
@ -1810,8 +1843,6 @@ function doOne($rig, $preprocess) |
|
|
|
global $haderror, $readonly, $notify, $rigs; |
|
|
|
global $haderror, $readonly, $notify, $rigs; |
|
|
|
global $placebuttons; |
|
|
|
global $placebuttons; |
|
|
|
|
|
|
|
|
|
|
|
htmlhead(true, $rig); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($placebuttons == 'top' || $placebuttons == 'both') |
|
|
|
if ($placebuttons == 'top' || $placebuttons == 'both') |
|
|
|
pagebuttons($rig, null); |
|
|
|
pagebuttons($rig, null); |
|
|
|
|
|
|
|
|
|
|
@ -2324,8 +2355,55 @@ function processcompare($which, $ext, $section, $res) |
|
|
|
return $res; |
|
|
|
return $res; |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
|
function processext($ext, $section, $res) |
|
|
|
function ss($a, $b) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$la = strlen($a); |
|
|
|
|
|
|
|
$lb = strlen($b); |
|
|
|
|
|
|
|
if ($la != $lb) |
|
|
|
|
|
|
|
return $la - $lb; |
|
|
|
|
|
|
|
return strcmp($a, $b); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
function genfld($row, $calc) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
uksort($row, "ss"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($row as $name => $value) |
|
|
|
|
|
|
|
if (strstr($calc, $name) !== FALSE) |
|
|
|
|
|
|
|
$calc = str_replace($name, $value, $calc); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eval("\$val = $calc;"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $val; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
function dogen($ext, $section, &$res, &$fields) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$gen = $ext[$section]['gen']; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($gen as $fld => $calc) |
|
|
|
|
|
|
|
$fields[] = "GEN.$fld"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($res as $rig => $result) |
|
|
|
|
|
|
|
foreach ($result as $sec => $row) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$secname = preg_replace('/\d/', '', $sec); |
|
|
|
|
|
|
|
if (secmatch($section, $secname)) |
|
|
|
|
|
|
|
foreach ($gen as $fld => $calc) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$name = "GEN.$fld"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$val = genfld($row, $calc); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$res[$rig][$sec][$name] = $val; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
function processext($ext, $section, $res, &$fields) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
global $allowgen; |
|
|
|
|
|
|
|
|
|
|
|
$res = processcompare('where', $ext, $section, $res); |
|
|
|
$res = processcompare('where', $ext, $section, $res); |
|
|
|
|
|
|
|
|
|
|
|
if (isset($ext[$section]['group'])) |
|
|
|
if (isset($ext[$section]['group'])) |
|
|
@ -2393,6 +2471,10 @@ function processext($ext, $section, $res) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Generated fields (functions of other fields) |
|
|
|
|
|
|
|
if ($allowgen === true && isset($ext[$section]['gen'])) |
|
|
|
|
|
|
|
dogen($ext, $section, $res, $fields); |
|
|
|
|
|
|
|
|
|
|
|
return processcompare('having', $ext, $section, $res); |
|
|
|
return processcompare('having', $ext, $section, $res); |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
@ -2451,6 +2533,8 @@ function processcustompage($pagename, $sections, $sum, $ext, $namemap) |
|
|
|
$results[$cmd][$num] = $process; |
|
|
|
$results[$cmd][$num] = $process; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
otherrow('<td class=bad>Bad "$rigs" array</td>'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$shownsomething = false; |
|
|
|
$shownsomething = false; |
|
|
@ -2487,7 +2571,8 @@ function processcustompage($pagename, $sections, $sum, $ext, $namemap) |
|
|
|
|
|
|
|
|
|
|
|
if (isset($results[$sectionmap[$section]])) |
|
|
|
if (isset($results[$sectionmap[$section]])) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$rigresults = processext($ext, $section, $results[$sectionmap[$section]]); |
|
|
|
$rigresults = processext($ext, $section, $results[$sectionmap[$section]], $fields); |
|
|
|
|
|
|
|
|
|
|
|
$showfields = array(); |
|
|
|
$showfields = array(); |
|
|
|
$showhead = array(); |
|
|
|
$showhead = array(); |
|
|
|
foreach ($fields as $field) |
|
|
|
foreach ($fields as $field) |
|
|
@ -2566,21 +2651,19 @@ function showcustompage($pagename) |
|
|
|
global $customsummarypages; |
|
|
|
global $customsummarypages; |
|
|
|
global $placebuttons; |
|
|
|
global $placebuttons; |
|
|
|
|
|
|
|
|
|
|
|
htmlhead(false, null, $pagename); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($placebuttons == 'top' || $placebuttons == 'both') |
|
|
|
if ($placebuttons == 'top' || $placebuttons == 'both') |
|
|
|
pagebuttons(null, $pagename); |
|
|
|
pagebuttons(null, $pagename); |
|
|
|
|
|
|
|
|
|
|
|
if (!isset($customsummarypages[$pagename])) |
|
|
|
if (!isset($customsummarypages[$pagename])) |
|
|
|
{ |
|
|
|
{ |
|
|
|
otherrow("<td colspan=100>Unknown custom summary page '$pagename'</td>"); |
|
|
|
otherrow("<td colspan=100 class=bad>Unknown custom summary page '$pagename'</td>"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$c = count($customsummarypages[$pagename]); |
|
|
|
$c = count($customsummarypages[$pagename]); |
|
|
|
if ($c < 2 || $c > 3) |
|
|
|
if ($c < 2 || $c > 3) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$rw = "<td colspan=100>Invalid custom summary page '$pagename' ("; |
|
|
|
$rw = "<td colspan=100 class=bad>Invalid custom summary page '$pagename' ("; |
|
|
|
$rw .= count($customsummarypages[$pagename]).')</td>'; |
|
|
|
$rw .= count($customsummarypages[$pagename]).')</td>'; |
|
|
|
otherrow($rw); |
|
|
|
otherrow($rw); |
|
|
|
return; |
|
|
|
return; |
|
|
@ -2625,7 +2708,7 @@ function showcustompage($pagename) |
|
|
|
|
|
|
|
|
|
|
|
if (count($page) <= 1) |
|
|
|
if (count($page) <= 1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
otherrow("<td colspan=100>Invalid custom summary page '$pagename' no content </td>"); |
|
|
|
otherrow("<td colspan=100 class=bad>Invalid custom summary page '$pagename' no content </td>"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2639,7 +2722,7 @@ function onlylogin() |
|
|
|
{ |
|
|
|
{ |
|
|
|
global $here; |
|
|
|
global $here; |
|
|
|
|
|
|
|
|
|
|
|
htmlhead(false, null, null, true); |
|
|
|
htmlhead('', false, null, null, true); |
|
|
|
|
|
|
|
|
|
|
|
?> |
|
|
|
?> |
|
|
|
<tr height=15%><td> </td></tr> |
|
|
|
<tr height=15%><td> </td></tr> |
|
|
@ -2739,6 +2822,7 @@ function checklogin() |
|
|
|
function display() |
|
|
|
function display() |
|
|
|
{ |
|
|
|
{ |
|
|
|
global $miner, $port; |
|
|
|
global $miner, $port; |
|
|
|
|
|
|
|
global $mcast, $mcastexpect; |
|
|
|
global $readonly, $notify, $rigs; |
|
|
|
global $readonly, $notify, $rigs; |
|
|
|
global $ignorerefresh, $autorefresh; |
|
|
|
global $ignorerefresh, $autorefresh; |
|
|
|
global $allowcustompages, $customsummarypages; |
|
|
|
global $allowcustompages, $customsummarypages; |
|
|
@ -2750,11 +2834,24 @@ function display() |
|
|
|
if ($pagesonly === 'login') |
|
|
|
if ($pagesonly === 'login') |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$mcerr = ''; |
|
|
|
|
|
|
|
|
|
|
|
if ($rigs == null or count($rigs) == 0) |
|
|
|
if ($rigs == null or count($rigs) == 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
otherrow("<td>No rigs defined</td>"); |
|
|
|
if ($mcast === true) |
|
|
|
|
|
|
|
$action = 'found'; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
$action = 'defined'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
minhead(); |
|
|
|
|
|
|
|
otherrow("<td class=bad>No rigs $action</td>"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if ($mcast === true && count($rigs) < $mcastexpect) |
|
|
|
|
|
|
|
$mcerr = othrow('<td class=bad>Found '.count($rigs)." rigs but expected at least $mcastexpect</td>"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($ignorerefresh == false) |
|
|
|
if ($ignorerefresh == false) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -2811,7 +2908,8 @@ function display() |
|
|
|
|
|
|
|
|
|
|
|
if ($pg !== null && $pg !== '') |
|
|
|
if ($pg !== null && $pg !== '') |
|
|
|
{ |
|
|
|
{ |
|
|
|
showcustompage($pg); |
|
|
|
htmlhead($mcerr, false, null, $pg); |
|
|
|
|
|
|
|
showcustompage($pg, $mcerr); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -2830,10 +2928,14 @@ function display() |
|
|
|
$miner = $parts[0]; |
|
|
|
$miner = $parts[0]; |
|
|
|
$port = $parts[1]; |
|
|
|
$port = $parts[1]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
htmlhead($mcerr, true, 0); |
|
|
|
doOne(0, $preprocess); |
|
|
|
doOne(0, $preprocess); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
otherrow('<td>Invalid "$rigs" array</td>'); |
|
|
|
{ |
|
|
|
|
|
|
|
minhead($mcerr); |
|
|
|
|
|
|
|
otherrow('<td class=bad>Invalid "$rigs" array</td>'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -2846,15 +2948,19 @@ function display() |
|
|
|
$miner = $parts[0]; |
|
|
|
$miner = $parts[0]; |
|
|
|
$port = $parts[1]; |
|
|
|
$port = $parts[1]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
htmlhead($mcerr, true, 0); |
|
|
|
doOne($rig, $preprocess); |
|
|
|
doOne($rig, $preprocess); |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
otherrow('<td>Invalid "$rigs" array</td>'); |
|
|
|
{ |
|
|
|
|
|
|
|
minhead($mcerr); |
|
|
|
|
|
|
|
otherrow('<td class=bad>Invalid "$rigs" array</td>'); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
htmlhead(false, null); |
|
|
|
htmlhead($mcerr, false, null); |
|
|
|
|
|
|
|
|
|
|
|
if ($placebuttons == 'top' || $placebuttons == 'both') |
|
|
|
if ($placebuttons == 'top' || $placebuttons == 'both') |
|
|
|
pagebuttons(null, null); |
|
|
|
pagebuttons(null, null); |
|
|
@ -2880,7 +2986,7 @@ function display() |
|
|
|
pagebuttons(null, null); |
|
|
|
pagebuttons(null, null); |
|
|
|
} |
|
|
|
} |
|
|
|
# |
|
|
|
# |
|
|
|
if (isset($mcast) && $mcast === true) |
|
|
|
if ($mcast === true) |
|
|
|
getrigs(); |
|
|
|
getrigs(); |
|
|
|
display(); |
|
|
|
display(); |
|
|
|
# |
|
|
|
# |
|
|
|