diff --git a/install/install.php b/install/install.php index 2d1e294c8035a4689d75111512ff704632aeaff0..1dd3bcf1a08beea5437a0a2e85b68ad4cd29e1c8 100644 --- a/install/install.php +++ b/install/install.php @@ -106,7 +106,7 @@ if(is_installed('amavisd-new') && !is_installed('patch')) die('The patch command $dist = get_distname(); if($dist['id'] == '') die('Linux distribution or version not recognized.'); -if(!is_supported_dist($dist)) die('This distribution is not supported.'); +if(!$dist['supported']) die('This distribution is not supported.'); //** Include the autoinstaller configuration (for non-interactive setups) error_reporting(E_ALL ^ E_NOTICE); diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index df34baf6f5c35a23bcde61a01fa8fbec7987a057..2c91114584fb54efd85d182020a3314c86471f76 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -34,44 +34,6 @@ $FILE = realpath('../install.php'); require_once realpath(dirname(__FILE__)) . '/classes/libbashcolor.inc.php'; -function is_supported_dist($dist) { - $name = $dist['name']; - $version = $dist['version']; - - $min_version = false; - if($name === 'Ubuntu') { - $tmp = explode(" ", $version); - $version = reset($tmp); // Dist name is appended on get_distname - $min_version = '16.04'; - $add_versions = array('Testing', 'Unknown'); - } elseif($name === 'Debian') { - $min_version = '9'; - $add_versions = array('Testing', 'Unknown', 'Stretch', 'Buster'); - } elseif($name === 'Devuan') { - $min_version = '1.0'; - $add_versions = array('Jessie', 'Ceres'); - } elseif($name === 'openSUSE') { - $min_version = '11.2'; - $add_versions = false; - } elseif($name === 'Fedora') { - $min_version = '11'; - $add_versions = array('Unknown'); - } elseif($name === 'CentOS') { - $min_version = '7.0'; - $add_versions = array('Unknown'); - } elseif($name === 'Gentoo') { - $min_version = '1.0'; - } - - if($version && $min_version && preg_match('/^[0-9]+/', $version)) { - if(version_compare($version, $min_version, '>=')) return true; - } elseif($version && !preg_match('/^[0-9]+/', $version) && !empty($add_versions)) { - if(in_array($version, $add_versions, true)) return true; - } - - return false; -} - //** Get distribution identifier //** IMPORTANT! // This is the same code as in server/lib/classes/monitor_tools.inc.php @@ -86,6 +48,7 @@ function get_distname() { $distver = ''; $distid = ''; $distbaseid = ''; + $distsupported = false; //** Debian or Ubuntu if(file_exists('/etc/debian_version')) { @@ -138,22 +101,27 @@ function get_distname() { case "18.04": $relname = "(Bionic Beaver)"; $distconfid = 'ubuntu1804'; + $distsupported = true; break; case "17.10": $relname = "(Artful Aardvark)"; $distconfid = 'ubuntu1710'; + $distsupported = true; break; case "17.04": $relname = "(Zesty Zapus)"; $distconfid = 'ubuntu1604'; + $distsupported = true; break; case "16.10": $relname = "(Yakkety Yak)"; $distconfid = 'ubuntu1604'; + $distsupported = true; break; case "16.04": $relname = "(Xenial Xerus)"; $distconfid = 'ubuntu1604'; + $distsupported = true; break; case "15.10": $relname = "(Wily Werewolf)"; @@ -266,6 +234,7 @@ function get_distname() { $distconfid = 'debian90'; $distid = 'debian60'; $distbaseid = 'debian'; + $distsupported = true; swriteln("Operating System: Debian 9.0 (Stretch) or compatible\n"); } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { $distname = 'Debian'; @@ -273,6 +242,7 @@ function get_distname() { $distid = 'debian60'; $distconfid = 'debiantesting'; $distbaseid = 'debian'; + $distsupported = true; swriteln("Operating System: Debian Testing\n"); } else { $distname = 'Debian'; @@ -280,6 +250,7 @@ function get_distname() { $distid = 'debian60'; $distconfid = 'debian90'; $distbaseid = 'debian'; + $distsupported = true; swriteln("Operating System: Debian or compatible, unknown version.\n"); } } @@ -297,6 +268,7 @@ function get_distname() { $distver = 'Ceres'; $distid = 'debiantesting'; $distbaseid = 'debian'; + $distsupported = true; swriteln("Operating System: Devuan Unstable (Ceres) or compatible\n"); } } @@ -320,12 +292,14 @@ function get_distname() { $distver = '11.2'; $distid = 'opensuse112'; $distbaseid = 'opensuse'; + $distsupported = true; swriteln("Operating System: openSUSE 11.2 or compatible\n"); } else { $distname = 'openSUSE'; $distver = 'Unknown'; $distid = 'opensuse112'; $distbaseid = 'opensuse'; + $distsupported = true; swriteln("Operating System: openSUSE or compatible, unknown version.\n"); } } @@ -359,6 +333,7 @@ function get_distname() { $distver = '5.2'; $distid = 'centos52'; $distbaseid = 'fedora'; + $distsupported = true; swriteln("Operating System: CentOS 5.2 or compatible\n"); } elseif(stristr($content, 'CentOS release 5.3 (Final)')) { $distname = 'CentOS'; @@ -386,6 +361,7 @@ function get_distname() { $var=explode(".", $var[3]); $var=$var[0].".".$var[1]; $distver = $var; + $distsupported = true; if($var=='7.0' || $var=='7.1') { $distid = 'centos70'; } else { @@ -411,6 +387,7 @@ function get_distname() { $distver = $version[0][0].$version[0][1]; $distid = 'gentoo'; $distbaseid = 'gentoo'; + $distsupported = true; swriteln("Operating System: Gentoo $distver or compatible\n"); } else { @@ -420,7 +397,7 @@ function get_distname() { // 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, 'confid' => $distconfid, 'baseid' => $distbaseid); + return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'confid' => $distconfid, 'baseid' => $distbaseid, 'supported' => $distsupported); } function sread() { diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 81656057809d2939d5f1a15647f28863b469216e..6deeed69137079bef142eb07625347b881595720 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1264,70 +1264,70 @@ class installer_base { $tpl->setLoop('whitelist_ips', $whitelist_ips); wf('/etc/rspamd/local.d/users.conf', $tpl->grab()); - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_groups.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); + exec('cp tpl/rspamd_groups.conf.master /etc/rspamd/local.d/groups.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_antivirus.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); + exec('cp tpl/rspamd_antivirus.conf.master /etc/rspamd/local.d/antivirus.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_classifier-bayes.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); + exec('cp tpl/rspamd_classifier-bayes.conf.master /etc/rspamd/local.d/classifier-bayes.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_greylist.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); + exec('cp tpl/rspamd_greylist.conf.master /etc/rspamd/local.d/greylist.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_symbols_antivirus.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); + exec('cp tpl/rspamd_symbols_antivirus.conf.master /etc/rspamd/local.d/antivirus_group.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_override_rbl.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); + exec('cp tpl/rspamd_override_rbl.conf.master /etc/rspamd/override.d/rbl_group.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_override_surbl.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); + exec('cp tpl/rspamd_override_surbl.conf.master /etc/rspamd/override.d/surbl_group.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_mx_check.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); + exec('cp tpl/rspamd_mx_check.conf.master /etc/rspamd/local.d/mx_check.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_redis.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); + exec('cp tpl/rspamd_redis.conf.master /etc/rspamd/local.d/redis.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_milter_headers.conf.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); + exec('cp tpl/rspamd_milter_headers.conf.master /etc/rspamd/local.d/milter_headers.conf'); } - if(file_exists($conf['rootpath'].'/conf-custom/rspamd_options.inc.master')) { - exec('cp '.$conf['rootpath'].'/conf-custom/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + if(file_exists($conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master')) { + exec('cp '.$conf['ispconfig_install_dir'].'/server/conf-custom/install/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); } else { - exec('cp '.$conf['rootpath'].'/conf/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); + exec('cp tpl/rspamd_options.inc.master /etc/rspamd/local.d/options.inc'); } exec('chmod a+r /etc/rspamd/local.d/* /etc/rspamd/override.d/*'); diff --git a/server/conf/rspamd_antivirus.conf.master b/install/tpl/rspamd_antivirus.conf.master similarity index 100% rename from server/conf/rspamd_antivirus.conf.master rename to install/tpl/rspamd_antivirus.conf.master diff --git a/server/conf/rspamd_classifier-bayes.conf.master b/install/tpl/rspamd_classifier-bayes.conf.master similarity index 100% rename from server/conf/rspamd_classifier-bayes.conf.master rename to install/tpl/rspamd_classifier-bayes.conf.master diff --git a/server/conf/rspamd_dkim_signing.conf.master b/install/tpl/rspamd_dkim_signing.conf.master similarity index 100% rename from server/conf/rspamd_dkim_signing.conf.master rename to install/tpl/rspamd_dkim_signing.conf.master diff --git a/server/conf/rspamd_greylist.conf.master b/install/tpl/rspamd_greylist.conf.master similarity index 100% rename from server/conf/rspamd_greylist.conf.master rename to install/tpl/rspamd_greylist.conf.master diff --git a/server/conf/rspamd_groups.conf.master b/install/tpl/rspamd_groups.conf.master similarity index 100% rename from server/conf/rspamd_groups.conf.master rename to install/tpl/rspamd_groups.conf.master diff --git a/server/conf/rspamd_milter_headers.conf.master b/install/tpl/rspamd_milter_headers.conf.master similarity index 100% rename from server/conf/rspamd_milter_headers.conf.master rename to install/tpl/rspamd_milter_headers.conf.master diff --git a/server/conf/rspamd_mx_check.conf.master b/install/tpl/rspamd_mx_check.conf.master similarity index 100% rename from server/conf/rspamd_mx_check.conf.master rename to install/tpl/rspamd_mx_check.conf.master diff --git a/server/conf/rspamd_options.inc.master b/install/tpl/rspamd_options.inc.master similarity index 100% rename from server/conf/rspamd_options.inc.master rename to install/tpl/rspamd_options.inc.master diff --git a/server/conf/rspamd_override_rbl.conf.master b/install/tpl/rspamd_override_rbl.conf.master similarity index 100% rename from server/conf/rspamd_override_rbl.conf.master rename to install/tpl/rspamd_override_rbl.conf.master diff --git a/server/conf/rspamd_override_surbl.conf.master b/install/tpl/rspamd_override_surbl.conf.master similarity index 100% rename from server/conf/rspamd_override_surbl.conf.master rename to install/tpl/rspamd_override_surbl.conf.master diff --git a/server/conf/rspamd_redis.conf.master b/install/tpl/rspamd_redis.conf.master similarity index 100% rename from server/conf/rspamd_redis.conf.master rename to install/tpl/rspamd_redis.conf.master diff --git a/server/conf/rspamd_symbols_antivirus.conf.master b/install/tpl/rspamd_symbols_antivirus.conf.master similarity index 100% rename from server/conf/rspamd_symbols_antivirus.conf.master rename to install/tpl/rspamd_symbols_antivirus.conf.master diff --git a/server/conf/rspamd_users.conf.master b/install/tpl/rspamd_users.conf.master similarity index 100% rename from server/conf/rspamd_users.conf.master rename to install/tpl/rspamd_users.conf.master diff --git a/server/conf/rspamd_users.inc.conf.master b/install/tpl/rspamd_users.inc.conf.master similarity index 100% rename from server/conf/rspamd_users.inc.conf.master rename to install/tpl/rspamd_users.inc.conf.master diff --git a/server/conf/rspamd_wblist.inc.conf.master b/install/tpl/rspamd_wblist.inc.conf.master similarity index 100% rename from server/conf/rspamd_wblist.inc.conf.master rename to install/tpl/rspamd_wblist.inc.conf.master diff --git a/install/tpl/rspamd_worker-controller.inc.master b/install/tpl/rspamd_worker-controller.inc.master new file mode 120000 index 0000000000000000000000000000000000000000..dae19323690f604babdb0682108b49f420476fb7 --- /dev/null +++ b/install/tpl/rspamd_worker-controller.inc.master @@ -0,0 +1 @@ +../../server/conf/rspamd_worker-controller.inc.master \ No newline at end of file diff --git a/install/update.php b/install/update.php index 6b271516e3aebfb3da2f9cbea114d126a6cd7f86..633db3b9c7d447b352a59a4953069e28a3fcdca7 100644 --- a/install/update.php +++ b/install/update.php @@ -109,7 +109,7 @@ $conf_old = $conf; unset($conf); if($dist['id'] == '') die('Linux distribution or version not recognized.'); -if(!is_supported_dist($dist)) die('This distribution is not supported.'); +if(!$dist['supported']) die('This distribution is not supported.'); //** Include the autoinstaller configuration (for non-interactive setups) error_reporting(E_ALL ^ E_NOTICE); diff --git a/server/conf/rspamd.local.lua.master b/server/conf/rspamd.local.lua.master deleted file mode 100644 index 8ef81da2645f0cc8ff1ea797edc49b198a9e724d..0000000000000000000000000000000000000000 --- a/server/conf/rspamd.local.lua.master +++ /dev/null @@ -1,3 +0,0 @@ -rspamd_config.R_DUMMY = function (task) - return true -end \ No newline at end of file diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 1921851e3dcabf6492c4d9997785096f8b393946..4a8f9285d4ccb18096ce80c92081c3c5533ecf26 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -37,314 +37,334 @@ class monitor_tools { // Please do not forget to remove the swriteln(); - lines here at this file function get_distname() { - $distname = ''; - $distver = ''; - $distid = ''; - $distbaseid = ''; - - //** Debian or Ubuntu - if(file_exists('/etc/debian_version')) { - - // 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"; + $distname = ''; + $distver = ''; + $distid = ''; + $distbaseid = ''; + $distsupported = false; + + //** Debian or Ubuntu + if(file_exists('/etc/debian_version')) { + + // 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=""; + } + + $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 { - $lts=""; - } + $os_release = file_get_contents('/etc/os-release'); + if (strstr(trim($os_release), 'LTS')) { + $lts = " LTS"; + } else { + $lts = ""; + } - $distname = 'Ubuntu'; + $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; + $mainver = explode('.', $ver); + $mainver = array_filter($mainver); + $mainver = current($mainver).'.'.next($mainver); + } + switch ($mainver){ + case "18.04": + $relname = "(Bionic Beaver)"; + $distconfid = 'ubuntu1804'; + $distsupported = true; + break; + case "17.10": + $relname = "(Artful Aardvark)"; + $distconfid = 'ubuntu1710'; + $distsupported = true; + break; + case "17.04": + $relname = "(Zesty Zapus)"; + $distconfid = 'ubuntu1604'; + $distsupported = true; + break; + case "16.10": + $relname = "(Yakkety Yak)"; + $distconfid = 'ubuntu1604'; + $distsupported = true; + break; + case "16.04": + $relname = "(Xenial Xerus)"; + $distconfid = 'ubuntu1604'; + $distsupported = true; + 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; + 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"; + $distconfid = 'ubuntu1604'; + } + $distver = $ver.$lts." ".$relname; + } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { + $distname = 'Debian'; + $distver = '4.0'; $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'; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '5.0')) { + $distname = 'Debian'; + $distver = 'Lenny'; $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; + } 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'; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '7.0') || substr(trim(file_get_contents('/etc/debian_version')),0,2) == '7.' || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { + $distname = 'Debian'; + $distver = 'Wheezy/Sid'; + $distid = 'debian60'; + $distbaseid = 'debian'; + } 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'; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '9') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '9') { + $distname = 'Debian'; + $distver = 'Stretch'; + $distconfid = 'debian90'; + $distid = 'debian60'; + $distbaseid = 'debian'; + $distsupported = true; + } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { + $distname = 'Debian'; + $distver = 'Testing'; + $distid = 'debian60'; + $distconfid = 'debiantesting'; + $distbaseid = 'debian'; + $distsupported = true; + } else { + $distname = 'Debian'; + $distver = 'Unknown'; + $distid = 'debian60'; + $distconfid = 'debian90'; + $distbaseid = 'debian'; + $distsupported = true; } - switch ($mainver){ - case "18.04": - $relname = "(Bionic Beaver)"; - $distconfid = 'ubuntu1804'; - break; - case "17.10": - $relname = "(Artful Aardvark)"; - $distconfid = 'ubuntu1710'; - break; - case "17.04": - $relname = "(Zesty Zapus)"; - $distconfid = 'ubuntu1604'; - break; - case "16.10": - $relname = "(Yakkety Yak)"; - $distconfid = 'ubuntu1604'; - break; - 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; - 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"; + } + + //** Devuan + elseif(file_exists('/etc/devuan_version')) { + if(false !== strpos(trim(file_get_contents('/etc/devuan_version')), 'jessie')) { + $distname = 'Devuan'; + $distver = 'Jessie'; + $distid = 'debian60'; + $distbaseid = 'debian'; + } elseif(false !== strpos(trim(file_get_contents('/etc/devuan_version')), 'ceres')) { + $distname = 'Devuan'; + $distver = 'Ceres'; + $distid = 'debiantesting'; + $distbaseid = 'debian'; + $distsupported = true; } - $distver = $ver.$lts." ".$relname; - } elseif(trim(file_get_contents('/etc/debian_version')) == '4.0') { - $distname = 'Debian'; - $distver = '4.0'; - $distid = 'debian40'; - $distbaseid = 'debian'; - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '5.0')) { - $distname = 'Debian'; - $distver = 'Lenny'; - $distid = 'debian40'; - $distbaseid = 'debian'; - } 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'; - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '7.0') || substr(trim(file_get_contents('/etc/debian_version')),0,2) == '7.' || trim(file_get_contents('/etc/debian_version')) == 'wheezy/sid') { - $distname = 'Debian'; - $distver = 'Wheezy/Sid'; - $distid = 'debian60'; - $distbaseid = 'debian'; - } 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'; - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '9') || substr(trim(file_get_contents('/etc/debian_version')),0,1) == '9') { - $distname = 'Debian'; - $distver = 'Stretch'; - $distconfid = 'debian90'; - $distid = 'debian60'; - $distbaseid = 'debian'; - } elseif(strstr(trim(file_get_contents('/etc/debian_version')), '/sid')) { - $distname = 'Debian'; - $distver = 'Testing'; - $distid = 'debian60'; - $distconfid = 'debiantesting'; - $distbaseid = 'debian'; - } else { - $distname = 'Debian'; - $distver = 'Unknown'; - $distid = 'debian40'; - $distbaseid = 'debian'; } - } - //** Devuan - elseif(file_exists('/etc/devuan_version')) { - if(false !== strpos(trim(file_get_contents('/etc/devuan_version')), 'jessie')) { - $distname = 'Devuan'; - $distver = 'Jessie'; - $distid = 'debian60'; - $distbaseid = 'debian'; - } elseif(false !== strpos(trim(file_get_contents('/etc/devuan_version')), 'ceres')) { - $distname = 'Devuan'; - $distver = 'Testing'; - $distid = 'debiantesting'; - $distbaseid = 'debian'; - } - } - - //** 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'; - } elseif(stristr(file_get_contents('/etc/SuSE-release'), '11.1')) { - $distname = 'openSUSE'; - $distver = '11.1'; - $distid = 'opensuse110'; - $distbaseid = 'opensuse'; - } elseif(stristr(file_get_contents('/etc/SuSE-release'), '11.2')) { - $distname = 'openSUSE'; - $distver = '11.2'; - $distid = 'opensuse112'; - $distbaseid = 'opensuse'; - } else { - $distname = 'openSUSE'; - $distver = 'Unknown'; - $distid = 'opensuse112'; - $distbaseid = 'opensuse'; + //** 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'; + } elseif(stristr(file_get_contents('/etc/SuSE-release'), '11.1')) { + $distname = 'openSUSE'; + $distver = '11.1'; + $distid = 'opensuse110'; + $distbaseid = 'opensuse'; + } elseif(stristr(file_get_contents('/etc/SuSE-release'), '11.2')) { + $distname = 'openSUSE'; + $distver = '11.2'; + $distid = 'opensuse112'; + $distbaseid = 'opensuse'; + $distsupported = true; + } else { + $distname = 'openSUSE'; + $distver = 'Unknown'; + $distid = 'opensuse112'; + $distbaseid = 'opensuse'; + $distsupported = true; + } } - } - //** 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'; - } elseif(stristr($content, 'Fedora release 10 (Cambridge)')) { - $distname = 'Fedora'; - $distver = '10'; - $distid = 'fedora9'; - $distbaseid = 'fedora'; - } elseif(stristr($content, 'Fedora release 10')) { - $distname = 'Fedora'; - $distver = '11'; - $distid = 'fedora9'; - $distbaseid = 'fedora'; - } elseif(stristr($content, 'CentOS release 5.2 (Final)')) { - $distname = 'CentOS'; - $distver = '5.2'; - $distid = 'centos52'; - $distbaseid = 'fedora'; - } elseif(stristr($content, 'CentOS release 5.3 (Final)')) { - $distname = 'CentOS'; - $distver = '5.3'; - $distid = 'centos53'; - $distbaseid = 'fedora'; - } elseif(stristr($content, 'CentOS release 5')) { - $distname = 'CentOS'; - $distver = '5'; - $distid = 'centos53'; - $distbaseid = 'fedora'; - } elseif(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) { - $distname = 'CentOS'; - $distver = '6'; - $distid = 'centos53'; - $distbaseid = 'fedora'; - } elseif(stristr($content, 'CentOS Linux release 7')) { - $distname = 'CentOS'; - $distver = 'Unknown'; - $distbaseid = 'fedora'; - $var=explode(" ", $content); - $var=explode(".", $var[3]); - $var=$var[0].".".$var[1]; - if($var=='7.0' || $var=='7.1') { - $distid = 'centos70'; + //** 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'; + } elseif(stristr($content, 'Fedora release 10 (Cambridge)')) { + $distname = 'Fedora'; + $distver = '10'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + } elseif(stristr($content, 'Fedora release 10')) { + $distname = 'Fedora'; + $distver = '11'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS release 5.2 (Final)')) { + $distname = 'CentOS'; + $distver = '5.2'; + $distid = 'centos52'; + $distbaseid = 'fedora'; + $distsupported = true; + } elseif(stristr($content, 'CentOS release 5.3 (Final)')) { + $distname = 'CentOS'; + $distver = '5.3'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS release 5')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distid = 'centos53'; + $distbaseid = 'fedora'; + } elseif(stristr($content, 'CentOS Linux release 7')) { + $distname = 'CentOS'; + $distver = 'Unknown'; + $distbaseid = 'fedora'; + $var=explode(" ", $content); + $var=explode(".", $var[3]); + $var=$var[0].".".$var[1]; + $distver = $var; + $distsupported = true; + if($var=='7.0' || $var=='7.1') { + $distid = 'centos70'; + } else { + $distid = 'centos72'; + } } else { - $distid = 'centos72'; + $distname = 'Redhat'; + $distver = 'Unknown'; + $distid = 'fedora9'; + $distbaseid = 'fedora'; } - } else { - $distname = 'Redhat'; - $distver = 'Unknown'; - $distid = 'fedora9'; - $distbaseid = 'fedora'; } - } - //** Gentoo - elseif(file_exists('/etc/gentoo-release')) { + //** Gentoo + elseif(file_exists('/etc/gentoo-release')) { - $content = file_get_contents('/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'; + preg_match_all('/([0-9]{1,2})/', $content, $version); + $distname = 'Gentoo'; + $distver = $version[0][0].$version[0][1]; + $distid = 'gentoo'; + $distbaseid = 'gentoo'; + $distsupported = true; + } else { + die('Unrecognized GNU/Linux distribution'); + } - } else { - die('Unrecognized GNU/Linux distribution'); - } - - // Set $distconfid to distid, if no different id for the config is defined - if(!isset($distconfid)) $distconfid = $distid; + // 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, 'confid' => $distconfid, 'baseid' => $distbaseid); + return array('name' => $distname, 'version' => $distver, 'id' => $distid, 'confid' => $distconfid, 'baseid' => $distbaseid, 'supported' => $distsupported); } // this function remains in the tools class, because it is used by cron AND rescue