From 2696e12bd643eaca85b9780b1c7d8ec1377df0fb Mon Sep 17 00:00:00 2001
From: latham <latham@ispconfig3>
Date: Fri, 04 Nov 2011 09:57:16 -0400
Subject: [PATCH] This will sort the modules by alpha before the dashboard is pushed to the front.  This patch keeps the menu tabs stable instead of different on each user. Logging in as an admin, reseller, and user would show the tabs in different order each time do to user creation.

---
 install/lib/install.lib.php |  261 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 183 insertions(+), 78 deletions(-)

diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php
index 4af0d54..318cda9 100644
--- a/install/lib/install.lib.php
+++ b/install/lib/install.lib.php
@@ -30,7 +30,7 @@
 
 /*
 	This function returns a string that describes the installed
-	linux distribution. e.g. debian40 for Debian Linux 4.0
+	Linux distribution. e.g. debian40 for Debian GNU/Linux 4.0
 */
 
 
@@ -56,9 +56,15 @@
 $FILE = realpath('../install.php');
 
 //** Get distribution identifier
+//** IMPORTANT!
+//   This is the same code as in server/lib/classes/monitor_tools.inc.php
+//   So if you change it here, you also have to change it in there!
 function get_distname() {
 	
 	$distname = '';
+	$distver = '';
+	$distid = '';
+	$distbaseid = '';
 	
 	//** Debian or Ubuntu
 	if(file_exists('/etc/debian_version')) {
@@ -69,30 +75,59 @@
 			$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");
 		}
 	}
 	
 	//** OpenSuSE
-	elseif(file_exists("/etc/SuSE-release")) {
+	elseif(file_exists('/etc/SuSE-release')) {
 		if(stristr(file_get_contents('/etc/SuSE-release'),'11.0')) {
 			$distname = 'openSUSE';
 			$distver = '11.0';
 			$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");
 		}
 	}
 	
 	
 	//** Redhat
-	elseif(file_exists("/etc/redhat-release")) {
+	elseif(file_exists('/etc/redhat-release')) {
 		
 		$content = file_get_contents('/etc/redhat-release');
 		
@@ -102,19 +137,59 @@
 			$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");
+		} elseif(stristr($content,'CentOS release 5')) {
+			$distname = 'CentOS';
+			$distver = 'Unknown';
+			$distid = 'centos53';
+			$distbaseid = 'fedora';
+			swriteln("Operating System: CentOS 5 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');
+		die('Unrecognized GNU/Linux distribution');
 	}
 	
 	return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid);
@@ -134,7 +209,7 @@
 }
 
 function ilog($msg){
-  	exec("echo `date` \"- [ISPConfig] - \"".$msg." >> ".ISPC_LOG_FILE);
+  	exec("echo `date` \"- [ISPConfig] - \"".$msg.' >> '.ISPC_LOG_FILE);
 }
 
 function error($msg){
@@ -193,10 +268,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){
@@ -280,61 +359,6 @@
 	} else {
 		return '';
 	}
-}
-
-function find_includes($file){
-  global $httpd_root;
-  clearstatcache();
-  if(is_file($file) && filesize($file) > 0){
-    $includes[] = $file;
-    $inhalt = unix_nl(no_comments($file));
-    $lines = explode("\n", $inhalt);
-    if(!empty($lines)){
-      foreach($lines as $line){
-        if(stristr($line, 'include ')){
-          $include_file = str_replace("\n", '', trim(shell_exec("echo \"$line\" | awk '{print \$2}'")));
-          if(substr($include_file,0,1) != '/'){
-            $include_file = $httpd_root.'/'.$include_file;
-          }
-          if(is_file($include_file)){
-            if($further_includes = find_includes($include_file)){
-              $includes = array_merge($includes, $further_includes);
-            }
-          } else {
-            if(strstr($include_file, '*')){
-              $more_files = explode("\n", shell_exec("ls -l $include_file | awk '{print \$9}'"));
-              if(!empty($more_files)){
-                foreach($more_files as $more_file){
-                  if(is_file($more_file)){
-                    if($further_includes = find_includes($more_file)){
-                      $includes = array_merge($includes, $further_includes);
-                    }
-                  }
-                }
-              }
-              unset($more_files);
-              $more_files = explode("\n", shell_exec("ls -l $include_file | awk '{print \$10}'"));
-              if(!empty($more_files)){
-                foreach($more_files as $more_file){
-                  if(is_file($more_file)){
-                    if($further_includes = find_includes($more_file)){
-                      $includes = array_merge($includes, $further_includes);
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-  if(is_array($includes)){
-    $includes = array_unique($includes);
-    return $includes;
-  } else {
-    return false;
-  }
 }
 
 function comment_out($file, $string){
@@ -483,8 +507,8 @@
   $lines = explode("\n", $users);
   if(is_array($lines)){
     foreach($lines as $line){
-      if(trim($line) != ""){
-        list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(":", $line);
+      if(trim($line) != ''){
+        list($f1, $f2, $f3, $f4, $f5, $f6, $f7) = explode(':', $line);
         if($f1 == $user) return true;
       }
     }
@@ -499,8 +523,8 @@
   $lines = explode("\n", $groups);
   if(is_array($lines)){
     foreach($lines as $line){
-      if(trim($line) != ""){
-        list($f1, $f2, $f3, $f4) = explode(":", $line);
+      if(trim($line) != ''){
+        list($f1, $f2, $f3, $f4) = explode(':', $line);
         if($f1 == $group) return true;
       }
     }
@@ -508,7 +532,7 @@
   return false;
 }
 
-function replaceLine($filename,$search_pattern,$new_line,$strict = 0) {
+function replaceLine($filename,$search_pattern,$new_line,$strict = 0,$append = 1) {
 	if($lines = @file($filename)) {
 		$out = '';
 		$found = 0;
@@ -533,7 +557,7 @@
 			//* add \n if the last line does not end with \n or \r
 			if(substr($out,-1) != "\n" && substr($out,-1) != "\r") $out .= "\n";
 			//* add the new line at the end of the file
-			$out .= $new_line."\n";
+			if($append == 1) $out .= $new_line."\n";
 		}
 		file_put_contents($filename,$out);
 	}
@@ -558,7 +582,7 @@
 }
 
 function is_installed($appname) {
-	exec('which '.escapeshellcmd($appname),$out);
+	exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out);
 	if(isset($out[0]) && stristr($out[0],$appname)) {
 		return true;
 	} else {
@@ -566,6 +590,87 @@
 	}
 }
 
+/*
+ * 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;
+	if($conf['nginx']['installed'] == true){
+		$ispconfig_vhost_file = $conf['nginx']['vhost_conf_dir'].'/ispconfig.vhost';
+		$regex = '/listen (\d+)/';
+	} else {
+		$ispconfig_vhost_file = $conf['apache']['vhost_conf_dir'].'/ispconfig.vhost';
+		$regex = '/\<VirtualHost.*\:(\d{1,})\>/';
+	}
+	
+	if(is_file($ispconfig_vhost_file)) {
+		$tmp = file_get_contents($ispconfig_vhost_file);
+		preg_match($regex,$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;
+		}
+	}
+}
+
 
 
 ?>

--
Gitblit v1.9.1