From 1f48ca47116137f13e127ea660fcfe01a2276af5 Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Sun, 31 May 2020 20:10:07 +0200 Subject: [PATCH 1/5] autodeterct distribution in CLI --- lib/Froxlor/Cli/Action/ConfigServicesAction.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/Froxlor/Cli/Action/ConfigServicesAction.php b/lib/Froxlor/Cli/Action/ConfigServicesAction.php index 73192a91..f4a941f1 100644 --- a/lib/Froxlor/Cli/Action/ConfigServicesAction.php +++ b/lib/Froxlor/Cli/Action/ConfigServicesAction.php @@ -83,6 +83,12 @@ class ConfigServicesAction extends \Froxlor\Cli\Action $distros = glob($config_dir . '*.xml'); // tmp array $distributions_select_data = array(); + + //read os-release + $os_dist = parse_ini_file('/etc/os-release', false); + $os_version = explode('.',$os_dist['VERSION_ID'])[0]; + $os_default = ""; + // read in all the distros foreach ($distros as $_distribution) { // get configparser object @@ -91,6 +97,11 @@ class ConfigServicesAction extends \Froxlor\Cli\Action $dist_display = $this->getCompleteDistroName($dist); // store in tmp array $distributions_select_data[$dist_display] = str_replace(".xml", "", strtolower(basename($_distribution))); + + $ver = explode('.', $dist->distributionVersion)[0]; + if (strtolower($os_dist['ID']) == strtolower($dist->distributionName) && $os_version == $ver) { + $os_default = str_replace(".xml", "", strtolower(basename($_distribution))); + } } // sort by distribution name @@ -108,7 +119,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action echo PHP_EOL; while (! in_array($_daemons_config['distro'], $distributions_select_data)) { - $_daemons_config['distro'] = ConfigServicesCmd::getInput("choose distribution", "buster"); + $_daemons_config['distro'] = ConfigServicesCmd::getInput("choose distribution", $os_default); } // go through all services and let user check whether to include it or not From e7cfceb65dc6bce4d568f64d3245d1ff04d4b7ef Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Sun, 31 May 2020 20:18:37 +0200 Subject: [PATCH 2/5] add comment --- lib/Froxlor/Cli/Action/ConfigServicesAction.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/Froxlor/Cli/Action/ConfigServicesAction.php b/lib/Froxlor/Cli/Action/ConfigServicesAction.php index f4a941f1..cbe9e89a 100644 --- a/lib/Froxlor/Cli/Action/ConfigServicesAction.php +++ b/lib/Froxlor/Cli/Action/ConfigServicesAction.php @@ -98,6 +98,7 @@ class ConfigServicesAction extends \Froxlor\Cli\Action // store in tmp array $distributions_select_data[$dist_display] = str_replace(".xml", "", strtolower(basename($_distribution))); + //guess if this is the current distro. $ver = explode('.', $dist->distributionVersion)[0]; if (strtolower($os_dist['ID']) == strtolower($dist->distributionName) && $os_version == $ver) { $os_default = str_replace(".xml", "", strtolower(basename($_distribution))); From da1d94149a1f10676eaa7e74e6dad99d9b97f069 Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Sun, 31 May 2020 20:34:47 +0200 Subject: [PATCH 3/5] saet defaults and do some checks --- lib/Froxlor/Cli/Action/ConfigServicesAction.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/Froxlor/Cli/Action/ConfigServicesAction.php b/lib/Froxlor/Cli/Action/ConfigServicesAction.php index cbe9e89a..b9168f74 100644 --- a/lib/Froxlor/Cli/Action/ConfigServicesAction.php +++ b/lib/Froxlor/Cli/Action/ConfigServicesAction.php @@ -84,10 +84,17 @@ class ConfigServicesAction extends \Froxlor\Cli\Action // tmp array $distributions_select_data = array(); + //set default os. + $os_dist = array('ID' => 'buster'); + $os_version = array('0' => '10'); + $os_default = $os_dist['ID']; + //read os-release - $os_dist = parse_ini_file('/etc/os-release', false); - $os_version = explode('.',$os_dist['VERSION_ID'])[0]; - $os_default = ""; + if(file_exists('/etc/os-release')) { + $os_dist = parse_ini_file('/etc/os-release', false); + if(is_array($os_dist) && array_key_exists('ID', $os_dist) && array_key_exists('VERSION_ID', $os_dist)) + $os_version = explode('.',$os_dist['VERSION_ID'])[0]; + } // read in all the distros foreach ($distros as $_distribution) { From 1a6082ca915effeb0f1a931010661d573af09669 Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Sun, 31 May 2020 20:36:52 +0200 Subject: [PATCH 4/5] complete if statement --- lib/Froxlor/Cli/Action/ConfigServicesAction.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Froxlor/Cli/Action/ConfigServicesAction.php b/lib/Froxlor/Cli/Action/ConfigServicesAction.php index b9168f74..464e54df 100644 --- a/lib/Froxlor/Cli/Action/ConfigServicesAction.php +++ b/lib/Froxlor/Cli/Action/ConfigServicesAction.php @@ -92,8 +92,9 @@ class ConfigServicesAction extends \Froxlor\Cli\Action //read os-release if(file_exists('/etc/os-release')) { $os_dist = parse_ini_file('/etc/os-release', false); - if(is_array($os_dist) && array_key_exists('ID', $os_dist) && array_key_exists('VERSION_ID', $os_dist)) - $os_version = explode('.',$os_dist['VERSION_ID'])[0]; + if(is_array($os_dist) && array_key_exists('ID', $os_dist) && array_key_exists('VERSION_ID', $os_dist)) { + $os_version = explode('.',$os_dist['VERSION_ID'])[0]; + } } // read in all the distros From ed4dbba27809f9272c7dcbc235730db96ac9fc7a Mon Sep 17 00:00:00 2001 From: Ante de Baas Date: Sun, 31 May 2020 20:46:27 +0200 Subject: [PATCH 5/5] also perform checks in Install class --- install/lib/class.FroxlorInstall.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/install/lib/class.FroxlorInstall.php b/install/lib/class.FroxlorInstall.php index cb833d90..2f4c8f95 100644 --- a/install/lib/class.FroxlorInstall.php +++ b/install/lib/class.FroxlorInstall.php @@ -1340,9 +1340,18 @@ class FroxlorInstall // post if (! empty($_POST['distribution'])) { $this->_data['distribution'] = $_POST['distribution']; - } else { - $os_dist = parse_ini_file('/etc/os-release', false); - $os_version = explode('.',$os_dist['VERSION_ID'])[0]; + } else { + //set default os. + $os_dist = array('ID' => 'buster'); + $os_version = array('0' => '10'); + + //read os-release + if(file_exists('/etc/os-release')) { + $os_dist = parse_ini_file('/etc/os-release', false); + if(is_array($os_dist) && array_key_exists('ID', $os_dist) && array_key_exists('VERSION_ID', $os_dist)) { + $os_version = explode('.',$os_dist['VERSION_ID'])[0]; + } + } $distros = glob(\Froxlor\FileDir::makeCorrectDir(\Froxlor\Froxlor::getInstallDir() . '/lib/configfiles/') . '*.xml'); foreach ($distros as $_distribution) {