Advertisement
Guest User

edited PCWT index

a guest
Jun 13th, 2014
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 13.32 KB | None | 0 0
  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE);
  3.  
  4. require './cgminerapi.php';
  5. require './hosts.php';
  6.  
  7. function seconds_to_time($input_seconds)
  8. {
  9.     $seconds_in_minute = 60;
  10.     $seconds_in_hour   = 60 * $seconds_in_minute;
  11.     $seconds_in_day    = 24 * $seconds_in_hour;
  12.  
  13.     // extract days
  14.     $days = floor($input_seconds / $seconds_in_day);
  15.  
  16.     // extract hours
  17.     $hour_seconds = $input_seconds % $seconds_in_day;
  18.     $hours = floor($hour_seconds / $seconds_in_hour);
  19.  
  20.     // extract minutes
  21.     $minute_seconds = $hour_seconds % $seconds_in_hour;
  22.     $minutes = floor($minute_seconds / $seconds_in_minute);
  23.  
  24.     // extract the remaining seconds
  25.     $remaining_seconds = $minute_seconds % $seconds_in_minute;
  26.     $seconds = ceil($remaining_seconds);
  27.  
  28.     // return the final array
  29.     $obj = array(
  30.         'd' => (int)$days,
  31.         'h' => sprintf('%02d', (int)$hours),
  32.         'm' => sprintf('%02d', (int)$minutes),
  33.         's' => sprintf('%02d', (int)$seconds)
  34.     );
  35.     return $obj;
  36. }
  37.  
  38. print <<<HTML
  39. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
  40. <head>
  41. <title>CGMiner Watcher Tool</title>
  42. <meta http-equiv="REFRESH" content="$refreshTime" />
  43. <link rel="stylesheet" type="text/css" href="status.css" />
  44. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  45. </head>
  46. HTML;
  47.  
  48. $rigsArr = array();
  49. $poolsArr = array();
  50.  
  51. foreach ($hosts as $host) {
  52.  
  53.     list ($hostname,$ip,$port) = explode(':',$host);
  54.     $r = requestapi($ip,$port,'devs');
  55.     $s = requestapi($ip,$port,'summary');
  56.     $rdet = requestapi($ip,$port,'devdetails');
  57.     $rpool = requestapi($ip,$port,'pools');
  58.     $rcoin = requestapi($ip,$port,'coin');
  59.     $rversion = requestapi($ip,$port,'version');   
  60.     $cgminerversion = $rversion['VERSION']['CGMiner'];
  61.     $totalhash = $s['SUMMARY']['MHS av'];
  62.     print "<PRE>";
  63.     #print_r($rpool);
  64.     print "</PRE>";
  65.  
  66.     $rigsArr[$hostname]['hostname'] = $hostname;
  67.     $rigsArr[$hostname]['ip'] = $ip;
  68.     $rigsArr[$hostname]['port'] = $port;
  69.     $rigsArr[$hostname]['cgminerversion'] = $cgminerversion;
  70.     $rigsArr[$hostname]['totalhash'] = $totalhash;
  71.     $rigsArr[$hostname]['elapsed'] = $s['SUMMARY']['Elapsed'];
  72.    
  73.    
  74.     foreach ($rpool as $pool) {
  75.         if (array_key_exists('POOL', $pool)) {
  76.         print "<PRE>";
  77.         #print_r($pool);   
  78.         #print $pool['Accepted'];
  79.         print "</PRE>";
  80.         $poolsArr[$pool['URL']]['URL'] = $pool['URL'];
  81.         $poolsArr[$pool['URL']]['User'] = $pool['User'];       
  82.         $poolsArr[$pool['URL']]['POOL'] = $pool['POOL'];   
  83.         $poolsArr[$pool['URL']]['Priority'] = $pool['Priority'];   
  84.         $poolsArr[$pool['URL']]['Status'] = $pool['Status'];   
  85.         $poolsArr[$pool['URL']]['diff'] = $pool['Last Share Difficulty'];  
  86.  
  87.         $poolsArr[$pool['URL']]['Accepted'] = $pool['Accepted'];
  88.         $poolsArr[$pool['URL']]['TAccepted'] = $poolsArr[$pool['URL']]['TAccepted'] + $pool['Accepted'];
  89.         unset($poolsArr[$pool['URL']]['Accepted']);
  90.        
  91.         $poolsArr[$pool['URL']]['Rejected'] = $pool['Rejected'];
  92.         $poolsArr[$pool['URL']]['TRejected'] = $poolsArr[$pool['URL']]['TRejected'] + $pool['Rejected'];
  93.         unset($poolsArr[$pool['URL']]['Rejected']);
  94.  
  95.         $poolsArr[$pool['URL']]['Discarded'] = $pool['Discarded'];
  96.         $poolsArr[$pool['URL']]['TDiscarded'] = $poolsArr[$pool['URL']]['TDiscarded'] + $pool['Discarded'];
  97.         unset($poolsArr[$pool['URL']]['Discarded']);
  98.  
  99.         $poolsArr[$pool['URL']]['Stale'] = $pool['Stale'];
  100.         $poolsArr[$pool['URL']]['TStale'] = $poolsArr[$pool['URL']]['TStale'] + $pool['Stale'];
  101.         unset($poolsArr[$pool['URL']]['Stale']);
  102.  
  103.         $poolsArr[$pool['URL']]['Remote Failures'] = $pool['Remote Failures'];
  104.         $poolsArr[$pool['URL']]['TRemote Failures'] = $poolsArr[$pool['URL']]['TRemote Failures'] + $pool['Remote Failures'];
  105.         unset($poolsArr[$pool['URL']]['Remote Failures']);
  106.  
  107.         $poolsArr[$pool['URL']]['Get Failures'] = $pool['Get Failures'];
  108.         $poolsArr[$pool['URL']]['TGet Failures'] = $poolsArr[$pool['URL']]['TGet Failures'] + $pool['Get Failures'];
  109.         unset($poolsArr[$pool['URL']]['Get Failures']);
  110.  
  111.         }
  112.     }
  113.    
  114.  
  115.     foreach($r as $row) {
  116.         if (array_key_exists('When',$row)) {
  117.             $rigsArr[$hostname]['time'] = $row['When'];
  118.         }  
  119.         if (array_key_exists('GPU',$row)) {
  120.         print "<PRE>";
  121.         #print_r($row);
  122.         print "</PRE>";
  123.         #print $ip;
  124.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUactivity'] = $row['GPU Activity'];
  125.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['HardwareErrors'] = $row['Hardware Errors'];
  126.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUfanspeed'] = $row['Fan Speed'];
  127.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUfanpercent'] = $row['Fan Percent'];
  128.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUpercentrejected'] = round($row['Rejected'] * 100 / $row['Accepted'], 2);
  129.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUhash5s'] = $row['MHS 5s'] * 1000;
  130.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUhashav'] = $row['MHS av'] * 1000;
  131.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUWU'] = round($row['Diff1 Work'] / ($row['Device Elapsed'] / 60), 3);
  132.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUclock'] = $row['GPU Clock'];
  133.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUmemclock'] = $row['Memory Clock'];
  134.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUvoltage'] = $row['GPU Voltage'];
  135.         $ArrDevName = 'DEVDETAILS' . $row['GPU'];
  136.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUModel'] = str_replace('AMD Radeon','',$rdet[$ArrDevName]['Model']);
  137.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUKernel'] = $rdet[$ArrDevName]['Kernel'];
  138.         $ArrDevPool = 'POOL' . $row['Last Share Pool'];
  139.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUPool'] = str_replace('stratum+tcp://','',$rpool[$ArrDevPool]['URL']);
  140.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUnum'] = $row['GPU'];
  141.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUTemp'] = $row['Temperature'];
  142.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUAccepted'] = $row['Accepted'];
  143.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPURejected'] = $row['Rejected'];
  144.         $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUstatus'] = $row['Status'];
  145.         if ($row['Last Share Time'] != "0") {
  146.             $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPULastShareTime'] = $rigsArr[$hostname]['time'] - $row['Last Share Time'] . "s";
  147.         }
  148.         else {
  149.             $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPULastShareTime'] = "N/A";
  150.         }
  151.         if ($cgminerversion < '3.6') {
  152.             $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUcoindiff'] = round($rcoin['COIN']['Network Difficulty'] / 65536, 2);
  153.         }
  154.         else {
  155.             $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUcoindiff'] = round($rcoin['COIN']['Network Difficulty'], 2);
  156.         }
  157.         }      
  158.     }
  159. }
  160. $Thash = "0";
  161. $Nrigs = "0";
  162. $Ngpus = "0";
  163. foreach($rigsArr as $h) {
  164.     $Thash = $Thash + $h['totalhash'];
  165.     $Nrigs++;
  166.     foreach($h['GPUS'] as $gp) {
  167.         $Ngpus++;
  168.     }
  169. }
  170. print <<<HEAD
  171. <table bgcolor='black' cellspacing='0' cellpadding='0' border='0' width='100%' >
  172.     <tr><td width='341'><img src='images/PCWT.jpg'></td><td valign='bottom' style='font-size:16;color:#FFFFFF'><br>Number of Rig(s): $Nrigs <br> Number of GPU(s) $Ngpus <br> Total Hash Power: $Thash MH/s <br> Version: beta4 - hutniks edit<br><br> </td></tr>
  173. </table>
  174. HEAD;
  175.  
  176.  
  177. foreach($rigsArr as $rig) {
  178.  
  179.     $hostname = $rig['hostname'];
  180.     $totalhash = $rig['totalhash'];
  181.     $elapsed = seconds_to_time($rig['elapsed']);
  182.     $running = $elapsed['d'] . 'd ' . $elapsed['h'] . ':' . $elapsed['m'] . ':' . $elapsed['s'];
  183.  
  184.     //check if to show kernel
  185.     if($showKernel==1){$KernelTD='<TD class="ghdr">Kernel</TD>';}
  186.    
  187.     print <<<TOPTABLE
  188.     <p>
  189.     <font size='5'> $hostname - Hashing average : $totalhash MH/sec - Uptime: $running</font>
  190.     <table width='$tableWidth' style="border:1px solid black;border-collapse:collapse;text-align: center;">
  191.     <TR class='ghdr' style="background-color:#000000;color:#FFFFFF">
  192.         <TD class='ghdr' width='20'>#</TD>
  193.         <TD class='ghdr'>Status</TD>
  194.         <TD class='ghdr'>Temp</TD>
  195.         <TD class='ghdr'>Fan% (rpm)</TD>
  196.         <TD class='ghdr' width='130'>KHs (5s|avg)</TD>
  197.         <TD class='ghdr'>Pool</TD>
  198.         <TD class='ghdr'>Diff</TD>
  199.         <TD class='ghdr' align='center'>Accept / Reject </TD>
  200.         <TD class='ghdr' align='center'>LastShare</TD>
  201.         <TD class='ghdr'>% Reject</TD>
  202.         <TD class='ghdr'>WU</TD>
  203.         $KernelTD
  204.         <TD class='ghdr'>Core</TD>
  205.         <TD class='ghdr'>Memory</TD>
  206.         <TD class='ghdr'>Model</TD>
  207.         <TD class='ghdr'>Power</TD>
  208.         <TD class='ghdr'>HW</TD>
  209.     </TR>
  210. TOPTABLE;
  211.  
  212.  
  213.  
  214.     foreach($rig['GPUS'] as $gpu) {
  215.    
  216.         if ($gpu['GPUhash5s'] == "0" && $gpu['GPUstatus'] == 'Alive') {
  217.             } else {
  218.             $GPUnum = $gpu['GPUnum'];
  219.             $GPUstatus = $gpu['GPUstatus'];
  220.             if ($gpu['GPUstatus'] == 'Alive') {
  221.                 $GPUstatus = "<img src='images/ok24.png'>";
  222.             }
  223.             else {
  224.                 $GPUstatus = "<img src='images/down24.png'>";
  225.             }
  226.             $GPUTemp = $gpu['GPUTemp'];
  227.             $GPUactivity = $gpu['GPUactivity'];
  228.             $GPUhash5s = $gpu['GPUhash5s'];
  229.             $GPUhashav = $gpu['GPUhashav'];
  230.             list($GPUPool,$GPUPort) = explode(':', $gpu['GPUPool']);
  231.             $GPUcoindiff = $gpu['GPUcoindiff'];
  232.             $GPUAccepted = $gpu['GPUAccepted'];
  233.             $GPULastshare = $gpu['GPULastShareTime'];
  234.             $GPURejected = $gpu['GPURejected'];
  235.             $GPUWU = $gpu['GPUWU'];
  236.             $GPUpercentrejected = round($GPURejected * 100 / ($GPUAccepted + $GPURejected), 2);
  237.             $GPUfanpercent = $gpu['GPUfanpercent'];
  238.             $GPUfanspeed = $gpu['GPUfanspeed'];
  239.             $GPUclock = $gpu['GPUclock'];
  240.             $GPUmemclock = $gpu['GPUmemclock'];
  241.             $GPUModel = $gpu['GPUModel'];
  242.             $GPUKernel = $gpu['GPUKernel'];
  243.             $GPUvoltage = $gpu['GPUvoltage'];
  244.             $HardwareErrors = $gpu['HardwareErrors'];
  245.            
  246.         //red style if too high rejected percent
  247.         if($GPUpercentrejected > $rejectedPercentWarning ){
  248.             $RejectedWarning=' style="background:red;" ';
  249.         }else{
  250.             $RejectedWarning='';
  251.         }
  252.        
  253.         //red style if HW errors
  254.         if($HardwareErrors > $HWerrorsWarning ){
  255.             $errors=' style="background:red;" ';
  256.         }else{
  257.             $errors='';
  258.         }
  259.        
  260.         //red style if low hashrate
  261.         if($GPUhash5s / $hashrateWarning * 100 < $GPUhashav){
  262.             $lowHashColor=' style="background:red;" ';
  263.         }else{
  264.             $lowHashColor='';
  265.         }
  266.         //check if to show kernel
  267.         if($showKernel==1){$KernelTD='<TD class="ghdr myBorder">'.$GPUKernel.'</TD>';}else{$KernelTD='';}
  268.        
  269.             print <<<RIGS
  270.             <TR style="border:1px solid gray; text-align: center;">
  271.             <TD class='ghdr'>$GPUnum</TD>
  272.             <TD class='ghdr'>$GPUstatus</TD>
  273.             <TD class='ghdr myBorder'>$GPUTemp C</TD>
  274.             <TD class='ghdr myBorder'>$GPUfanpercent ($GPUfanspeed)</TD>
  275.             <TD class='ghdr myBorder'$lowHashColor>$GPUhash5s|$GPUhashav</TD>
  276.             <TD class='ghdr myBorder'>$GPUPool</TD>
  277.             <TD class='ghdr myBorder'>$GPUcoindiff</TD>
  278.             <TD class='ghdr myBorder' align='center'>$GPUAccepted / $GPURejected</TD>
  279.             <TD class='ghdr myBorder' align='center'>$GPULastshare</TD>
  280.             <TD class='ghdr myBorder'$RejectedWarning>$GPUpercentrejected %</TD>
  281.             <TD class='ghdr myBorder'>$GPUWU/m</TD>
  282.             $KernelTD
  283.             <TD class='ghdr myBorder'>$GPUclock Mhz</TD>
  284.             <TD class='ghdr myBorder'>$GPUmemclock Mhz</TD>
  285.             <TD class='dhdr myBorder'>$GPUModel</TD>
  286.             <TD class='ghdr myBorder'>$GPUvoltage</TD>
  287.             <TD class='ghdr myBorder'$errors>$HardwareErrors</TD>
  288.             </TR>
  289. RIGS;
  290.    
  291.             }
  292.         }
  293.    
  294.         print "</table>";  
  295. }
  296.  
  297. print <<<POOLTABLE
  298. <p>
  299. <font size='5'> Pools</font>
  300. <table width='$tableWidth' style="border:1px solid gray;border-collapse:collapse;text-align: center;"">
  301. <TR class='ghdr' style="background-color:#000000;color:#FFFFFF">
  302.     <TD class='ghdr'>Pool #</TD>
  303.     <TD class='ghdr'>Status</TD>
  304.     <TD class='ghdr'>Priority</TD>
  305.     <TD class='ghdr'>URL</TD>
  306.     <TD class='ghdr'>Diff</TD>
  307.     <TD class='ghdr'>Accepted</TD>
  308.     <TD class='ghdr'>Rejected (%)</TD>
  309.     <TD class='ghdr'>Discarded</TD>
  310.     <TD class='ghdr'>Stales</TD>
  311.     <TD class='ghdr' align='center'>Get / Remote Failures</TD>
  312. </TR>
  313. POOLTABLE;
  314. $poolpool = "0";
  315. foreach($poolsArr as $pool) {
  316.     print "<PRE>";
  317.     #print_r($pool);
  318.     print "</PRE>";
  319.     $poolpool++;
  320.     $poolpriority = $pool['Priority'];
  321.     $poolurl = $pool['URL'];
  322.     $pooluser = $pool['User'];
  323.     $pooldiff = round($pool['diff'], 2);
  324.     $poolaccepted = $pool['TAccepted'];
  325.     $poolrejected = $pool['TRejected'];
  326.     if(($poolaccepted + $poolrejected)!=0){$poolrejpercentbef = $poolrejected * 100 / ($poolaccepted + $poolrejected);}else{$poolrejpercentbef='0';}
  327.     $poolrejpercent = "(" . round($poolrejpercentbef, 2) . "%)";
  328.     $pooldiscarded = $pool['TDiscarded'];
  329.     $poolstale = $pool['TStale'];
  330.     $poolgetfail = $pool['TGet Failures'];
  331.     $poolremfail = $pool['TRemote Failures'];
  332.    
  333.     //red style if too high rejected percent
  334.     if(round($poolrejpercentbef, 2) > $rejectedPercentWarning ){
  335.         $poolRejectedWarning=' style="background:red;" ';
  336.     }else{
  337.         $poolRejectedWarning='';
  338.     }
  339.  
  340.     if ($pool['Status'] == 'Alive') {
  341.         $poolstatus = "<img src='images/ok24.png'>";
  342.     }
  343.     else {
  344.         $poolstatus = "<img src='images/down24.png'>";
  345.     }
  346.    
  347.     print <<<POOLROW
  348.     <tr class='ghdr' style="border:1px solid gray;">
  349.         <TD class='ghdr'>$poolpool</TD>
  350.         <TD class='ghdr'>$poolstatus</TD>
  351.         <TD class='ghdr myBorder'>$poolpriority</TD>
  352.         <TD class='ghdr myBorder'>$poolurl @ $pooluser</TD>
  353.         <TD class='ghdr myBorder'>$pooldiff</TD>
  354.         <TD class='ghdr myBorder'>$poolaccepted</TD>
  355.         <TD class='ghdr myBorder'$poolRejectedWarning>$poolrejected $poolrejpercent</TD>
  356.         <TD class='ghdr myBorder'>$pooldiscarded</TD>
  357.         <TD class='ghdr myBorder'>$poolstale</TD>
  358.         <TD class='ghdr myBorder' align='center'>$poolgetfail / $poolremfail</TD>
  359.     </tr>
  360.  
  361. POOLROW;
  362. }
  363.  
  364. print "</table>";
  365.  
  366. print "<PRE>";
  367. #print_r($rigsArr);
  368. #print_r($poolsArr);
  369. print "</PRE>";
  370. ?>
  371. <p style='font-size:small;'>      
  372. This tool is available <a href='http://www.pcwt.info'>here</a><br>  
  373. BTC donation: 1K4fqtHHxc31JwoUmctUC1hgXDC2G4G8xp <br>
  374. </p>
  375. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement