Skip to content

Commit 5d05c62

Browse files
author
Marius Burkard
committed
Merge branch '6276-el8-clones-support' into 'develop'
Resolve "Adds support for the new RHEL clones (Alma, Rocky, Stream etc)" Closes #6276 See merge request ispconfig/ispconfig3!1551
2 parents c69903f + 506d95a commit 5d05c62

File tree

2 files changed

+137
-147
lines changed

2 files changed

+137
-147
lines changed

install/lib/install.lib.php

Lines changed: 78 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -291,96 +291,89 @@ function get_distname() {
291291
}
292292
}
293293

294+
//** RHEL (including compatible clones) & Fedora
295+
elseif(file_exists('/etc/redhat-release') && file_exists('/etc/os-release')) {
296+
297+
$content = file_get_contents('/etc/os-release');
298+
299+
preg_match('/(?<=PRETTY_NAME=\").+?(?=\")/', $content, $prettyname);
300+
preg_match('/(?<=NAME=\").+?(?=\")/', $content, $name);
301+
preg_match('/(?<=VERSION=\").+?(?=\")/', $content, $version);
302+
preg_match('/(?<=VERSION_ID=\").+?(?=\")/', $content, $versionid);
303+
304+
if(stristr($prettyname[0], 'Fedora 32 (Thirty Two)')) {
305+
$distname = 'Fedora';
306+
$distver = '32';
307+
$distid = 'fedora32';
308+
$distbaseid = 'fedora';
309+
swriteln("Operating System: Fedora 32 or compatible\n");
310+
} elseif(stristr($prettyname[0], 'Fedora 33 (Thirty Three)')) {
311+
$distname = 'Fedora';
312+
$distver = '33';
313+
$distid = 'fedora33';
314+
$distbaseid = 'fedora';
315+
swriteln("Operating System: Fedora 33 or compatible\n");
316+
//** RHEL 7 and compatible clones
317+
} elseif(preg_match('/^(?:7|7\.[0-9]{1,2})$/', $versionid[0])) {
318+
preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', file_get_contents('/etc/redhat-release'), $centos7_version);
319+
$distname = $name[0];
320+
$distver = is_array($centos7_version)? implode('.', array_filter(array($centos7_version[1][0],$centos7_version[2][0],$centos7_version[3][0]),'strlen')) : $version[0];
321+
$distid = 'centos72';
322+
$distbaseid = 'fedora';
323+
swriteln("Operating System: " . $distname . " " . $distver . "\n");
324+
//** RHEL 8 and compatible clones
325+
} elseif(preg_match('/^(?:8|8\.[0-9]{1,2})$/', $versionid[0])) {
326+
$distname = $name[0];
327+
$distver = $version[0];
328+
$distid = 'centos80';
329+
$distbaseid = 'fedora';
330+
swriteln("Operating System: " . $prettyname[0] . "\n");
331+
} else {
332+
$distname = 'Redhat';
333+
$distver = 'Unknown';
334+
$distid = 'fedora9';
335+
$distbaseid = 'fedora';
336+
swriteln("Operating System: Redhat or compatible\n");
337+
}
338+
//** CentOS 6
339+
} elseif(file_exists('/etc/redhat-release') && !file_exists('/etc/os-release') && !file_exists('/etc/els-release')) {
294340

295-
//** Redhat
296-
elseif(file_exists('/etc/redhat-release')) {
297-
298-
$content = file_get_contents('/etc/redhat-release');
341+
$content = file_get_contents('/etc/redhat-release');
299342

300-
if(stristr($content, 'Fedora release 9 (Sulphur)')) {
301-
$distname = 'Fedora';
302-
$distver = '9';
303-
$distid = 'fedora9';
304-
$distbaseid = 'fedora';
305-
swriteln("Operating System: Fedora 9 or compatible\n");
306-
} elseif(stristr($content, 'Fedora release 10 (Cambridge)')) {
307-
$distname = 'Fedora';
308-
$distver = '10';
309-
$distid = 'fedora9';
310-
$distbaseid = 'fedora';
311-
swriteln("Operating System: Fedora 10 or compatible\n");
312-
} elseif(stristr($content, 'Fedora release 10')) {
313-
$distname = 'Fedora';
314-
$distver = '11';
315-
$distid = 'fedora9';
316-
$distbaseid = 'fedora';
317-
swriteln("Operating System: Fedora 11 or compatible\n");
318-
} elseif(stristr($content, 'Fedora release 32 (Thirty Two)')) {
319-
$distname = 'Fedora';
320-
$distver = '32';
321-
$distid = 'fedora32';
322-
$distbaseid = 'fedora';
323-
swriteln("Operating System: Fedora 32 or compatible\n");
324-
} elseif(stristr($content, 'Fedora release 33 (Thirty Three)')) {
325-
$distname = 'Fedora';
326-
$distver = '33';
327-
$distid = 'fedora33';
328-
$distbaseid = 'fedora';
329-
swriteln("Operating System: Fedora 33 or compatible\n");
330-
} elseif(stristr($content, 'CentOS release 5.2 (Final)')) {
331-
$distname = 'CentOS';
332-
$distver = '5.2';
333-
$distid = 'centos52';
334-
$distbaseid = 'fedora';
335-
swriteln("Operating System: CentOS 5.2 or compatible\n");
336-
} elseif(stristr($content, 'CentOS release 5.3 (Final)')) {
337-
$distname = 'CentOS';
338-
$distver = '5.3';
343+
if(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) {
344+
preg_match_all('/(6\.?([0-9]{0,2})\.?(\s)?([a-zA-Z()]+))$/', $content, $centos6_version);
345+
$distname = 'CentOS Linux';
346+
$distver = $centos6_version[0][0] ? $centos6_version[0][0] : '6';
339347
$distid = 'centos53';
340348
$distbaseid = 'fedora';
341-
swriteln("Operating System: CentOS 5.3 or compatible\n");
342-
} elseif(stristr($content, 'CentOS release 5')) {
343-
$distname = 'CentOS';
344-
$distver = 'Unknown';
345-
$distid = 'centos53';
349+
swriteln("Operating System: " . $distname . " " . $distver . "\n");
350+
351+
} else {
352+
$distname = 'Redhat';
353+
$distver = 'Unknown';
354+
$distid = 'fedora9';
355+
$distbaseid = 'fedora';
356+
}
357+
//** CentOS 6 Extended Lifecycle Support by CloudLinux
358+
} elseif(file_exists('/etc/redhat-release') && file_exists('/etc/els-release') && !file_exists('/etc/os-release')) {
359+
360+
$content = file_get_contents('/etc/els-release');
361+
362+
if(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) {
363+
preg_match_all('/(6)\.?([0-9]{0,2})?\.?\s([a-zA-Z(), ]+)?$/', $content, $centos6_version);
364+
$distname = 'CentOS Linux';
365+
$distver = $centos6_version[0][0] ? $centos6_version[0][0] : '6';
366+
$distid = 'centos53';
346367
$distbaseid = 'fedora';
347-
swriteln("Operating System: CentOS 5 or compatible\n");
348-
} elseif(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) {
349-
$distname = 'CentOS';
350-
$distver = 'Unknown';
351-
$distid = 'centos53';
352-
$distbaseid = 'fedora';
353-
swriteln("Operating System: CentOS 6 or compatible\n");
354-
} elseif(stristr($content, 'CentOS Linux release 7')) {
355-
$distname = 'CentOS';
356-
$distver = 'Unknown';
357-
$distbaseid = 'fedora';
358-
$var=explode(" ", $content);
359-
$var=explode(".", $var[3]);
360-
$var=$var[0].".".$var[1];
361-
if($var=='7.0' || $var=='7.1') {
362-
$distid = 'centos70';
363-
} else {
364-
$distid = 'centos72';
365-
}
366-
swriteln("Operating System: CentOS $var\n");
367-
} elseif(stristr($content, 'CentOS Linux release 8')) {
368-
$distname = 'CentOS';
369-
$distver = 'Unknown';
370-
$distbaseid = 'fedora';
371-
$distid = 'centos80';
372-
$var=explode(" ", $content);
373-
$var=explode(".", $var[3]);
374-
$var=$var[0].".".$var[1];
375-
swriteln("Operating System: CentOS $var\n");
376-
} else {
377-
$distname = 'Redhat';
378-
$distver = 'Unknown';
379-
$distid = 'fedora9';
380-
$distbaseid = 'fedora';
381-
swriteln("Operating System: Redhat or compatible, unknown version.\n");
382-
}
383-
}
368+
swriteln("Operating System: " . $distname . " " . $distver . "\n");
369+
} else {
370+
$distname = 'Redhat';
371+
$distver = 'Unknown';
372+
$distid = 'fedora9';
373+
$distbaseid = 'fedora';
374+
}
375+
}
376+
384377

