<?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;
|
|
}
|
|
}
|