diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 63c4abfcda7885380628b4f0fc4c4a1b6e48b5bb..71ebe0b1a5acc0a135a8018248df7218abc85fa5 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -7,14 +7,14 @@ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of ISPConfig nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED @@ -47,7 +47,7 @@ for( $i = 0 ; $i <= $argc -1 ;$i++) { echo "Argument $i : $argv[$i] \n"; } -?> +?> */ error_reporting(E_ALL|E_STRICT); @@ -60,12 +60,12 @@ $FILE = realpath('../install.php'); // 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')) { if (strstr(trim(file_get_contents('/etc/issue')), 'Ubuntu')) { @@ -141,7 +141,7 @@ function get_distname() { $relname = "UNKNOWN"; } $distver = $ver.$lts." ".$relname; - swriteln("Operating System: ".$distver."\n"); + swriteln("Operating System: ".$distver."\n"); } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { $distname = 'Debian'; $distver = '4.0'; @@ -160,7 +160,13 @@ function get_distname() { $distid = 'debian60'; $distbaseid = 'debian'; swriteln("Operating System: Debian 6.0 (Squeeze/Sid) or compatible\n"); - } else { + } elseif(strstr(trim(file_get_contents('/etc/debian_version')),'6.0') || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { + $distname = 'Debian'; + $distver = 'Wheezy/Sid'; + $distid = 'debian70'; + $distbaseid = 'debian'; + swriteln("Operating System: Debian 6.0 (Squeeze/Sid) or compatible\n"); + } else { $distname = 'Debian'; $distver = 'Unknown'; $distid = 'debian40'; @@ -168,7 +174,7 @@ function get_distname() { swriteln("Operating System: Debian or compatible, unknown version.\n"); } } - + //** OpenSuSE elseif(file_exists('/etc/SuSE-release')) { if(stristr(file_get_contents('/etc/SuSE-release'),'11.0')) { @@ -197,13 +203,13 @@ function get_distname() { swriteln("Operating System: openSUSE or compatible, unknown version.\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'; @@ -248,29 +254,29 @@ function get_distname() { 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"); - + 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 GNU/Linux distribution'); } - + return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } function sread() { - $input = fgets(STDIN); - return rtrim($input); + $input = fgets(STDIN); + return rtrim($input); } function swrite($text = '') { @@ -282,7 +288,7 @@ function swriteln($text = '') { } function ilog($msg){ - exec("echo `date` \"- [ISPConfig] - \"".$msg.' >> '.ISPC_LOG_FILE); + exec("echo `date` \"- [ISPConfig] - \"".$msg.' >> '.ISPC_LOG_FILE); } function error($msg){ @@ -448,60 +454,60 @@ function comment_out($file, $string){ } function is_word($string, $text, $params = ''){ - //* params: i ?? - return preg_match("/\b$string\b/$params", $text); - /* - if(preg_match("/\b$string\b/$params", $text)) { - return true; - } else { - return false; - } - */ + //* 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 = ''){ - // params: i, v, w - $content = unix_nl($content); - $lines = explode("\n", $content); - foreach($lines as $line){ - if(!strstr($params, 'w')){ - if(strstr($params, 'i')){ - if(strstr($params, 'v')){ - if(!stristr($line, $string)) $find[] = $line; - } else { - if(stristr($line, $string)) $find[] = $line; - } - } else { - if(strstr($params, 'v')){ - if(!strstr($line, $string)) $find[] = $line; - } else { - if(strstr($line, $string)) $find[] = $line; - } - } - } else { - if(strstr($params, 'i')){ - if(strstr($params, 'v')){ - if(!is_word($string, $line, 'i')) $find[] = $line; - } else { - if(is_word($string, $line, 'i')) $find[] = $line; - } - } else { - if(strstr($params, 'v')){ - if(!is_word($string, $line)) $find[] = $line; - } else { - if(is_word($string, $line)) $find[] = $line; - } - } - } - } - if(is_array($find)){ - $ret_val = implode("\n", $find); - if(substr($ret_val,-1) != "\n") $ret_val .= "\n"; - $find = NULL; - return $ret_val; - } else { - return false; - } + // params: i, v, w + $content = unix_nl($content); + $lines = explode("\n", $content); + foreach($lines as $line){ + if(!strstr($params, 'w')){ + if(strstr($params, 'i')){ + if(strstr($params, 'v')){ + if(!stristr($line, $string)) $find[] = $line; + } else { + if(stristr($line, $string)) $find[] = $line; + } + } else { + if(strstr($params, 'v')){ + if(!strstr($line, $string)) $find[] = $line; + } else { + if(strstr($line, $string)) $find[] = $line; + } + } + } else { + if(strstr($params, 'i')){ + if(strstr($params, 'v')){ + if(!is_word($string, $line, 'i')) $find[] = $line; + } else { + if(is_word($string, $line, 'i')) $find[] = $line; + } + } else { + if(strstr($params, 'v')){ + if(!is_word($string, $line)) $find[] = $line; + } else { + if(is_word($string, $line)) $find[] = $line; + } + } + } + } + if(is_array($find)){ + $ret_val = implode("\n", $find); + if(substr($ret_val,-1) != "\n") $ret_val .= "\n"; + $find = NULL; + return $ret_val; + } else { + return false; + } } function edit_xinetd_conf($service){ @@ -543,7 +549,7 @@ function ini_to_array($ini) { $ini = str_replace("\r\n", "\n", $ini); $lines = explode("\n", $ini); foreach($lines as $line) { - $line = trim($line); + $line = trim($line); if($line != '') { if(preg_match("/^\[([\w\d_]+)\]$/", $line, $matches)) { $section = strtolower($matches[1]); @@ -555,8 +561,8 @@ function ini_to_array($ini) { } return $config; } - - + + //* Converts a config array to a string function array_to_ini($config_array = '') { if($config_array == '') $config_array = $this->config; @@ -565,8 +571,8 @@ function array_to_ini($config_array = '') { $content .= "[$section]\n"; foreach($data as $item => $value) { if($item != ''){ - $content .= "$item=$value\n"; - } + $content .= "$item=$value\n"; + } } $content .= "\n"; } @@ -574,35 +580,35 @@ function array_to_ini($config_array = '') { } 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; - } - } - } - return false; + 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; + } + } + } + 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; - } - } - } - return false; + 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; + } + } + } + return false; } function replaceLine($filename,$search_pattern,$new_line,$strict = 0,$append = 1) { @@ -635,7 +641,7 @@ function replaceLine($filename,$search_pattern,$new_line,$strict = 0,$append = 1 file_put_contents($filename,$out); } } - + function removeLine($filename,$search_pattern,$strict = 0) { if($lines = @file($filename)) { $out = ''; @@ -675,7 +681,7 @@ 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); @@ -683,7 +689,7 @@ function compare_ispconfig_version($current,$new) { $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); @@ -691,13 +697,13 @@ function compare_ispconfig_version($current,$new) { $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; } - + } /* @@ -713,7 +719,7 @@ function get_ispconfig_port_number() { $ispconfig_vhost_file = $conf['apache']['vhost_conf_dir'].'/ispconfig.vhost'; $regex = '/\/'; } - + if(is_file($ispconfig_vhost_file)) { $tmp = file_get_contents($ispconfig_vhost_file); preg_match($regex,$tmp,$matches); diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index bd6f6cbd06c96c0567ed3362a61c8c348aaaed7f..b5ca043d096bdf275ee347b03757db7d5a1336e7 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -1,31 +1,31 @@ $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); } - //** Email Quota - public function monitorEmailQuota() { - global $conf, $app; + //** Email Quota + public function monitorEmailQuota() { + global $conf, $app; //* Initialize data array $data = array(); @@ -237,7 +242,7 @@ class monitor_tools { //* The state of the email_quota. $state = 'ok'; - + $mailboxes = $app->db->queryAllRecords("SELECT email,maildir FROM mail_user WHERE server_id = $server_id"); if(is_array($mailboxes)) { foreach($mailboxes as $mb) { @@ -257,31 +262,31 @@ class monitor_tools { } } } - + unset($mailboxes); - //* Dovecot quota check Courier in progress lathama@gmail.com + //* Dovecot quota check Courier in progress lathama@gmail.com /* - if($dir = opendir("/var/vmail")){ - while (($quotafiles = readdir($dir)) !== false){ - if(preg_match('/.\_quota$/', $quotafiles)){ - $quotafile = (file("/var/vmail/" . $quotafiles)); - $emailaddress = preg_replace('/_quota/',"", $quotafiles); - $emailaddress = preg_replace('/_/',"@", $emailaddress); - $data[$emailaddress]['used'] = trim($quotafile['1']); - } - } - closedir($dir); - } + if($dir = opendir("/var/vmail")){ + while (($quotafiles = readdir($dir)) !== false){ + if(preg_match('/.\_quota$/', $quotafiles)){ + $quotafile = (file("/var/vmail/" . $quotafiles)); + $emailaddress = preg_replace('/_quota/',"", $quotafiles); + $emailaddress = preg_replace('/_/',"@", $emailaddress); + $data[$emailaddress]['used'] = trim($quotafile['1']); + } + } + closedir($dir); + } */ $res['server_id'] = $server_id; $res['type'] = $type; $res['data'] = $data; $res['state'] = $state; - return $res; - } + return $res; + } - //** Filesystem Quota + //** Filesystem Quota public function monitorHDQuota() { global $conf; @@ -369,7 +374,7 @@ class monitor_tools { $type = 'server_load'; /* - Fetch the data into a array + Fetch the data into a array */ $procUptime = shell_exec("cat /proc/uptime | cut -f1 -d' '"); $data['up_days'] = floor($procUptime / 86400); @@ -420,7 +425,7 @@ class monitor_tools { $type = 'os_info'; /* - Fetch the data into a array + Fetch the data into a array */ $dist = $this->get_distname(); @@ -450,7 +455,7 @@ class monitor_tools { $type = 'ispc_info'; /* - Fetch the data into a array + Fetch the data into a array */ $data['name'] = ISPC_APP_TITLE; $data['version'] = ISPC_APP_VERSION; @@ -506,7 +511,7 @@ class monitor_tools { * calculate the state */ $usePercent = floatval($data[$i]['percent']); - + //* get the free memsize if(substr($data[$i]['available'],-1) == 'G') { $freesize = floatval($data[$i]['available'])*1024; @@ -559,7 +564,7 @@ class monitor_tools { $type = 'mem_usage'; /* - Fetch the data into a array + Fetch the data into a array */ $miData = shell_exec('cat /proc/meminfo'); @@ -601,7 +606,7 @@ class monitor_tools { $type = 'cpu_info'; /* - Fetch the data into a array + Fetch the data into a array */ if (file_exists('/proc/cpuinfo')) { $cpuData = shell_exec('cat /proc/cpuinfo'); @@ -771,7 +776,7 @@ class monitor_tools { $type = 'openvz_veinfo'; /* - Fetch the data into a array + Fetch the data into a array */ $app->load(openvz_tools); $openVzTools = new openvz_tools(); @@ -801,7 +806,7 @@ class monitor_tools { $type = 'openvz_beancounter'; /* - Fetch the data into a array + Fetch the data into a array */ $app->load(openvz_tools); $openVzTools = new openvz_tools(); @@ -1134,7 +1139,7 @@ class monitor_tools { } } } - + /* * 3ware Controller */ @@ -1188,7 +1193,7 @@ class monitor_tools { } } } - + /* * Return the Result @@ -1291,54 +1296,54 @@ class monitor_tools { } public function monitorIPTables() { - global $conf; - - /* the id of the server as int */ - $server_id = intval($conf['server_id']); - - /** The type of the data */ - $type = 'iptables_rules'; - - /* This monitoring is only available if fail2ban is installed */ - system('which iptables', $retval); // Debian, Ubuntu, Fedora - if ($retval === 0) { - /* Get the data of the log */ - $data['output'] = '

