Source for file class.hddtemp.inc.php

Documentation is available at class.hddtemp.inc.php

  1. <?php
  2.  
  3. // phpSysInfo - A PHP System Information Script
  4. // http://phpsysinfo.sourceforge.net/
  5.  
  6. // This program is free software; you can redistribute it and/or
  7. // modify it under the terms of the GNU General Public License
  8. // as published by the Free Software Foundation; either version 2
  9. // of the License, or (at your option) any later version.
  10.  
  11. // This program is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15.  
  16. // You should have received a copy of the GNU General Public License
  17. // along with this program; if not, write to the Free Software
  18. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  19.  
  20. // $Id: class.hddtemp.inc.php,v 1.7 2007/01/21 13:17:20 bigmichi1 Exp $
  21.  
  22. class hddtemp {
  23.     
  24.     function temperature($hddtemp_avail{
  25.         $ar_buf array();
  26.         $results array();
  27.         switch ($hddtemp_avail{
  28.             case "tcp":
  29.                 // Timo van Roermund: connect to the hddtemp daemon, use a 5 second timeout.
  30.                 $fp fsockopen('localhost'7634$errno$errstr5);
  31.                 // if connected, read the output of the hddtemp daemon
  32.                 if ($fp{
  33.                     // read output of the daemon
  34.                     $lines '';
  35.                     while (!feof($fp)) {
  36.                         $lines .= fread($fp1024);
  37.                     }
  38.                     // close the connection
  39.                     fclose($fp);
  40.                 else {
  41.                     die("HDDTemp error: " $errno ", " $errstr);
  42.                 }
  43.                 $lines str_replace("||""|\n|"$lines);
  44.                 $ar_buf explode("\n"$lines);
  45.                 break;
  46.             case "suid":
  47.                 $strDrives "";
  48.                 $strContent rfts"/proc/diskstats"04096false );
  49.                 if$strContent != "ERROR" {
  50.                     $arrContent explode"\n"$strContent );
  51.                     foreach$arrContent as $strLine {
  52.                         preg_match"/^\s(.*)\s([a-z]*)\s(.*)/"$strLine$arrSplit );
  53.                         if!empty$arrSplit[2) ) {
  54.                             $strDrive '/dev/' $arrSplit[2];
  55.                             iffile_exists$strDrive ) ) {
  56.                             $strDrives $strDrives $strDrive ' ';
  57.                             }                            
  58.                         }
  59.                     }
  60.                 else {
  61.                     $strContent rfts"/proc/partitions"04096false );
  62.                     if$strContent != "ERROR" {
  63.                     $arrContent explode"\n"$strContent );
  64.                     foreach$arrContent as $strLine {
  65.                         if!preg_match"/^\s(.*)\s([\/a-z0-9]*(\/disc))\s(.*)/"$strLine$arrSplit ) ) {
  66.                             preg_match"/^\s(.*)\s([a-z]*)\s(.*)/"$strLine$arrSplit );
  67.                         }
  68.                         if!empty$arrSplit[2) ) {
  69.                             $strDrive '/dev/' $arrSplit[2];
  70.                             iffile_exists$strDrive ) ) {
  71.                             $strDrives $strDrives $strDrive ' ';
  72.                             }
  73.                         }
  74.                     }
  75.                     }
  76.                 }
  77.                 
  78.                 iftrim$strDrives == "" {
  79.                     return array();
  80.                 }
  81.  
  82.                 $hddtemp_value execute_program("hddtemp"$strDrives);
  83.                 $hddtemp_value explode("\n"$hddtemp_value);
  84.                 foreach($hddtemp_value as $line{
  85.                     $temp preg_split("/:\s/"$line3);
  86.                     if(count($temp== && preg_match("/^[0-9]/"$temp[2])) {
  87.                         list($temp[2]$temp[3](preg_split("/\s/"$temp[2]));
  88.                         array_push$ar_buf"|" implode("|"$temp"|");
  89.                     }
  90.                 }
  91.                 break;
  92.             default:
  93.                 die("Bad hddtemp configuration in config.php");
  94.         }
  95.         
  96.         // Timo van Roermund: parse the info from the hddtemp daemon.
  97.         $i 0;
  98.         foreach($ar_buf as $line{
  99.             $data array();
  100.             if (ereg("\|(.*)\|(.*)\|(.*)\|(.*)\|"$line$data)) {
  101.                 iftrim($data[3]!= "ERR" {
  102.                     // get the info we need
  103.                     $results[$i]['label'$data[1];
  104.                     $results[$i]['value'$data[3];
  105.                     $results[$i]['model'$data[2];
  106.                     $i++;
  107.                 }
  108.             }
  109.         }
  110.         
  111.         return $results;
  112.     }
  113. }
  114. ?>

Documentation generated on Mon, 17 Nov 2008 01:10:23 +0100 by phpDocumentor 1.4.0