jmontoya
2010-08-04 e8a29cf134f7df1a1e7637083f6d7adf64949b7c
install/lib/install.lib.php
@@ -56,9 +56,16 @@
$FILE = realpath('../install.php');
//** Get distribution identifier
//** IMPORTANT!
//   This is the same code as in /server/mods-available/monitor_core_module.inc.php
//   So if you change it here, you also have to change it in
//   /server/mods-available/monitor_core_module.inc.php!
function get_distname() {
   
   $distname = '';
   $distver = '';
   $distid = '';
   $distbaseid = '';
   
   //** Debian or Ubuntu
   if(file_exists('/etc/debian_version')) {
@@ -69,13 +76,24 @@
         $distid = 'debian40';
         $distbaseid = 'debian';
         swriteln("Operating System: Debian 4.0 or compatible\n");
      }
      if(trim(file_get_contents('/etc/debian_version')) == '5.0' || trim(file_get_contents('/etc/debian_version')) == 'lenny/sid') {
      } elseif(strstr(trim(file_get_contents('/etc/debian_version')),'5.0')) {
         $distname = 'Debian';
         $distver = 'Lenny/Sid';
         $distver = 'Lenny';
         $distid = 'debian40';
         $distbaseid = 'debian';
         swriteln("Operating System: Debian Lenny/Sid or compatible\n");
         swriteln("Operating System: Debian Lenny or compatible\n");
      } elseif(strstr(trim(file_get_contents('/etc/debian_version')),'6.0') || trim(file_get_contents('/etc/debian_version')) == 'squeeze/sid') {
         $distname = 'Debian';
         $distver = 'Squeeze/Sid';
         $distid = 'debian60';
         $distbaseid = 'debian';
         swriteln("Operating System: Debian 6.0 (Squeeze/Sid) or compatible\n");
      }  else {
         $distname = 'Debian';
         $distver = 'Unknown';
         $distid = 'debian40';
         $distbaseid = 'debian';
         swriteln("Operating System: Debian or compatible, unknown version.\n");
      }
   }
   
@@ -87,6 +105,24 @@
         $distid = 'opensuse110';
         $distbaseid = 'opensuse';
         swriteln("Operating System: openSUSE 11.0 or compatible\n");
      } elseif(stristr(file_get_contents('/etc/SuSE-release'),'11.1')) {
         $distname = 'openSUSE';
         $distver = '11.1';
         $distid = 'opensuse110';
         $distbaseid = 'opensuse';
         swriteln("Operating System: openSUSE 11.1 or compatible\n");
      } elseif(stristr(file_get_contents('/etc/SuSE-release'),'11.2')) {
         $distname = 'openSUSE';
         $distver = '11.2';
         $distid = 'opensuse112';
         $distbaseid = 'opensuse';
         swriteln("Operating System: openSUSE 11.2 or compatible\n");
      }  else {
         $distname = 'openSUSE';
         $distver = 'Unknown';
         $distid = 'opensuse112';
         $distbaseid = 'opensuse';
         swriteln("Operating System: openSUSE or compatible, unknown version.\n");
      }
   }
   
