mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-05 19:44:21 +00:00
miner.php optional user/pass login restrictions
This commit is contained in:
parent
1ce817d4df
commit
1b2654e1ff
32
API-README
32
API-README
@ -937,6 +937,38 @@ true
|
|||||||
|
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
Default:
|
||||||
|
$userlist = null;
|
||||||
|
|
||||||
|
Define password checking and default access
|
||||||
|
null means there is no password checking
|
||||||
|
|
||||||
|
$userlist is an array of 3 arrays e.g.
|
||||||
|
$userlist = array('sys' => array('boss' => 'bpass'),
|
||||||
|
'usr' => array('user' => 'upass', 'pleb' => 'ppass'),
|
||||||
|
'def' => array('Pools'));
|
||||||
|
|
||||||
|
'sys' is an array of system users and passwords (full access)
|
||||||
|
'usr' is an array of user level users and passwords (readonly access)
|
||||||
|
'def' is an array of custompages that anyone not logged in can view
|
||||||
|
|
||||||
|
Any of the 3 can be null, meaning there are none of that item
|
||||||
|
|
||||||
|
All validated 'usr' users are given $readonly = true; access
|
||||||
|
All validated 'sys' users are given the $readonly access you defined
|
||||||
|
|
||||||
|
If 'def' has one or more values, and allowcustompages is true, then
|
||||||
|
anyone without a password can see the list of custompage buttons given
|
||||||
|
in 'def' and will see the first one when they go to the web page, with
|
||||||
|
a login button at the top right
|
||||||
|
|
||||||
|
From the login page, if you login with no username or password, it will
|
||||||
|
show the first 'def' custompage (if there are any)
|
||||||
|
|
||||||
|
If you are logged in, it will show a logout button at the top right
|
||||||
|
|
||||||
|
---------
|
||||||
|
|
||||||
Default:
|
Default:
|
||||||
$notify = true;
|
$notify = true;
|
||||||
|
|
||||||
|
246
miner.php
246
miner.php
@ -8,7 +8,7 @@ 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 $colouroverride, $placebuttons;
|
global $colouroverride, $placebuttons, $userlist;
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@ -20,6 +20,9 @@ $title = 'Mine';
|
|||||||
# Set $readonly to false then it will check cgminer 'privileged'
|
# Set $readonly to false then it will check cgminer 'privileged'
|
||||||
$readonly = false;
|
$readonly = false;
|
||||||
#
|
#
|
||||||
|
# Set $userlist to null to allow anyone access or read API-README
|
||||||
|
$userlist = null;
|
||||||
|
#
|
||||||
# Set $notify to false to NOT attempt to display the notify command
|
# Set $notify to false to NOT attempt to display the notify command
|
||||||
# Set $notify to true to attempt to display the notify command
|
# Set $notify to true to attempt to display the notify command
|
||||||
$notify = true;
|
$notify = true;
|
||||||
@ -212,6 +215,10 @@ $rigerror = array();
|
|||||||
global $rownum;
|
global $rownum;
|
||||||
$rownum = 0;
|
$rownum = 0;
|
||||||
#
|
#
|
||||||
|
// Login
|
||||||
|
global $ses;
|
||||||
|
$ses = 'rutroh';
|
||||||
|
#
|
||||||
function getcss($cssname, $dom = false)
|
function getcss($cssname, $dom = false)
|
||||||
{
|
{
|
||||||
global $colourtable, $colouroverride;
|
global $colourtable, $colouroverride;
|
||||||
@ -239,7 +246,7 @@ function getdom($domname)
|
|||||||
return getcss($domname, true);
|
return getcss($domname, true);
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
function htmlhead($checkapi, $rig, $pg = null)
|
function htmlhead($checkapi, $rig, $pg = null, $noscript = false)
|
||||||
{
|
{
|
||||||
global $title, $miner_font_family, $miner_font_size;
|
global $title, $miner_font_family, $miner_font_size;
|
||||||
global $error, $readonly, $poolinputs, $here;
|
global $error, $readonly, $poolinputs, $here;
|
||||||
@ -285,8 +292,10 @@ td.lst { $miner_font ".getcss('td.lst')."}
|
|||||||
td.hi { $miner_font ".getcss('td.hi')."}
|
td.hi { $miner_font ".getcss('td.hi')."}
|
||||||
td.lo { $miner_font ".getcss('td.lo')."}
|
td.lo { $miner_font ".getcss('td.lo')."}
|
||||||
</style>
|
</style>
|
||||||
</head><body".getdom('body').">
|
</head><body".getdom('body').">\n";
|
||||||
<script type='text/javascript'>
|
if ($noscript === false)
|
||||||
|
{
|
||||||
|
echo "<script type='text/javascript'>
|
||||||
function pr(a,m){if(m!=null){if(!confirm(m+'?'))return}window.location='$here?ref=$autorefresh'+a}\n";
|
function pr(a,m){if(m!=null){if(!confirm(m+'?'))return}window.location='$here?ref=$autorefresh'+a}\n";
|
||||||
|
|
||||||
if ($ignorerefresh == false)
|
if ($ignorerefresh == false)
|
||||||
@ -300,8 +309,9 @@ function prs2(a,n,r){var v=document.getElementById('gi'+n).value;var c=a.substr(
|
|||||||
if ($poolinputs === true)
|
if ($poolinputs === true)
|
||||||
echo "function cbs(s){var t=s.replace(/\\\\/g,'\\\\\\\\'); return t.replace(/,/g, '\\\\,')}\nfunction pla(r){var u=document.getElementById('purl').value;var w=document.getElementById('pwork').value;var p=document.getElementById('ppass').value;pr('&rig='+r+'&arg=addpool|'+cbs(u)+','+cbs(w)+','+cbs(p),'Add Pool '+u)}\nfunction psp(r){var p=document.getElementById('prio').value;pr('&rig='+r+'&arg=poolpriority|'+p,'Set Pool Priorities to '+p)}\n";
|
echo "function cbs(s){var t=s.replace(/\\\\/g,'\\\\\\\\'); return t.replace(/,/g, '\\\\,')}\nfunction pla(r){var u=document.getElementById('purl').value;var w=document.getElementById('pwork').value;var p=document.getElementById('ppass').value;pr('&rig='+r+'&arg=addpool|'+cbs(u)+','+cbs(w)+','+cbs(p),'Add Pool '+u)}\nfunction psp(r){var p=document.getElementById('prio').value;pr('&rig='+r+'&arg=poolpriority|'+p,'Set Pool Priorities to '+p)}\n";
|
||||||
}
|
}
|
||||||
|
echo "</script>\n";
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
</script>
|
|
||||||
<table width=100% height=100% border=0 cellpadding=0 cellspacing=0 summary='Mine'>
|
<table width=100% height=100% border=0 cellpadding=0 cellspacing=0 summary='Mine'>
|
||||||
<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'>
|
||||||
@ -1507,7 +1517,6 @@ function doforeach($cmd, $des, $sum, $head, $datetime)
|
|||||||
#
|
#
|
||||||
function refreshbuttons()
|
function refreshbuttons()
|
||||||
{
|
{
|
||||||
global $readonly;
|
|
||||||
global $ignorerefresh, $changerefresh, $autorefresh;
|
global $ignorerefresh, $changerefresh, $autorefresh;
|
||||||
|
|
||||||
if ($ignorerefresh == false && $changerefresh == true)
|
if ($ignorerefresh == false && $changerefresh == true)
|
||||||
@ -1521,7 +1530,7 @@ function refreshbuttons()
|
|||||||
#
|
#
|
||||||
function pagebuttons($rig, $pg)
|
function pagebuttons($rig, $pg)
|
||||||
{
|
{
|
||||||
global $readonly, $rigs;
|
global $readonly, $rigs, $userlist, $ses;
|
||||||
global $allowcustompages, $customsummarypages;
|
global $allowcustompages, $customsummarypages;
|
||||||
|
|
||||||
if ($rig === null)
|
if ($rig === null)
|
||||||
@ -1557,18 +1566,33 @@ function pagebuttons($rig, $pg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo '<tr><td><table cellpadding=0 cellspacing=0 border=0><tr><td nowrap>';
|
echo '<tr><td><table cellpadding=0 cellspacing=0 border=0><tr><td nowrap>';
|
||||||
if ($prev !== null)
|
if ($userlist === null || isset($_SESSION[$ses]))
|
||||||
echo riginput($prev, 'Prev').' ';
|
{
|
||||||
echo "<input type=button value='Refresh' onclick='pr(\"$refresh\",null)'> ";
|
if ($prev !== null)
|
||||||
if ($next !== null)
|
echo riginput($prev, 'Prev').' ';
|
||||||
echo riginput($next, 'Next').' ';
|
echo "<input type=button value='Refresh' onclick='pr(\"$refresh\",null)'> ";
|
||||||
echo ' ';
|
if ($next !== null)
|
||||||
if (count($rigs) > 1)
|
echo riginput($next, 'Next').' ';
|
||||||
echo "<input type=button value='Summary' onclick='pr(\"\",null)'> ";
|
echo ' ';
|
||||||
|
if (count($rigs) > 1)
|
||||||
|
echo "<input type=button value='Summary' onclick='pr(\"\",null)'> ";
|
||||||
|
}
|
||||||
|
|
||||||
if ($allowcustompages === true)
|
if ($allowcustompages === true)
|
||||||
foreach ($customsummarypages as $pagename => $data)
|
{
|
||||||
|
if ($userlist === null || isset($_SESSION[$ses]))
|
||||||
|
$list = $customsummarypages;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($userlist !== null && isset($userlist['def']))
|
||||||
|
$list = array_flip($userlist['def']);
|
||||||
|
else
|
||||||
|
$list = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($list as $pagename => $data)
|
||||||
echo "<input type=button value='$pagename' onclick='pr(\"&pg=$pagename\",null)'> ";
|
echo "<input type=button value='$pagename' onclick='pr(\"&pg=$pagename\",null)'> ";
|
||||||
|
}
|
||||||
|
|
||||||
echo '</td><td width=100%> </td><td nowrap>';
|
echo '</td><td width=100%> </td><td nowrap>';
|
||||||
if ($rig !== null && $readonly === false)
|
if ($rig !== null && $readonly === false)
|
||||||
@ -1580,6 +1604,12 @@ function pagebuttons($rig, $pg)
|
|||||||
echo " <input type=button value='Quit' onclick='prc(\"quit&rig=$rig\",\"Quit CGMiner$rg\")'>";
|
echo " <input type=button value='Quit' onclick='prc(\"quit&rig=$rig\",\"Quit CGMiner$rg\")'>";
|
||||||
}
|
}
|
||||||
refreshbuttons();
|
refreshbuttons();
|
||||||
|
if (isset($_SESSION[$ses]))
|
||||||
|
echo " <input type=button value='Logout' onclick='pr(\"&logout=1\",null)'>";
|
||||||
|
else
|
||||||
|
if ($userlist !== null)
|
||||||
|
echo " <input type=button value='Login' onclick='pr(\"&login=1\",null)'>";
|
||||||
|
|
||||||
echo "</td></tr></table></td></tr>";
|
echo "</td></tr></table></td></tr>";
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
@ -2410,13 +2440,126 @@ function showcustompage($pagename)
|
|||||||
pagebuttons(null, $pagename);
|
pagebuttons(null, $pagename);
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
|
function onlylogin()
|
||||||
|
{
|
||||||
|
global $here;
|
||||||
|
|
||||||
|
htmlhead(false, null, null, true);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<tr height=15%><td> </td></tr>
|
||||||
|
<tr><td>
|
||||||
|
<center>
|
||||||
|
<table width=384 height=368 cellpadding=0 cellspacing=0 border=0>
|
||||||
|
<tr><td>
|
||||||
|
<table width=100% height=100% border=0 align=center cellpadding=5 cellspacing=0>
|
||||||
|
<tr><td><form action='<?php echo $here; ?>' method=post>
|
||||||
|
<table width=200 border=0 align=center cellpadding=5 cellspacing=0>
|
||||||
|
<tr><td height=120 colspan=2> </td></tr>
|
||||||
|
<tr><td colspan=2 align=center valign=middle>
|
||||||
|
<h2>LOGIN</h2></td></tr>
|
||||||
|
<tr><td align=center valign=middle><div align=right>Username:</div></td>
|
||||||
|
<td height=33 align=center valign=middle>
|
||||||
|
<input type=text name=rut size=18></td></tr>
|
||||||
|
<tr><td align=center valign=middle><div align=right>Password:</div></td>
|
||||||
|
<td height=33 align=center valign=middle>
|
||||||
|
<input type=password name=roh size=18></td></tr>
|
||||||
|
<tr valign=top><td></td><td><input type=submit value=Login>
|
||||||
|
</td></tr>
|
||||||
|
</table></form></td></tr>
|
||||||
|
</table></td></tr>
|
||||||
|
</table></center>
|
||||||
|
</td></tr>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
#
|
||||||
|
function checklogin()
|
||||||
|
{
|
||||||
|
global $allowcustompages, $customsummarypages;
|
||||||
|
global $userlist, $ses;
|
||||||
|
|
||||||
|
$out = trim(getparam('logout', true));
|
||||||
|
if ($out !== null && $out !== '' && isset($_SESSION[$ses]))
|
||||||
|
unset($_SESSION[$ses]);
|
||||||
|
|
||||||
|
$login = trim(getparam('login', true));
|
||||||
|
if ($login !== null && $login !== '')
|
||||||
|
{
|
||||||
|
if (isset($_SESSION[$ses]))
|
||||||
|
unset($_SESSION[$ses]);
|
||||||
|
|
||||||
|
onlylogin();
|
||||||
|
return 'login';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($userlist === null)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$rut = trim(getparam('rut', true));
|
||||||
|
$roh = trim(getparam('roh', true));
|
||||||
|
|
||||||
|
if (($rut !== null && $rut !== '') || ($roh !== null && $roh !== ''))
|
||||||
|
{
|
||||||
|
if (isset($_SESSION[$ses]))
|
||||||
|
unset($_SESSION[$ses]);
|
||||||
|
|
||||||
|
if ($rut !== null && $rut !== '' && $roh !== null && $roh !== '')
|
||||||
|
{
|
||||||
|
if (isset($userlist['sys']) && isset($userlist['sys'][$rut])
|
||||||
|
&& ($userlist['sys'][$rut] === $roh))
|
||||||
|
{
|
||||||
|
$_SESSION[$ses] = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($userlist['usr']) && isset($userlist['usr'][$rut])
|
||||||
|
&& ($userlist['usr'][$rut] === $roh))
|
||||||
|
{
|
||||||
|
$_SESSION[$ses] = false;
|
||||||
|
$readonly = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SESSION[$ses]))
|
||||||
|
{
|
||||||
|
if ($_SESSION[$ses] == false)
|
||||||
|
$readonly = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($userlist['def']) && $allowcustompages === true)
|
||||||
|
{
|
||||||
|
// Ensure at least one exists
|
||||||
|
foreach ($userlist['def'] as $pg)
|
||||||
|
if (isset($customsummarypages[$pg]))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
onlylogin();
|
||||||
|
return 'login';
|
||||||
|
}
|
||||||
|
#
|
||||||
function display()
|
function display()
|
||||||
{
|
{
|
||||||
global $miner, $port;
|
global $miner, $port;
|
||||||
global $readonly, $notify, $rigs;
|
global $readonly, $notify, $rigs;
|
||||||
global $ignorerefresh, $autorefresh;
|
global $ignorerefresh, $autorefresh;
|
||||||
global $allowcustompages;
|
global $allowcustompages, $customsummarypages;
|
||||||
global $placebuttons;
|
global $placebuttons;
|
||||||
|
global $userlist, $ses;
|
||||||
|
|
||||||
|
$pagesonly = checklogin();
|
||||||
|
|
||||||
|
if ($pagesonly === 'login')
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ($rigs == null or count($rigs) == 0)
|
||||||
|
{
|
||||||
|
otherrow("<td>No rigs defined</td>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ($ignorerefresh == false)
|
if ($ignorerefresh == false)
|
||||||
{
|
{
|
||||||
@ -2425,52 +2568,65 @@ function display()
|
|||||||
$autorefresh = intval($ref);
|
$autorefresh = intval($ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
$rig = trim(getparam('rig', true));
|
if ($pagesonly !== true)
|
||||||
|
|
||||||
$arg = trim(getparam('arg', true));
|
|
||||||
$preprocess = null;
|
|
||||||
if ($arg != null and $arg != '')
|
|
||||||
{
|
{
|
||||||
$num = null;
|
$rig = trim(getparam('rig', true));
|
||||||
if ($rig != null and $rig != '')
|
|
||||||
{
|
|
||||||
if ($rig >= 0 and $rig < count($rigs))
|
|
||||||
$num = $rig;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (count($rigs) == 0)
|
|
||||||
$num = 0;
|
|
||||||
|
|
||||||
if ($num != null)
|
$arg = trim(getparam('arg', true));
|
||||||
|
$preprocess = null;
|
||||||
|
if ($arg != null and $arg != '')
|
||||||
{
|
{
|
||||||
$parts = explode(':', $rigs[$num], 3);
|
if ($rig != null and $rig != '' and $rig >= 0 and $rig < count($rigs))
|
||||||
if (count($parts) >= 2)
|
|
||||||
{
|
{
|
||||||
$miner = $parts[0];
|
$parts = explode(':', $rigs[$rig], 3);
|
||||||
$port = $parts[1];
|
if (count($parts) >= 2)
|
||||||
|
{
|
||||||
|
$miner = $parts[0];
|
||||||
|
$port = $parts[1];
|
||||||
|
|
||||||
if ($readonly !== true)
|
if ($readonly !== true)
|
||||||
$preprocess = $arg;
|
$preprocess = $arg;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($rigs == null or count($rigs) == 0)
|
|
||||||
{
|
|
||||||
otherrow("<td>No rigs defined</td>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($allowcustompages === true)
|
if ($allowcustompages === true)
|
||||||
{
|
{
|
||||||
$pg = trim(getparam('pg', true));
|
$pg = trim(getparam('pg', true));
|
||||||
if ($pg != null && $pg != '')
|
if ($pagesonly === true)
|
||||||
|
{
|
||||||
|
if ($pg !== null && $pg !== '')
|
||||||
|
{
|
||||||
|
if ($userlist !== null && isset($userlist['def'])
|
||||||
|
&& !in_array($pg, $userlist['def']))
|
||||||
|
$pg = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($userlist !== null && isset($userlist['def']))
|
||||||
|
foreach ($userlist['def'] as $pglook)
|
||||||
|
if (isset($customsummarypages[$pglook]))
|
||||||
|
{
|
||||||
|
$pg = $pglook;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($pg !== null && $pg !== '')
|
||||||
{
|
{
|
||||||
showcustompage($pg);
|
showcustompage($pg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($pagesonly === true)
|
||||||
|
{
|
||||||
|
onlylogin();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (count($rigs) == 1)
|
if (count($rigs) == 1)
|
||||||
{
|
{
|
||||||
$parts = explode(':', $rigs[0], 3);
|
$parts = explode(':', $rigs[0], 3);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user