From 7ff27228bdf12d4f5f6c303cf95d01aac9cb291e Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Fri, 26 Dec 2008 05:21:45 -0500 Subject: [PATCH] - Updated Ubuntu installation text. - Installer recognizes 5.0 and lenny/sid as suppoertde debian release --- install/lib/install.lib.php | 544 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 365 insertions(+), 179 deletions(-) diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index a9f120d..bf93cad 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -31,178 +31,255 @@ /* This function returns a string that describes the installed linux distribution. e.g. debian40 for Debian Linux 4.0 - */ + + +/* +Comments to completion forever ;-) +commandline arguments +$argv[1] + + +<? +echo "Total argument passed are : $argc \n"; +for( $i = 0 ; $i <= $argc -1 ;$i++) +{ +echo "Argument $i : $argv[$i] \n"; +} +?> + +*/ +error_reporting(E_ALL|E_STRICT); + + +$FILE = realpath('../install.php'); + +//** Get distribution identifier function get_distname() { - $distname = 'debian40'; + $distname = ''; - return $distname; + //** Debian or Ubuntu + if(file_exists('/etc/debian_version')) { + + if(trim(file_get_contents('/etc/debian_version')) == '4.0') { + $distname = 'Debian'; + $distver = '4.0'; + $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') { + $distname = 'Debian'; + $distver = 'Lenny/Sid'; + $distid = 'debian40'; + $distbaseid = 'debian'; + swriteln("Operating System: Debian Lenny/Sid or compatible\n"); + } + } + + //** OpenSuSE + 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"); + } + } + + + //** Redhat + elseif(file_exists("/etc/redhat-release")) { + + $content = file_get_contents('/etc/redhat-release'); + + if(stristr($content,'Fedora release 9 (Sulphur)')) { + $distname = 'Fedora'; + $distver = '9'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + swriteln("Operating System: Fedora 9 or compatible\n"); + } + + if(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"); + } + + + } else { + die('unrecognized linux distribution'); + } + + return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } - function sread() { - $fp=fopen("/dev/stdin", "r"); - $input=fgets($fp, 255); - fclose($fp); - + $input = fgets(STDIN); return rtrim($input); } -function swrite($text) { +function swrite($text = '') { echo $text; } -function swriteln($text) { +function swriteln($text = '') { echo $text."\n"; } -$FILE = realpath("../install.php"); - function ilog($msg){ - $logfile = "/var/log/ispconfig_install.log"; - exec("echo `date` \"- [ISPConfig] - \"".$msg." >> ".$logfile); + exec("echo `date` \"- [ISPConfig] - \"".$msg." >> ".ISPC_LOG_FILE); } function error($msg){ - ilog($msg); - die($msg."\n"); + ilog($msg); + die($msg."\n"); } function caselog($command, $file = '', $line = '', $success = '', $failure = ''){ - exec($command,$arr,$ret_val); - $arr = NULL; - if(!empty($file) && !empty($line)){ - $pre = $file.", Line ".$line.": "; - } else { - $pre = ""; - } - if($ret_val != 0){ - if($failure == "") $failure = "could not ".$command; - ilog($pre."WARNING: ".$failure); - } else { - if($success == "") $success = $command; - ilog($pre.$success); - } + exec($command,$arr,$ret_val); + $arr = NULL; + if(!empty($file) && !empty($line)){ + $pre = $file.', Line '.$line.': '; + } else { + $pre = ''; + } + if($ret_val != 0){ + if($failure == '') $failure = 'could not '.$command; + ilog($pre.'WARNING: '.$failure); + } else { + if($success == '') $success = $command; + ilog($pre.$success); + } } function phpcaselog($ret_val, $msg, $file = '', $line = ''){ - if(!empty($file) && !empty($line)){ - $pre = $file.", Line ".$line.": "; - } else { - $pre = ""; - } - if($ret_val == true){ - ilog($pre.$msg); - } else { - ilog($pre."WARNING: could not ".$msg); - } - return $ret_val; + if(!empty($file) && !empty($line)){ + $pre = $file.', Line '.$line.': '; + } else { + $pre = ''; + } + if($ret_val == true){ + ilog($pre.$msg); + } else { + ilog($pre.'WARNING: could not '.$msg); + } + return $ret_val; } function mkdirs($strPath, $mode = '0755'){ - if(isset($strPath) && $strPath != ""){ - // Verzeichnisse rekursiv erzeugen - if(is_dir($strPath)) return true; - $pStrPath = dirname($strPath); - if(!mkdirs($pStrPath, $mode)) return false; - $old_umask = umask(0); - $ret_val = mkdir($strPath, octdec($mode)); - umask($old_umask); - return $ret_val; - } else { - return false; - } + if(isset($strPath) && $strPath != ''){ + //* Verzeichnisse rekursiv erzeugen + if(is_dir($strPath)){ + return true; + } + $pStrPath = dirname($strPath); + if(!mkdirs($pStrPath, $mode)){ + return false; + } + $old_umask = umask(0); + $ret_val = mkdir($strPath, octdec($mode)); + umask($old_umask); + return $ret_val; + } + return false; } function rf($file){ - clearstatcache(); - if(!$fp = fopen ($file, "rb")) ilog("WARNING: could not open file ".$file); - if(filesize($file) > 0){ - $content = fread($fp, filesize($file)); - } else { - $content = ""; - } - fclose($fp); - return $content; + clearstatcache(); + if(!$fp = fopen ($file, 'rb')){ + ilog('WARNING: could not open file '.$file); + } + return filesize($file) > 0 ? fread($fp, filesize($file)) : ''; } function wf($file, $content){ - mkdirs(dirname($file)); - if(!$fp = fopen ($file, "wb")) ilog("WARNING: could not open file ".$file); - fwrite($fp,$content); - fclose($fp); + mkdirs(dirname($file)); + if(!$fp = fopen ($file, 'wb')){ + ilog('WARNING: could not open file '.$file); + } + fwrite($fp, $content); + fclose($fp); } function af($file, $content){ - mkdirs(dirname($file)); - if(!$fp = fopen ($file, "ab")) ilog("WARNING: could not open file ".$file); - fwrite($fp,$content); - fclose($fp); + mkdirs(dirname($file)); + if(!$fp = fopen ($file, 'ab')){ + ilog('WARNING: could not open file '.$file); + } + fwrite($fp,$content); + fclose($fp); } function aftsl($file, $content){ - if(!$fp = fopen ($file, "ab")) ilog("WARNING: could not open file ".$file); - fwrite($fp,$content); - fclose($fp); + if(!$fp = fopen ($file, 'ab')){ + ilog('WARNING: could not open file '.$file); + } + fwrite($fp,$content); + fclose($fp); } function unix_nl($input){ - $output = str_replace("\r\n", "\n", $input); - $output = str_replace("\r", "\n", $output); - return $output; + $output = str_replace("\r\n", "\n", $input); + $output = str_replace("\r", "\n", $output); + return $output; } function remove_blank_lines($input, $file = 1){ - //Leerzeilen l�schen - if($file){ - $content = unix_nl(rf($input)); - } else { - $content = $input; - } - $lines = explode("\n", $content); - if(!empty($lines)){ - foreach($lines as $line){ - if(trim($line) != "") $new_lines[] = $line; - } - } - if(is_array($new_lines)){ - $content = implode("\n", $new_lines); - } else { - $content = ""; - } - if($file){ - wf($input, $content); - } else { - return $content; - } + //TODO ? Leerzeilen l�schen + if($file){ + $content = unix_nl(rf($input)); // WTF -pedro ! + }else{ + $content = $input; + } + $lines = explode("\n", $content); + if(!empty($lines)){ + foreach($lines as $line){ + if(trim($line) != '') $new_lines[] = $line; + } + } + if(is_array($new_lines)){ + $content = implode("\n", $new_lines); + } else { + $content = ''; + } + if($file){ + wf($input, $content); + }else{ + return $content; + } } function no_comments($file, $comment = '#'){ - $content = unix_nl(rf($file)); - $lines = explode("\n", $content); - if(!empty($lines)){ - foreach($lines as $line){ - if(strstr($line, $comment)){ - $pos = strpos($line, $comment); - if($pos != 0){ - $new_lines[] = substr($line,0,$pos); - } else { - $new_lines[] = ""; - } - } else { - $new_lines[] = $line; - } - } - } - if(is_array($new_lines)){ - $content_without_comments = implode("\n", $new_lines); - $new_lines = NULL; - return $content_without_comments; - } else { - return ""; - } + $content = unix_nl(rf($file)); + $lines = explode("\n", $content); + if(!empty($lines)){ + foreach($lines as $line){ + if(strstr($line, $comment)){ + $pos = strpos($line, $comment); + if($pos != 0){ + $new_lines[] = substr($line,0,$pos); + }else{ + $new_lines[] = ''; + } + }else{ + $new_lines[] = $line; + } + } + } + if(is_array($new_lines)){ + $content_without_comments = implode("\n", $new_lines); + $new_lines = NULL; + return $content_without_comments; + } else { + return ''; + } } function find_includes($file){ @@ -214,17 +291,17 @@ $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(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, "*")){ + 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){ @@ -261,25 +338,28 @@ } function comment_out($file, $string){ - $inhalt = no_comments($file); - $gesamt_inhalt = rf($file); - $modules = explode(",",$string); - foreach($modules as $val){ - $val = trim($val); - if(strstr($inhalt, $val)){ - $gesamt_inhalt = str_replace($val, "##ISPConfig INSTALL## ".$val, $gesamt_inhalt); - } - } - wf($file, $gesamt_inhalt); + $inhalt = no_comments($file); + $gesamt_inhalt = rf($file); + $modules = explode(',', $string); + foreach($modules as $val){ + $val = trim($val); + if(strstr($inhalt, $val)){ + $gesamt_inhalt = str_replace($val, '##ISPConfig INSTALL## '.$val, $gesamt_inhalt); + } + } + wf($file, $gesamt_inhalt); } function is_word($string, $text, $params = ''){ - // params: i + //* params: i ?? + return preg_match("/\b$string\b/$params", $text); + /* if(preg_match("/\b$string\b/$params", $text)) { return true; } else { return false; } + */ } function grep($content, $string, $params = ''){ @@ -328,55 +408,161 @@ } function edit_xinetd_conf($service){ - $xinetd_conf = "/etc/xinetd.conf"; - $contents = unix_nl(rf($xinetd_conf)); - $lines = explode("\n", $contents); - $j = sizeof($lines); - for($i=0;$i<sizeof($lines);$i++){ - if(grep($lines[$i], $service, "w")){ - $fundstelle_anfang = $i; - $j = $i; - $parts = explode($lines[$i], $contents); - } - if($j < sizeof($lines)){ - if(strstr($lines[$i], "}")){ - $fundstelle_ende = $i; - $j = sizeof($lines); + $xinetd_conf = '/etc/xinetd.conf'; + $contents = unix_nl(rf($xinetd_conf)); + $lines = explode("\n", $contents); + $j = sizeof($lines); + for($i=0;$i<sizeof($lines);$i++){ + if(grep($lines[$i], $service, 'w')){ + $fundstelle_anfang = $i; + $j = $i; + $parts = explode($lines[$i], $contents); + } + if($j < sizeof($lines)){ + if(strstr($lines[$i], '}')){ + $fundstelle_ende = $i; + $j = sizeof($lines); + } + } + } + if(isset($fundstelle_anfang) && isset($fundstelle_ende)){ + for($i=$fundstelle_anfang;$i<=$fundstelle_ende;$i++){ + if(strstr($lines[$i], 'disable')){ + $disable = explode('=', $lines[$i]); + $disable[1] = ' yes'; + $lines[$i] = implode('=', $disable); + } + } + } + $fundstelle_anfang = NULL; + $fundstelle_ende = NULL; + $contents = implode("\n", $lines); + wf($xinetd_conf, $contents); +} + +//* Converts a ini string to array +function ini_to_array($ini) { + $config = ''; + $ini = str_replace("\r\n", "\n", $ini); + $lines = explode("\n", $ini); + foreach($lines as $line) { + $line = trim($line); + if($line != '') { + if(preg_match("/^\[([\w\d_]+)\]$/", $line, $matches)) { + $section = strtolower($matches[1]); + } elseif(preg_match("/^([\w\d_]+)=(.*)$/", $line, $matches) && $section != null) { + $item = trim($matches[1]); + $config[$section][$item] = trim($matches[2]); + } + } + } + return $config; +} + + +//* Converts a config array to a string +function array_to_ini($config_array = '') { + if($config_array == '') $config_array = $this->config; + $content = ''; + foreach($config_array as $section => $data) { + $content .= "[$section]\n"; + foreach($data as $item => $value) { + if($item != ''){ + $content .= "$item=$value\n"; + } + } + $content .= "\n"; + } + return $content; +} + +function is_user($user){ + global $mod; + $user_datei = '/etc/passwd'; + $users = no_comments($user_datei); + $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($f1 == $user) return true; } } } - if(isset($fundstelle_anfang) && isset($fundstelle_ende)){ - for($i=$fundstelle_anfang;$i<=$fundstelle_ende;$i++){ - if(strstr($lines[$i], "disable")){ - $disable = explode("=", $lines[$i]); - $disable[1] = " yes"; - $lines[$i] = implode("=", $disable); + return false; +} + +function is_group($group){ + global $mod; + $group_datei = '/etc/group'; + $groups = no_comments($group_datei); + $lines = explode("\n", $groups); + if(is_array($lines)){ + foreach($lines as $line){ + if(trim($line) != ""){ + list($f1, $f2, $f3, $f4) = explode(":", $line); + if($f1 == $group) return true; } } } - $fundstelle_anfang = NULL; - $fundstelle_ende = NULL; - $contents = implode("\n", $lines); - wf($xinetd_conf, $contents); + return false; +} + +function replaceLine($filename,$search_pattern,$new_line,$strict = 0) { + if($lines = @file($filename)) { + $out = ''; + $found = 0; + foreach($lines as $line) { + if($strict == 0) { + if(stristr($line,$search_pattern)) { + $out .= $new_line."\n"; + $found = 1; + } else { + $out .= $line; + } + } else { + if(trim($line) == $search_pattern) { + $out .= $new_line."\n"; + $found = 1; + } else { + $out .= $line; + } + } + } + if($found == 0) { + $out .= $new_line."\n"; + } + file_put_contents($filename,$out); + } +} + +function removeLine($filename,$search_pattern,$strict = 0) { + if($lines = @file($filename)) { + $out = ''; + foreach($lines as $line) { + if($strict == 0) { + if(!stristr($line,$search_pattern)) { + $out .= $line; + } + } else { + if(!trim($line) == $search_pattern) { + $out .= $line; + } + } + } + file_put_contents($filename,$out); + } +} + +function is_installed($appname) { + exec('which '.escapeshellcmd($appname),$out); + if(isset($out[0]) && stristr($out[0],$appname)) { + return true; + } else { + return false; + } } -/* -commandline arguments -$argv[1] - - -<? -echo "Total argument passed are : $argc \n"; -for( $i = 0 ; $i <= $argc -1 ;$i++) -{ -echo "Argument $i : $argv[$i] \n"; -} -?> - -*/ - - - -?> \ No newline at end of file +?> -- Gitblit v1.9.1