mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-23 04:54:26 +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:
|
||||
$allowgen = false;
|
||||
|
||||
|
117
miner.php
117
miner.php
@ -3,7 +3,7 @@ session_start();
|
||||
#
|
||||
global $doctype, $title, $miner, $port, $readonly, $notify, $rigs;
|
||||
global $mcast, $mcastexpect, $mcastaddr, $mcastport, $mcastcode;
|
||||
global $mcastlistport, $mcasttimeout, $allowgen;
|
||||
global $mcastlistport, $mcasttimeout, $mcastretries, $allowgen;
|
||||
global $rigipsecurity, $rigtotals, $forcerigtotals;
|
||||
global $socksndtimeoutsec, $sockrcvtimeoutsec;
|
||||
global $checklastshare, $poolinputs, $hidefields;
|
||||
@ -70,6 +70,9 @@ $mcastlistport = 4027;
|
||||
# to wait for replies to the Multicast message
|
||||
$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'
|
||||
# false means ignore any 'gen' options
|
||||
$allowgen = false;
|
||||
@ -373,10 +376,10 @@ global $haderror, $error;
|
||||
$haderror = false;
|
||||
$error = null;
|
||||
#
|
||||
function getrigs()
|
||||
function mcastrigs()
|
||||
{
|
||||
global $rigs, $mcastaddr, $mcastport, $mcastcode;
|
||||
global $mcastlistport, $mcasttimeout, $error;
|
||||
global $rigs, $mcastexpect, $mcastaddr, $mcastport, $mcastcode;
|
||||
global $mcastlistport, $mcasttimeout, $mcastretries, $error;
|
||||
|
||||
$listname = "0.0.0.0";
|
||||
|
||||
@ -414,56 +417,78 @@ function getrigs()
|
||||
return;
|
||||
}
|
||||
|
||||
$mcast_soc = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
|
||||
if ($mcast_soc === false || $mcast_soc == null)
|
||||
$retries = $mcastretries;
|
||||
$doretry = ($retries > 0);
|
||||
do
|
||||
{
|
||||
$msg = "ERR: mcast send socket create(UDP) failed";
|
||||
if ($rigipsecurity === false)
|
||||
$mcast_soc = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
|
||||
if ($mcast_soc === false || $mcast_soc == null)
|
||||
{
|
||||
$error = socket_strerror(socket_last_error());
|
||||
$error = "$msg '$error'\n";
|
||||
}
|
||||
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')
|
||||
$msg = "ERR: mcast send socket create(UDP) failed";
|
||||
if ($rigipsecurity === false)
|
||||
{
|
||||
$rp = intval($ans[2]);
|
||||
|
||||
if (count($ans) > 3)
|
||||
$mdes = str_replace("\0", '', $ans[3]);
|
||||
else
|
||||
$mdes = '';
|
||||
|
||||
if (strlen($mdes) > 0)
|
||||
$rigs[] = "$ip:$rp:$mdes";
|
||||
else
|
||||
$rigs[] = "$ip:$rp";
|
||||
$error = socket_strerror(socket_last_error());
|
||||
$error = "$msg '$error'\n";
|
||||
}
|
||||
}
|
||||
if ((microtime(true) - $stt) >= $mcasttimeout)
|
||||
break;
|
||||
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]);
|
||||
|
||||
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);
|
||||
}
|
||||
#
|
||||
function getrigs()
|
||||
{
|
||||
global $rigs;
|
||||
|
||||
mcastrigs();
|
||||
|
||||
sort($rigs);
|
||||
}
|
||||
#
|
||||
function getsock($rig, $addr, $port)
|
||||
{
|
||||
global $rigipsecurity;
|
||||
|
Loading…
x
Reference in New Issue
Block a user