2019-10-17 17:22:43 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
|
|
2020-04-19 21:44:26 -05:00
|
|
|
use App\Console\Commands\Traits\CompletesConfigArgument;
|
2019-10-17 17:22:43 +00:00
|
|
|
use App\Console\LnmsCommand;
|
|
|
|
|
use LibreNMS\Config;
|
2021-05-02 12:25:35 -05:00
|
|
|
use LibreNMS\Util\OS;
|
2019-10-17 17:22:43 +00:00
|
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
|
|
|
|
|
|
|
|
class GetConfigCommand extends LnmsCommand
|
|
|
|
|
{
|
2020-04-19 21:44:26 -05:00
|
|
|
use CompletesConfigArgument;
|
|
|
|
|
|
2019-10-17 17:22:43 +00:00
|
|
|
protected $name = 'config:get';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Create a new command instance.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function __construct()
|
|
|
|
|
{
|
|
|
|
|
parent::__construct();
|
|
|
|
|
|
|
|
|
|
$this->addArgument('setting', InputArgument::OPTIONAL);
|
2021-08-19 18:34:19 -05:00
|
|
|
$this->addOption('dump');
|
2019-10-17 17:22:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Execute the console command.
|
|
|
|
|
*
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function handle()
|
|
|
|
|
{
|
|
|
|
|
$setting = $this->argument('setting');
|
2021-05-02 12:25:35 -05:00
|
|
|
|
|
|
|
|
// load os definition if requested, and remove special definition_loaded key
|
|
|
|
|
if (preg_match('/^os\.(?<os>[^.]+)/', $setting, $matches)) {
|
|
|
|
|
OS::loadDefinition($matches['os']);
|
|
|
|
|
Config::forget("os.{$matches['os']}.definition_loaded");
|
|
|
|
|
}
|
|
|
|
|
|
2021-08-19 18:34:19 -05:00
|
|
|
if ($this->option('dump')) {
|
2019-10-17 17:22:43 +00:00
|
|
|
$this->line($setting ? json_encode(Config::get($setting)) : Config::toJson());
|
2020-09-21 14:54:51 +02:00
|
|
|
|
2019-10-17 17:22:43 +00:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (! $setting) {
|
|
|
|
|
throw new \RuntimeException('Not enough arguments (missing: "setting").');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Config::has($setting)) {
|
|
|
|
|
$output = Config::get($setting);
|
|
|
|
|
if (! is_string($output)) {
|
2021-08-23 19:07:26 -05:00
|
|
|
$output = json_encode($output, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
2019-10-17 17:22:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$this->line($output);
|
2020-09-21 14:54:51 +02:00
|
|
|
|
2019-10-17 17:22:43 +00:00
|
|
|
return 0;
|
|
|
|
|
}
|
2020-09-21 14:54:51 +02:00
|
|
|
|
2019-10-17 17:22:43 +00:00
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
}
|