iptables -S (ipv4)

'.shell_exec('iptables -S'); - - /* - * At this moment, there is no state (maybe later) - */ - $state = 'no_state'; - } else { - $state = 'no_state'; - $data = ''; - } - - - /* This monitoring is only available if fail2ban is installed */ - system('which ip6tables', $retval); // Debian, Ubuntu, Fedora - if ($retval === 0) { - /* Get the data of the log */ - $data['output'] .= '

ip6tables -S (ipv6)

'.shell_exec('ip6tables -S'); - - /* - * At this moment, there is no state (maybe later) - */ - $state = 'no_state'; - } else { - $state = 'no_state'; - $data = ''; - } - - /* - * Return the Result - */ - $res['server_id'] = $server_id; - $res['type'] = $type; - $res['data'] = $data; - $res['state'] = $state; - return $res; - } + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf['server_id']); + + /** The type of the data */ + $type = 'iptables_rules'; + + /* This monitoring is only available if fail2ban is installed */ + system('which iptables', $retval); // Debian, Ubuntu, Fedora + if ($retval === 0) { + /* Get the data of the log */ + $data['output'] = '

iptables -S (ipv4)

'.shell_exec('iptables -S'); + + /* + * At this moment, there is no state (maybe later) + */ + $state = 'no_state'; + } else { + $state = 'no_state'; + $data = ''; + } + + + /* This monitoring is only available if fail2ban is installed */ + system('which ip6tables', $retval); // Debian, Ubuntu, Fedora + if ($retval === 0) { + /* Get the data of the log */ + $data['output'] .= '

ip6tables -S (ipv6)

'.shell_exec('ip6tables -S'); + + /* + * At this moment, there is no state (maybe later) + */ + $state = 'no_state'; + } else { + $state = 'no_state'; + $data = ''; + } + + /* + * Return the Result + */ + $res['server_id'] = $server_id; + $res['type'] = $type; + $res['data'] = $data; + $res['state'] = $state; + return $res; + } public function monitorSysLog() { global $app;