@ -1,7 +1,8 @@
@@ -1,7 +1,8 @@
<?php
session_start();
#
global $doctype, $title, $miner, $port, $readonly, $notify, $rigs;
global $doctype, $title, $miner, $port, $readonly, $notify;
global $rigport, $rigs, $rignames, $rigbuttons;
global $mcast, $mcastexpect, $mcastaddr, $mcastport, $mcastcode;
global $mcastlistport, $mcasttimeout, $mcastretries, $allowgen;
global $rigipsecurity, $rigtotals, $forcerigtotals;
@ -44,10 +45,20 @@ $checklastshare = true;
@@ -44,10 +45,20 @@ $checklastshare = true;
# N.B. also if $readonly is true, it will not display the fields
$poolinputs = false;
#
# Set $rigs to an array of your sgminer rigs that are running
# format: 'IP:Port' or 'Host:Port' or 'Host:Port:Name'
# Default port to use if any $rigs entries don't specify the port number
$rigport = 4028;
#
# Set $rigs to an array of your rigs that are running
# format: 'IP' or 'Host' or 'IP:Port' or 'Host:Port' or 'Host:Port:Name'
$rigs = array('127.0.0.1:4028');
#
# Set $rignames to false, or one of 'ip' or 'ipx'
# this says what to use if $rigs doesn't have a 'name'
$rignames = false;
#
# Set $rigbuttons to false to display a link rather than a button
$rigbuttons = true;
#
# Set $mcast to true to look for your rigs and ignore $rigs
$mcast = false;
#
@ -247,6 +258,9 @@ $colourtable = array(
@@ -247,6 +258,9 @@ $colourtable = array(
$miner = null;
$port = null;
#
global $rigips;
$rigips = array();
#
# Ensure it is only ever shown once
global $showndate;
$showndate = false;
@ -289,6 +303,14 @@ function getdom($domname)
@@ -289,6 +303,14 @@ function getdom($domname)
return getcss($domname, true);
}
#
# N.B. don't call this before calling htmlhead()
function php_pr($cmd)
{
global $here, $autorefresh;
return "$here?ref=$autorefresh$cmd";
}
#
function htmlhead($mcerr, $checkapi, $rig, $pg = null, $noscript = false)
{
global $doctype, $title, $miner_font_family, $miner_font_size;
@ -491,9 +513,12 @@ function getrigs()
@@ -491,9 +513,12 @@ function getrigs()
#
function getsock($rig, $addr, $port)
{
global $rigipsecurity;
global $rigport, $rigips, $rignames, $rig ipsecurity;
global $haderror, $error, $socksndtimeoutsec, $sockrcvtimeoutsec;
$port = trim($port);
if (strlen($port) == 0)
$port = $rigport;
$error = null;
$socket = null;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
@ -534,6 +559,9 @@ function getsock($rig, $addr, $port)
@@ -534,6 +559,9 @@ function getsock($rig, $addr, $port)
socket_close($socket);
return null;
}
if ($rignames !== false & & !isset($rigips[$addr]))
if (socket_getpeername($socket, $ip) == true)
$rigips[$addr] = $ip;
return $socket;
}
#
@ -1536,39 +1564,67 @@ function process($cmds, $rig)
@@ -1536,39 +1564,67 @@ function process($cmds, $rig)
#
function rigname($rig, $rigname)
{
global $rigs;
global $rigs, $rignames, $rigips ;
if (isset($rigs[$rig]))
{
$parts = explode(':', $rigs[$rig], 3);
if (count($parts) == 3)
$rigname = $parts[2];
else
if ($rignames !== false)
{
switch ($rignames)
{
case 'ip':
if (isset($parts[0]) & & isset($rigips[$parts[0]]))
{
$ip = explode('.', $rigips[$parts[0]]);
if (count($ip) == 4)
$rigname = intval($ip[3]);
}
break;
case 'ipx':
if (isset($parts[0]) & & isset($rigips[$parts[0]]))
{
$ip = explode('.', $rigips[$parts[0]]);
if (count($ip) == 4)
$rigname = intval($ip[3], 16);
}
break;
}
}
}
return $rigname;
}
#
function riginput($rig, $rigname)
function riginput($rig, $rigname, $usebuttons )
{
$rigname = rigname($rig, $rigname);
return "< input type = button value = '$rigname' onclick = 'pr(\"&rig=$rig\",null)' > ";
if ($usebuttons === true)
return "< input type = button value = '$rigname' onclick = 'pr(\"&rig=$rig\",null)' > ";
else
return "< a href = '".php_pr("&rig=$rig")."' > $rigname< / a > ";
}
#
function rigbutton($rig, $rigname, $when, $row)
function rigbutton($rig, $rigname, $when, $row, $usebuttons )
{
list($value, $class) = fmt('BUTTON', 'Rig', '', $when, $row);
if ($rig === '')
$ri = ' ';
else
$ri = riginput($rig, $rigname);
$ri = riginput($rig, $rigname, $usebuttons );
return "< td align = middle$class > $ri< / td > ";
}
#
function showrigs($anss, $headname, $rigname)
{
global $rigbuttons;
$dthead = array($headname => 1, 'STATUS' => 1, 'Description' => 1, 'When' => 1, 'API' => 1, 'sgminer' => 1);
showhead('', $dthead);
@ -1591,7 +1647,7 @@ function showrigs($anss, $headname, $rigname)
@@ -1591,7 +1647,7 @@ function showrigs($anss, $headname, $rigname)
foreach ($dthead as $name => $x)
{
if ($item == 'STATUS' & & $name == $headname)
echo rigbutton($rig, $rigname.$rig, $when, null);
echo rigbutton($rig, $rigname.$rig, $when, null, $rigbuttons );
else
{
if (isset($row[$name]))
@ -1610,7 +1666,7 @@ function showrigs($anss, $headname, $rigname)
@@ -1610,7 +1666,7 @@ function showrigs($anss, $headname, $rigname)
function doforeach($cmd, $des, $sum, $head, $datetime)
{
global $miner, $port;
global $error, $readonly, $notify, $rigs;
global $error, $readonly, $notify, $rigs, $rigbuttons ;
global $warnfont, $warnoff, $dfmt;
global $rigerror;
@ -1629,10 +1685,13 @@ function doforeach($cmd, $des, $sum, $head, $datetime)
@@ -1629,10 +1685,13 @@ function doforeach($cmd, $des, $sum, $head, $datetime)
continue;
$parts = explode(':', $rig, 3);
if (count($parts) >= 2 )
if (count($parts) >= 1 )
{
$miner = $parts[0];
$port = $parts[1];
if (count($parts) >= 2)
$port = $parts[1];
else
$port = '';
if (count($parts) > 2)
$name = $parts[2];
@ -1747,7 +1806,7 @@ function doforeach($cmd, $des, $sum, $head, $datetime)
@@ -1747,7 +1806,7 @@ function doforeach($cmd, $des, $sum, $head, $datetime)
echo "< td align = right$class > Total:< / td > ";
}
else
echo rigbutton($rig, "Rig $rig", $when, $row);
echo rigbutton($rig, "Rig $rig", $when, $row, $rigbuttons );
}
else
{
@ -1780,7 +1839,7 @@ function refreshbuttons()
@@ -1780,7 +1839,7 @@ function refreshbuttons()
#
function pagebuttons($rig, $pg)
{
global $readonly, $rigs, $userlist, $ses;
global $readonly, $rigs, $rigbuttons, $ userlist, $ses;
global $allowcustompages, $customsummarypages;
if ($rig === null)
@ -1819,10 +1878,12 @@ function pagebuttons($rig, $pg)
@@ -1819,10 +1878,12 @@ function pagebuttons($rig, $pg)
if ($userlist === null || isset($_SESSION[$ses]))
{
if ($prev !== null)
echo riginput($prev, 'Prev').' ';
echo riginput($prev, 'Prev', true).' ';
echo "< input type = button value = 'Refresh' onclick = 'pr(\"$refresh\",null)' > ";
if ($next !== null)
echo riginput($next, 'Next').' ';
echo riginput($next, 'Next', true ).' ';
echo ' ';
if (count($rigs) > 1)
echo "< input type = button value = 'Summary' onclick = 'pr(\"\",null)' > ";
@ -2184,6 +2245,8 @@ function secmatch($section, $field)
@@ -2184,6 +2245,8 @@ function secmatch($section, $field)
#
function customset($showfields, $sum, $section, $rig, $isbutton, $result, $total)
{
global $rigbuttons;
foreach ($result as $sec => $row)
{
$secname = preg_replace('/\d/', '', $sec);
@ -2200,7 +2263,7 @@ function customset($showfields, $sum, $section, $rig, $isbutton, $result, $total
@@ -2200,7 +2263,7 @@ function customset($showfields, $sum, $section, $rig, $isbutton, $result, $total
if ($isbutton)
echo rigbutton($rig, $rig, $when, $row);
echo rigbutton($rig, $rig, $when, $row, $rigbuttons );
else
{
list($ignore, $class) = fmt('total', '', '', $when, $row);
@ -2535,10 +2598,13 @@ function processcustompage($pagename, $sections, $sum, $ext, $namemap)
@@ -2535,10 +2598,13 @@ function processcustompage($pagename, $sections, $sum, $ext, $namemap)
foreach ($rigs as $num => $rig)
{
$parts = explode(':', $rig, 3);
if (count($parts) >= 2 )
if (count($parts) >= 1 )
{
$miner = $parts[0];
$port = $parts[1];
if (count($parts) >= 2)
$port = $parts[1];
else
$port = '';
if (count($parts) > 2)
$name = $parts[2];
@ -2896,10 +2962,13 @@ function display()
@@ -2896,10 +2962,13 @@ function display()
if ($rig != null and $rig != '' and $rig >= 0 and $rig < count ( $ rigs ) )
{
$parts = explode(':', $rigs[$rig], 3);
if (count($parts) >= 2 )
if (count($parts) >= 1 )
{
$miner = $parts[0];
$port = $parts[1];
if (count($parts) >= 2)
$port = $parts[1];
else
$port = '';
if ($readonly !== true)
$preprocess = $arg;
@ -2948,10 +3017,13 @@ function display()
@@ -2948,10 +3017,13 @@ function display()
if (count($rigs) == 1)
{
$parts = explode(':', $rigs[0], 3);
if (count($parts) >= 2 )
if (count($parts) >= 1 )
{
$miner = $parts[0];
$port = $parts[1];
if (count($parts) >= 2)
$port = $parts[1];
else
$port = '';
htmlhead($mcerr, true, 0);
doOne(0, $preprocess);
@ -2968,10 +3040,13 @@ function display()
@@ -2968,10 +3040,13 @@ function display()
if ($rig != null and $rig != '' and $rig >= 0 and $rig < count ( $ rigs ) )
{
$parts = explode(':', $rigs[$rig], 3);
if (count($parts) >= 2 )
if (count($parts) >= 1 )
{
$miner = $parts[0];
$port = $parts[1];
if (count($parts) >= 2)
$port = $parts[1];
else
$port = '';
htmlhead($mcerr, true, 0);
doOne($rig, $preprocess);