| | |
| | | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| | | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| | | */ |
| | | |
| | | /* |
| | | This function returns a string that describes the installed |
| | | Linux distribution. e.g. debian40 for Debian GNU/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); |
| | | |
| | | |
| | |
| | | //** 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! |
| | | // |
| | | // This function returns a string that describes the installed |
| | | // Linux distribution. e.g. debian40 for Debian GNU/Linux 4.0 |
| | | |
| | | function get_distname() { |
| | | |
| | | $distname = ''; |
| | |
| | | |
| | | //** Debian or Ubuntu |
| | | if(file_exists('/etc/debian_version')) { |
| | | if (strstr(trim(file_get_contents('/etc/issue')), 'Ubuntu')) { |
| | | if (strstr(trim(file_get_contents('/etc/issue')), 'LTS')) { |
| | | $lts=" LTS"; |
| | | } else { |
| | | $lts=""; |
| | | } |
| | | |
| | | // Check if this is Ubuntu and not Debian |
| | | if (strstr(trim(file_get_contents('/etc/issue')), 'Ubuntu') || (is_file('/etc/os-release') && stristr(file_get_contents('/etc/os-release'), 'Ubuntu'))) { |
| | | |
| | | $issue = file_get_contents('/etc/issue'); |
| | | |
| | | // Use content of /etc/issue file |
| | | if(strstr($issue,'Ubuntu')) { |
| | | if (strstr(trim($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); |
| | | $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); |
| | | // Use content of /etc/os-release file |
| | | } else { |
| | | $os_release = file_get_contents('/etc/os-release'); |
| | | if (strstr(trim($os_release), 'LTS')) { |
| | | $lts = " LTS"; |
| | | } else { |
| | | $lts = ""; |
| | | } |
| | | |
| | | $distname = 'Ubuntu'; |
| | | $distid = 'debian40'; |
| | | $distbaseid = 'debian'; |
| | | |
| | | preg_match("/.*VERSION=\"(.*)\".*/ui", $os_release, $ver); |
| | | $ver = str_replace("LTS", "", $ver[1]); |
| | | $ver = explode(" ", $ver, 2); |
| | | $ver = reset($ver); |
| | | $mainver = $ver; |
| | | } |
| | | switch ($mainver){ |
| | | case "16.04": |
| | | $relname = "(Xenial Xerus)"; |
| | | $distconfid = 'ubuntu1604'; |
| | | break; |
| | | case "15.10": |
| | | $relname = "(Wily Werewolf)"; |
| | | break; |
| | | case "15.04": |
| | | $relname = "(Vivid Vervet)"; |
| | | break; |
| | | case "14.10": |
| | | $relname = "(Utopic Unicorn)"; |
| | | break; |
| | | case "14.04": |
| | | $relname = "(Trusty Tahr)"; |
| | | break; |
| | | case "13.10": |
| | | $relname = "(Saucy Salamander)"; |
| | | break; |
| | | case "13.04": |
| | | $relname = "(Raring Ringtail)"; |
| | | break; |
| | | case "12.10": |
| | | $relname = "(Quantal Quetzal)"; |
| | | break; |
| | |
| | | $relname = "UNKNOWN"; |
| | | } |
| | | $distver = $ver.$lts." ".$relname; |
| | | swriteln("Operating System: ".$distver."\n"); |
| | | swriteln("Operating System: ".$distname.' '.$distver."\n"); |
| | | } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { |
| | | $distname = 'Debian'; |
| | | $distver = '4.0'; |
| | |
| | | $distid = 'debian60'; |
| | | $distbaseid = 'debian'; |
| | | swriteln("Operating System: Debian 7.0 (Wheezy/Sid) or compatible\n"); |
| | | } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '8') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '8') { |
| | | $distname = 'Debian'; |
| | | $distver = 'Jessie'; |
| | | $distid = 'debian60'; |
| | | $distbaseid = 'debian'; |
| | | swriteln("Operating System: Debian 8.0 (Jessie) or compatible\n"); |
| | | } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { |
| | | $distname = 'Debian'; |
| | | $distver = 'Testing'; |
| | | $distid = 'debian60'; |
| | | $distconfid = 'debiantesting'; |
| | | $distbaseid = 'debian'; |
| | | swriteln("Operating System: Debian Testing\n"); |
| | | } else { |
| | | $distname = 'Debian'; |
| | | $distver = 'Unknown'; |
| | |
| | | $distid = 'centos53'; |
| | | $distbaseid = 'fedora'; |
| | | swriteln("Operating System: CentOS 5 or compatible\n"); |
| | | } elseif(stristr($content, 'CentOS Linux release 6')) { |
| | | $distname = 'CentOS'; |
| | | $distver = 'Unknown'; |
| | | $distid = 'centos53'; |
| | | $distbaseid = 'fedora'; |
| | | swriteln("Operating System: CentOS 6 or compatible\n"); |
| | | } elseif(stristr($content, 'CentOS Linux release 7.2')) { |
| | | $distname = 'CentOS'; |
| | | $distver = 'Unknown'; |
| | | $distid = 'centos72'; |
| | | $distconfid = 'centos72'; |
| | | $distbaseid = 'fedora'; |
| | | swriteln("Operating System: CentOS 7.2\n"); |
| | | } elseif(stristr($content, 'CentOS Linux release 7')) { |
| | | $distname = 'CentOS'; |
| | | $distver = 'Unknown'; |
| | | $distid = 'centos70'; |
| | | $distbaseid = 'fedora'; |
| | | swriteln("Operating System: CentOS 7 or compatible\n"); |
| | | } else { |
| | | $distname = 'Redhat'; |
| | | $distver = 'Unknown'; |
| | |
| | | } else { |
| | | die('Unrecognized GNU/Linux distribution'); |
| | | } |
| | | |
| | | // Set $distconfid to distid, if no different id for the config is defined |
| | | if(!isset($distconfid)) $distconfid = $distid; |
| | | |
| | | return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'baseid' => $distbaseid); |
| | | return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'confid' => $distconfid, 'baseid' => $distbaseid); |
| | | } |
| | | |
| | | function sread() { |
| | |
| | | } |
| | | |
| | | function getapacheversion($get_minor = false) { |
| | | global $app; |
| | | |
| | | $cmd = ''; |
| | | if(is_installed('apache2ctl')) $cmd = 'apache2ctl -v'; |
| | | elseif(is_installed('apachectl')) $cmd = 'apachectl -v'; |
| | | else { |
| | | $app->log("Could not check apache version, apachectl not found.", LOGLEVEL_WARN); |
| | | return '2.2'; |
| | | } |
| | | |
| | | exec($cmd, $output, $return_var); |
| | | if($return_var != 0 || !$output[0]) { |
| | | $app->log("Could not check apache version, apachectl did not return any data.", LOGLEVEL_WARN); |
| | | return '2.2'; |
| | | } |
| | | |
| | | if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) { |
| | | return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : ''); |
| | | } else { |
| | | $app->log("Could not check apache version, did not find version string in apachectl output.", LOGLEVEL_WARN); |
| | | return '2.2'; |
| | | global $app; |
| | | |
| | | $cmd = ''; |
| | | if(is_installed('apache2ctl')) $cmd = 'apache2ctl -v'; |
| | | elseif(is_installed('apachectl')) $cmd = 'apachectl -v'; |
| | | else { |
| | | ilog("Could not check apache version, apachectl not found."); |
| | | return '2.2'; |
| | | } |
| | | |
| | | exec($cmd, $output, $return_var); |
| | | if($return_var != 0 || !$output[0]) { |
| | | ilog("Could not check apache version, apachectl did not return any data."); |
| | | return '2.2'; |
| | | } |
| | | |
| | | if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) { |
| | | return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : ''); |
| | | } else { |
| | | ilog("Could not check apache version, did not find version string in apachectl output."); |
| | | return '2.2'; |
| | | } |
| | | } |
| | | |
| | | function getapachemodules() { |
| | | global $app; |
| | | |
| | | $cmd = ''; |
| | | if(is_installed('apache2ctl')) $cmd = 'apache2ctl -t -D DUMP_MODULES'; |
| | | elseif(is_installed('apachectl')) $cmd = 'apachectl -t -D DUMP_MODULES'; |
| | | else { |
| | | ilog("Could not check apache modules, apachectl not found."); |
| | | return array(); |
| | | } |
| | | |
| | | exec($cmd . ' 2>/dev/null', $output, $return_var); |
| | | if($return_var != 0 || !$output[0]) { |
| | | ilog("Could not check apache modules, apachectl did not return any data."); |
| | | return array(); |
| | | } |
| | | |
| | | $modules = array(); |
| | | for($i = 0; $i < count($output); $i++) { |
| | | if(preg_match('/^\s*(\w+)\s+\((shared|static)\)\s*$/', $output[$i], $matches)) { |
| | | $modules[] = $matches[1]; |
| | | } |
| | | } |
| | | |
| | | |
| | | return $modules; |
| | | } |
| | | |
| | | ?> |