385378
//** Gentoo
386379
elseif(file_exists('/etc/gentoo-release')) {

server/lib/classes/monitor_tools.inc.php

Lines changed: 59 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,8 @@ function get_distname() {
261261
$distbaseid = 'opensuse';
262262
} elseif(stristr(file_get_contents('/etc/os-release'), 'opensuse')) {
263263
$content = file_get_contents('/etc/os-release');
264-
preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name);
265-
preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version);
264+
preg_match_all('/NAME=\"([\w ]+)\"/m', $content, $name);
265+
preg_match_all('/VERSION_ID=\"([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*).$/m', $content, $version);
266266
$distname = is_array($name) ? $name[1][0] : 'openSUSE';
267267
$distver = is_array($version) ? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) : 'Unknown';
268268
$distid = 'opensuse112';
@@ -276,84 +276,81 @@ function get_distname() {
276276
}
277277

278278

279-
//** Redhat
280-
elseif(file_exists('/etc/redhat-release')) {
279+
//** RHEL (including compatible clones) & Fedora
280+
elseif(file_exists('/etc/redhat-release') && file_exists('/etc/os-release')) {
281281

282-
$content = file_get_contents('/etc/redhat-release');
282+
$content = file_get_contents('/etc/os-release');
283283

284-
if(stristr($content, 'Fedora release 9 (Sulphur)')) {
285-
$distname = 'Fedora';
286-
$distver = '9';
287-
$distid = 'fedora9';
288-
$distbaseid = 'fedora';
289-
} elseif(stristr($content, 'Fedora release 10 (Cambridge)')) {
290-
$distname = 'Fedora';
291-
$distver = '10';
292-
$distid = 'fedora9';
293-
$distbaseid = 'fedora';
294-
} elseif(stristr($content, 'Fedora release 10')) {
295-
$distname = 'Fedora';
296-
$distver = '11';
297-
$distid = 'fedora9';
298-
$distbaseid = 'fedora';
299-
} elseif(stristr($content, 'Fedora release 32 (Thirty Two)')) {
284+
preg_match('/(?<=PRETTY_NAME=\").+?(?=\")/', $content, $prettyname);
285+
preg_match('/(?<=NAME=\").+?(?=\")/', $content, $name);
286+
preg_match('/(?<=VERSION=\").+?(?=\")/', $content, $version);
287+
preg_match('/(?<=VERSION_ID=\").+?(?=\")/', $content, $versionid);
288+
289+
if(stristr($prettyname[0], 'Fedora 32 (Thirty Two)')) {
300290
$distname = 'Fedora';
301291
$distver = '32';
302292
$distid = 'fedora32';
303293
$distbaseid = 'fedora';
304-
} elseif(stristr($content, 'Fedora release 33 (Thirty Three)')) {
294+
} elseif(stristr($prettyname[0], 'Fedora 33 (Thirty Three)')) {
305295
$distname = 'Fedora';
306296
$distver = '33';
307297
$distid = 'fedora33';
308298
$distbaseid = 'fedora';
309-
} elseif(stristr($content, 'CentOS release 5.2 (Final)')) {
310-
$distname = 'CentOS';
311-
$distver = '5.2';
312-
$distid = 'centos52';
299+
//** RHEL 7 and compatible clones
300+
} elseif(preg_match('/^(?:7|7\.[0-9]{1,2})$/', $versionid[0])) {
301+
preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', file_get_contents('/etc/redhat-release'), $centos7_version);
302+
$distname = $name[0];
303+
$distver = is_array($centos7_version)? implode('.', array_filter(array($centos7_version[1][0],$centos7_version[2][0],$centos7_version[3][0]),'strlen')) : $version[0];
304+
$distid = 'centos72';
313305
$distbaseid = 'fedora';
314-
} elseif(stristr($content, 'CentOS release 5.3 (Final)')) {
315-
$distname = 'CentOS';
316-
$distver = '5.3';
317-
$distid = 'centos53';
306+
//** RHEL 8 and compatible clones
307+
} elseif(preg_match('/^(?:8|8\.[0-9]{1,2})$/', $versionid[0])) {
308+
$distname = $name[0];
309+
$distver = $version[0];
310+
$distid = 'centos80';
318311
$distbaseid = 'fedora';
319-
} elseif(stristr($content, 'CentOS release 5')) {
320-
$distname = 'CentOS';
321-
$distver = 'Unknown';
322-
$distid = 'centos53';
323-
$distbaseid = 'fedora';
324-
} elseif(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) {
325-
$distname = 'CentOS';
326-
$distver = 'Unknown';
327-
$distid = 'centos53';
328-
$distbaseid = 'fedora';
329-
} elseif(stristr($content, 'CentOS Linux release 7')) {
330-
preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version);
331-
$distname = 'CentOS';
332-
$distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown';
333-
$distbaseid = 'fedora';
334-
$var=explode(" ", $content);
335-
$var=explode(".", $var[3]);
336-
$var=$var[0].".".$var[1];
337-
if($var=='7.0' || $var=='7.1') {
338-
$distid = 'centos70';
339-
} else {
340-
$distid = 'centos72';
341-
}
342-
} elseif(stristr($content, 'CentOS Linux release 8')) {
343-
preg_match_all('/([0-9]{1,2})\.?([0-9]{0,2})\.?([0-9]*)/', $content, $version);
344-
$distname = 'CentOS';
345-
$distver = is_array($version)? implode('.', array_filter(array($version[1][0],$version[2][0],$version[3][0]),'strlen')) :'Unknown';
346-
$distbaseid = 'fedora';
347-
$var=explode(" ", $content);
348-
$var=explode(".", $var[3]);
349-
$var=$var[0].".".$var[1];
350312
} else {
351313
$distname = 'Redhat';
352314
$distver = 'Unknown';
353315
$distid = 'fedora9';
354316
$distbaseid = 'fedora';
355317
}
356-
}
318+
//** CentOS 6
319+
} elseif(file_exists('/etc/redhat-release') && !file_exists('/etc/os-release') && !file_exists('/etc/els-release')) {
320+
321+
$content = file_get_contents('/etc/redhat-release');
322+
323+
if(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) {
324+
preg_match_all('/(6\.?([0-9]{0,2})\.?(\s)?([a-zA-Z()]+))$/', $content, $centos6_version);
325+
$distname = 'CentOS Linux';
326+
$distver = $centos6_version[0][0] ? $centos6_version[0][0] : '6';
327+
$distid = 'centos53';
328+
$distbaseid = 'fedora';
329+
} else {
330+
$distname = 'Redhat';
331+
$distver = 'Unknown';
332+
$distid = 'fedora9';
333+
$distbaseid = 'fedora';
334+
}
335+
//** CentOS 6 Extended Lifecycle Support by CloudLinux
336+
} elseif(file_exists('/etc/redhat-release') && file_exists('/etc/els-release') && !file_exists('/etc/os-release')) {
337+
338+
$content = file_get_contents('/etc/els-release');
339+
340+
if(stristr($content, 'CentOS Linux release 6') || stristr($content, 'CentOS release 6')) {
341+
preg_match_all('/(6)\.?([0-9]{0,2})?\.?\s([a-zA-Z(), ]+)?$/', $content, $centos6_version);
342+
$distname = 'CentOS Linux';
343+
$distver = $centos6_version[0][0] ? $centos6_version[0][0] : '6';
344+
$distid = 'centos53';
345+
$distbaseid = 'fedora';
346+
} else {
347+
$distname = 'Redhat';
348+
$distver = 'Unknown';
349+
$distid = 'fedora9';
350+
$distbaseid = 'fedora';
351+
}
352+
}
353+
357354

358355
//** Gentoo
359356
elseif(file_exists('/etc/gentoo-release')) {

0 commit comments

Comments
 (0)