mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-02 10:04:33 +00:00
commit
52496f9cb0
22
API-README
22
API-README
@ -1247,6 +1247,28 @@ N.B. the accuracy of the timing used to wait for the replies is
|
|||||||
|
|
||||||
---------
|
---------
|
||||||
|
|
||||||
|
Default:
|
||||||
|
$mcastretries = 0;
|
||||||
|
|
||||||
|
Set $mcastretries to the number of times to retry the multicast
|
||||||
|
|
||||||
|
If $mcastexpect is 0, this is simply the number of extra times
|
||||||
|
that it will send the multicast request
|
||||||
|
N.B. cgminer doesn't listen for multicast requests for 1000ms after
|
||||||
|
each one it hears
|
||||||
|
|
||||||
|
If $mcastexpect is > 0, it will stop looking for replies once it
|
||||||
|
has found at least $mcastexpect rigs, but it only checks this rig
|
||||||
|
limit each time it reaches the $mcasttimeout limit, thus it can find
|
||||||
|
more than $mcastexpect rigs if more exist
|
||||||
|
It will send the multicast message up to $mcastretries extra times or
|
||||||
|
until it has found at least $mcastexpect rigs
|
||||||
|
However, when using $mcastretries, it is possible for it to sometimes
|
||||||
|
ignore some rigs on the network if $mcastexpect is less than the
|
||||||
|
number of rigs on the network and some rigs are too slow to reply
|
||||||
|
|
||||||
|
---------
|
||||||
|
|
||||||
Default:
|
Default:
|
||||||
$allowgen = false;
|
$allowgen = false;
|
||||||
|
|
||||||
|
117
miner.php
117
miner.php
@ -3,7 +3,7 @@ session_start();
|
|||||||
#
|
#
|
||||||
global $doctype, $title, $miner, $port, $readonly, $notify, $rigs;
|
global $doctype, $title, $miner, $port, $readonly, $notify, $rigs;
|
||||||
global $mcast, $mcastexpect, $mcastaddr, $mcastport, $mcastcode;
|
global $mcast, $mcastexpect, $mcastaddr, $mcastport, $mcastcode;
|
||||||
global $mcastlistport, $mcasttimeout, $allowgen;
|
global $mcastlistport, $mcasttimeout, $mcastretries, $allowgen;
|
||||||
global $rigipsecurity, $rigtotals, $forcerigtotals;
|
global $rigipsecurity, $rigtotals, $forcerigtotals;
|
||||||
global $socksndtimeoutsec, $sockrcvtimeoutsec;
|
global $socksndtimeoutsec, $sockrcvtimeoutsec;
|
||||||
global $checklastshare, $poolinputs, $hidefields;
|
global $checklastshare, $poolinputs, $hidefields;
|
||||||
@ -70,6 +70,9 @@ $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 $mcastretries to the number of times to retry the multicast
|
||||||
|
$mcastretries = 0;
|
||||||
|
#
|
||||||
# Set $allowgen to true to allow customsummarypages to use 'gen'
|
# Set $allowgen to true to allow customsummarypages to use 'gen'
|
||||||
# false means ignore any 'gen' options
|
# false means ignore any 'gen' options
|
||||||
$allowgen = false;
|
$allowgen = false;
|
||||||
@ -373,10 +376,10 @@ global $haderror, $error;
|
|||||||
$haderror = false;
|
$haderror = false;
|
||||||
$error = null;
|
$error = null;
|
||||||
#
|
#
|
||||||
function getrigs()
|
function mcastrigs()
|
||||||
{
|
{
|
||||||
global $rigs, $mcastaddr, $mcastport, $mcastcode;
|
global $rigs, $mcastexpect, $mcastaddr, $mcastport, $mcastcode;
|
||||||
global $mcastlistport, $mcasttimeout, $error;
|
global $mcastlistport, $mcasttimeout, $mcastretries, $error;
|
||||||
|
|
||||||
$listname = "0.0.0.0";
|
$listname = "0.0.0.0";
|
||||||
|
|
||||||
@ -414,56 +417,78 @@ function getrigs()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$mcast_soc = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
|
$retries = $mcastretries;
|
||||||
if ($mcast_soc === false || $mcast_soc == null)
|
$doretry = ($retries > 0);
|
||||||
|
do
|
||||||
{
|
{
|
||||||
$msg = "ERR: mcast send socket create(UDP) failed";
|
$mcast_soc = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
|
||||||
if ($rigipsecurity === false)
|
if ($mcast_soc === false || $mcast_soc == null)
|
||||||
{
|
{
|
||||||
$error = socket_strerror(socket_last_error());
|
$msg = "ERR: mcast send socket create(UDP) failed";
|
||||||
$error = "$msg '$error'\n";
|
if ($rigipsecurity === false)
|
||||||
}
|
|
||||||
else
|
|
||||||
$error = "$msg\n";
|
|
||||||
|
|
||||||
socket_close($rep_soc);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$buf = "cgminer-$mcastcode-$mcastlistport";
|
|
||||||
socket_sendto($mcast_soc, $buf, strlen($buf), 0, $mcastaddr, $mcastport);
|
|
||||||
socket_close($mcast_soc);
|
|
||||||
|
|
||||||
$stt = microtime(true);
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
$got = @socket_recvfrom($rep_soc, $buf, 32, MSG_DONTWAIT, $ip, $p);
|
|
||||||
if ($got !== false && $got > 0)
|
|
||||||
{
|
|
||||||
$ans = explode('-', $buf, 4);
|
|
||||||
if (count($ans) >= 3 && $ans[0] == 'cgm' && $ans[1] == 'FTW')
|
|
||||||
{
|
{
|
||||||
$rp = intval($ans[2]);
|
$error = socket_strerror(socket_last_error());
|
||||||
|
$error = "$msg '$error'\n";
|
||||||
if (count($ans) > 3)
|
|
||||||
$mdes = str_replace("\0", '', $ans[3]);
|
|
||||||
else
|
|
||||||
$mdes = '';
|
|
||||||
|
|
||||||
if (strlen($mdes) > 0)
|
|
||||||
$rigs[] = "$ip:$rp:$mdes";
|
|
||||||
else
|
|
||||||
$rigs[] = "$ip:$rp";
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
if ((microtime(true) - $stt) >= $mcasttimeout)
|
$error = "$msg\n";
|
||||||
break;
|
|
||||||
|
socket_close($rep_soc);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$buf = "cgminer-$mcastcode-$mcastlistport";
|
||||||
|
socket_sendto($mcast_soc, $buf, strlen($buf), 0, $mcastaddr, $mcastport);
|
||||||
|
socket_close($mcast_soc);
|
||||||
|
|
||||||
|
$stt = microtime(true);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
$got = @socket_recvfrom($rep_soc, $buf, 32, MSG_DONTWAIT, $ip, $p);
|
||||||
|
if ($got !== false && $got > 0)
|
||||||
|
{
|
||||||
|
$ans = explode('-', $buf, 4);
|
||||||
|
if (count($ans) >= 3 && $ans[0] == 'cgm' && $ans[1] == 'FTW')
|
||||||
|
{
|
||||||
|
$rp = intval($ans[2]);
|
||||||
|
|
||||||
|
if (count($ans) > 3)
|
||||||
|
$mdes = str_replace("\0", '', $ans[3]);
|
||||||
|
else
|
||||||
|
$mdes = '';
|
||||||
|
|
||||||
|
if (strlen($mdes) > 0)
|
||||||
|
$rig = "$ip:$rp:$mdes";
|
||||||
|
else
|
||||||
|
$rig = "$ip:$rp";
|
||||||
|
|
||||||
|
if (!in_array($rig, $rigs))
|
||||||
|
$rigs[] = $rig;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((microtime(true) - $stt) >= $mcasttimeout)
|
||||||
|
break;
|
||||||
|
|
||||||
|
usleep(100000);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($mcastexpect > 0 && count($rigs) >= $mcastexpect)
|
||||||
|
$doretry = false;
|
||||||
|
|
||||||
|
} while ($doretry && --$retries > 0);
|
||||||
|
|
||||||
usleep(100000);
|
|
||||||
}
|
|
||||||
socket_close($rep_soc);
|
socket_close($rep_soc);
|
||||||
}
|
}
|
||||||
#
|
#
|
||||||
|
function getrigs()
|
||||||
|
{
|
||||||
|
global $rigs;
|
||||||
|
|
||||||
|
mcastrigs();
|
||||||
|
|
||||||
|
sort($rigs);
|
||||||
|
}
|
||||||
|
#
|
||||||
function getsock($rig, $addr, $port)
|
function getsock($rig, $addr, $port)
|
||||||
{
|
{
|
||||||
global $rigipsecurity;
|
global $rigipsecurity;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user