OpenSource CLI-App to install and handle stuff related to Web-Server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

114 lines
2.2 KiB

<?php
namespace App\Helpers;
/**
* Helper for install
*
* @author Björn Hase, Tentakelfabrik
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.tentakelfabrik.de/Tentakelfabrik/mcp
*
*/
class InstallHelper
{
// message for status
const PACKAGE_STATUS = 'Status: install ok installed';
// not allowed message
const NOT_ALLOWED = [
'WARNING: apt does not have a stable CLI interface. Use with caution in scripts.'
];
/**
* check if a packege is installed
*
* @param string $name
* @return boolean
*/
public function isReady($name)
{
$result = false;
exec('echo $(dpkg -s '.$name.' 2>&1 | grep "'.self::PACKAGE_STATUS.'")', $output);
if (isset($output[0]) && $output[0] === self::PACKAGE_STATUS) {
$result = true;
}
return $result;
}
/**
* apt add a Warning for no good,
*
*
* @return array
*/
public function filterAptMessages($output)
{
$results = [];
foreach($output as $message) {
if (!in_array($message, self::NOT_ALLOWED) && !empty($message)) {
$results[] = $message;
}
}
return $results;
}
/**
*
*
* @return string
*/
public function getDistributionId()
{
return $this->getSystemInfo('DISTRIB_ID');
}
/**
*
* @return string
*/
public function getDistributionRelease()
{
return $this->getSystemInfo('DISTRIB_RELEASE');
}
/**
*
*
* @return string
*/
public function getDistributionCodename()
{
return $this->getSystemInfo('DISTRIB_CODENAME');
}
/**
* getting information about system version
*
* @param string $key
* @return string
*
*/
public function getSystemInfo($key)
{
exec('cat /etc/*release 2>&1', $output);
$result = NULL;
foreach($output as $row) {
$line = explode('=', $row);
if (isset($line[0]) && $line[0] === $key) {
$result = $line[1];
break;
}
}
return $result;
}
}