@@ -102,16 +138,50 @@
         $distid = 'fedora9';
         $distbaseid = 'fedora';
         swriteln("Operating System: Fedora 9 or compatible\n");
      }
      if(stristr($content,'CentOS release 5.2 (Final)')) {
      } elseif(stristr($content,'Fedora release 10 (Cambridge)')) {
         $distname = 'Fedora';
         $distver = '10';
         $distid = 'fedora9';
         $distbaseid = 'fedora';
         swriteln("Operating System: Fedora 10 or compatible\n");
      } elseif(stristr($content,'Fedora release 10')) {
         $distname = 'Fedora';
         $distver = '11';
         $distid = 'fedora9';
         $distbaseid = 'fedora';
         swriteln("Operating System: Fedora 11 or compatible\n");
      } elseif(stristr($content,'CentOS release 5.2 (Final)')) {
         $distname = 'CentOS';
         $distver = '5.2';
         $distid = 'centos52';
         $distbaseid = 'fedora';
         swriteln("Operating System: CentOS 5.2 or compatible\n");
      } elseif(stristr($content,'CentOS release 5.3 (Final)')) {
         $distname = 'CentOS';
         $distver = '5.3';
         $distid = 'centos53';
         $distbaseid = 'fedora';
         swriteln("Operating System: CentOS 5.3 or compatible\n");
      } else {
         $distname = 'Redhat';
         $distver = 'Unknown';
         $distid = 'fedora9';
         $distbaseid = 'fedora';
         swriteln("Operating System: Redhat or compatible, unknown version.\n");
      }
   }
   //** Gentoo
    elseif(file_exists("/etc/gentoo-release")) {
       $content = file_get_contents('/etc/gentoo-release');
        preg_match_all('/([0-9]{1,2})/', $content, $version);
       $distname = 'Gentoo';
       $distver = $version[0][0].$version[0][1];
       $distid = 'gentoo';
       $distbaseid = 'gentoo';
       swriteln("Operating System: Gentoo $distver or compatible\n");
      
   } else {
      die('unrecognized linux distribution');
@@ -193,10 +263,14 @@
function rf($file){
   clearstatcache();
   if(!$fp = fopen ($file, 'rb')){
      ilog('WARNING: could not open file '.$file);
   if(is_file($file)) {
      if(!$fp = fopen ($file, 'rb')){
         ilog('WARNING: could not open file '.$file);
      }
      return filesize($file) > 0 ? fread($fp, filesize($file)) : '';
   } else {
      return '';
   }
   return filesize($file) > 0 ? fread($fp, filesize($file)) : '';
}
function wf($file, $content){
@@ -558,7 +632,7 @@
}
function is_installed($appname) {
   exec('which '.escapeshellcmd($appname).' > /dev/null 2> /dev/null',$out);
   exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out);
   if(isset($out[0]) && stristr($out[0],$appname)) {
      return true;
   } else {
@@ -566,6 +640,81 @@
   }
}
/*
 * Compare ISPConfig version number.
 * return values:
 * -1 $current version is newer then $new version (downgrade)
 * 0 $current version = $new version
 * 1 $current version is older then new version (update)
*/
function compare_ispconfig_version($current,$new) {
   if( $current == $new) {
      return 0;
   }
   $p = explode('.',$current);
   $tmp = '';
   $tmp .= str_pad(intval($p[0]), 3, '0', STR_PAD_LEFT);
   $tmp .= (isset($p[1]))?str_pad(intval($p[1]), 3, '0', STR_PAD_LEFT):'000';
   $tmp .= (isset($p[2]))?str_pad(intval($p[2]), 3, '0', STR_PAD_LEFT):'000';
   $tmp .= (isset($p[3]))?str_pad(intval($p[3]), 3, '0', STR_PAD_LEFT):'000';
   $current = $tmp;
   $p = explode('.',$new);
   $tmp = '';
   $tmp .= str_pad(intval($p[0]), 3, '0', STR_PAD_LEFT);
   $tmp .= (isset($p[1]))?str_pad(intval($p[1]), 3, '0', STR_PAD_LEFT):'000';
   $tmp .= (isset($p[2]))?str_pad(intval($p[2]), 3, '0', STR_PAD_LEFT):'000';
   $tmp .= (isset($p[3]))?str_pad(intval($p[3]), 3, '0', STR_PAD_LEFT):'000';
   $new = $tmp;
   if($new > $current) {
      return 1;
   } else {
      return -1;
   }
}
/*
* Get the port number of the ISPConfig controlpanel vhost
*/
function get_ispconfig_port_number() {
   global $conf;
   $ispconfig_vhost_file = $conf['apache']['vhost_conf_dir'].'/ispconfig.vhost';
   if(is_file($ispconfig_vhost_file)) {
      $tmp = file_get_contents($ispconfig_vhost_file);
      preg_match('/\<VirtualHost.*\:(\d{1,})\>/',$tmp,$matches);
      $port_number = intval($matches[1]);
      if($port_number > 0) {
         return $port_number;
      } else {
         return '8080';
      }
   }
}
/*
* Get the port number of the ISPConfig controlpanel vhost
*/
function is_ispconfig_ssl_enabled() {
   global $conf;
   $ispconfig_vhost_file = $conf['apache']['vhost_conf_dir'].'/ispconfig.vhost';
   if(is_file($ispconfig_vhost_file)) {
      $tmp = file_get_contents($ispconfig_vhost_file);
      if(stristr($tmp,'SSLCertificateFile')) {
         return true;
      } else {
         return false;
      }
   }
}
?>