| | |
| | | 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 |
| | |
| | | { |
| | | echo "Argument $i : $argv[$i] \n"; |
| | | } |
| | | ?> |
| | | ?> |
| | | |
| | | */ |
| | | error_reporting(E_ALL|E_STRICT); |
| | |
| | | // 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(trim(file_get_contents('/etc/debian_version')) == '4.0') { |
| | | if (strstr(trim(file_get_contents('/etc/issue')), 'Ubuntu')) { |
| | | if (strstr(trim(file_get_contents('/etc/issue')), 'LTS')) { |
| | | $lts=" LTS"; |
| | | } else { |
| | | $lts=""; |
| | | } |
| | | |
| | | $issue=file_get_contents('/etc/issue'); |
| | | $distname = 'Ubuntu'; |
| | | $distid = 'debian40'; |
| | | $distbaseid = 'debian'; |
| | | $ver = explode(' ',$issue); |
| | | $ver = array_filter($ver); |
| | | $ver = next($ver); |
| | | $mainver = explode('.',$ver); |
| | | $mainver = array_filter($mainver); |
| | | $mainver = current($mainver).'.'.next($mainver); |
| | | switch ($mainver){ |
| | | case "12.10": |
| | | $relname = "(Quantal Quetzal)"; |
| | | break; |
| | | case "12.04": |
| | | $relname = "(Precise Pangolin)"; |
| | | break; |
| | | case "11.10": |
| | | $relname = "(Oneiric Ocelot)"; |
| | | break; |
| | | case "11.14": |
| | | $relname = "(Natty Narwhal)"; |
| | | break; |
| | | case "10.10": |
| | | $relname = "(Maverick Meerkat)"; |
| | | break; |
| | | case "10.04": |
| | | $relname = "(Lucid Lynx)"; |
| | | break; |
| | | case "9.10": |
| | | $relname = "(Karmic Koala)"; |
| | | break; |
| | | case "9.04": |
| | | $relname = "(Jaunty Jackpole)"; |
| | | break; |
| | | case "8.10": |
| | | $relname = "(Intrepid Ibex)"; |
| | | break; |
| | | case "8.04": |
| | | $relname = "(Hardy Heron)"; |
| | | break; |
| | | case "7.10": |
| | | $relname = "(Gutsy Gibbon)"; |
| | | break; |
| | | case "7.04": |
| | | $relname = "(Feisty Fawn)"; |
| | | break; |
| | | case "6.10": |
| | | $relname = "(Edgy Eft)"; |
| | | break; |
| | | case "6.06": |
| | | $relname = "(Dapper Drake)"; |
| | | break; |
| | | case "5.10": |
| | | $relname = "(Breezy Badger)"; |
| | | break; |
| | | case "5.04": |
| | | $relname = "(Hoary Hedgehog)"; |
| | | break; |
| | | case "4.10": |
| | | $relname = "(Warty Warthog)"; |
| | | break; |
| | | default: |
| | | $relname = "UNKNOWN"; |
| | | } |
| | | $distver = $ver.$lts." ".$relname; |
| | | swriteln("Operating System: ".$distver."\n"); |
| | | } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { |
| | | $distname = 'Debian'; |
| | | $distver = '4.0'; |
| | | $distid = 'debian40'; |
| | |
| | | $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 = 'debian60'; |
| | | $distbaseid = 'debian'; |
| | | swriteln("Operating System: Debian 7.0 (Wheezy/Sid) or compatible\n"); |
| | | } else { |
| | | $distname = 'Debian'; |
| | | $distver = 'Unknown'; |
| | | $distid = 'debian40'; |
| | |
| | | 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')) { |
| | |
| | | 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'; |
| | |
| | | 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 = '') { |
| | |
| | | } |
| | | |
| | | function ilog($msg){ |
| | | exec("echo `date` \"- [ISPConfig] - \"".$msg.' >> '.ISPC_LOG_FILE); |
| | | exec("echo `date` \"- [ISPConfig] - \"".$msg.' >> '.ISPC_LOG_FILE); |
| | | } |
| | | |
| | | function error($msg){ |
| | |
| | | } |
| | | |
| | | 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){ |
| | |
| | | $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]); |
| | |
| | | } |
| | | return $config; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //* Converts a config array to a string |
| | | function array_to_ini($config_array = '') { |
| | | if($config_array == '') $config_array = $this->config; |
| | |
| | | $content .= "[$section]\n"; |
| | | foreach($data as $item => $value) { |
| | | if($item != ''){ |
| | | $content .= "$item=$value\n"; |
| | | } |
| | | $content .= "$item=$value\n"; |
| | | } |
| | | } |
| | | $content .= "\n"; |
| | | } |
| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | file_put_contents($filename,$out); |
| | | } |
| | | } |
| | | |
| | | |
| | | function removeLine($filename,$search_pattern,$strict = 0) { |
| | | if($lines = @file($filename)) { |
| | | $out = ''; |
| | |
| | | if( $current == $new) { |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | $p = explode('.',$current); |
| | | $tmp = ''; |
| | | $tmp .= str_pad(intval($p[0]), 3, '0', STR_PAD_LEFT); |
| | |
| | | $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[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; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /* |
| | |
| | | $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]); |
| | | $port_number = @intval($matches[1]); |
| | | if($port_number > 0) { |
| | | return $port_number; |
| | | } else { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | Function to find the hash file for timezone detection |
| | | (c) 2012 Marius Cramer, pixcept KG, m.cramer@pixcept.de |
| | | */ |
| | | function find_hash_file($hash, $dir, $basedir = '') { |
| | | $res = opendir($dir); |
| | | if(!$res) return false; |
| | | |
| | | if(substr($basedir, -1) === '/') $basedir = substr($basedir, 0, strlen($basedir) - 1); |
| | | if(substr($dir, -1) === '/') $dir = substr($dir, 0, strlen($dir) - 1); |
| | | if($basedir === '') $basedir = $dir; |
| | | |
| | | while($cur = readdir($res)) { |
| | | if($cur == '.' || $cur == '..') continue; |
| | | $entry = $dir.'/'.$cur; |
| | | if(is_dir($entry)) { |
| | | $result = find_hash_file($hash, $entry, $basedir); |
| | | if($result !== false) return $result; |
| | | } elseif(md5_file($entry) === $hash) { |
| | | $entry = substr($entry, strlen($basedir) + 1); |
| | | if(substr($entry, 0, 7) === '/posix/') $entry = substr($entry, 7); |
| | | return $entry; |
| | | } |
| | | } |
| | | closedir($res); |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | Function to get the timezone of the Linux system |
| | | (c) 2012 Marius Cramer, pixcept KG, m.cramer@pixcept.de |
| | | */ |
| | | function get_system_timezone() { |
| | | $timezone = false; |
| | | if(file_exists('/etc/timezone') && is_readable('/etc/timezone')) { |
| | | $timezone = trim(file_get_contents('/etc/timezone')); |
| | | if(file_exists('/usr/share/zoneinfo/' . $timezone) == false) $timezone = false; |
| | | } |
| | | |
| | | if(!$timezone && is_link('/etc/localtime')) { |
| | | $timezone = readlink('/etc/localtime'); |
| | | $timezone = str_replace('/usr/share/zoneinfo/', '', $timezone); |
| | | if(substr($timezone, 0, 6) === 'posix/') $timezone = substr($timezone, 6); |
| | | } elseif(!$timezone) { |
| | | $hash = md5_file('/etc/localtime'); |
| | | $timezone = find_hash_file($hash, '/usr/share/zoneinfo'); |
| | | } |
| | | |
| | | if(!$timezone) { |
| | | exec('date +%Z', $tzinfo); |
| | | $timezone = $tzinfo[0]; |
| | | } |
| | | |
| | | return $timezone; |
| | | } |
| | | |
| | | |
| | | ?> |