mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-31 01:34:12 +02:00
run: require PHP 5.6, move/modernize hooks
This commit is contained in:
parent
1fa52e5c14
commit
6aed0a2097
112
register-hooks.php
Normal file
112
register-hooks.php
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Icinga\Application\Modules\Module;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeArray;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeBoolean;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeDatalist;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeDirectorObject;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeNumber;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeSqlQuery;
|
||||||
|
use Icinga\Module\Director\DataType\DataTypeString;
|
||||||
|
use Icinga\Module\Director\Import\ImportSourceCoreApi;
|
||||||
|
use Icinga\Module\Director\Import\ImportSourceLdap;
|
||||||
|
use Icinga\Module\Director\Import\ImportSourceRestApi;
|
||||||
|
use Icinga\Module\Director\Import\ImportSourceSql;
|
||||||
|
use Icinga\Module\Director\Job\ConfigJob;
|
||||||
|
use Icinga\Module\Director\Job\HousekeepingJob;
|
||||||
|
use Icinga\Module\Director\Job\ImportJob;
|
||||||
|
use Icinga\Module\Director\Job\SyncJob;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierArrayElementByPosition;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierArrayFilter;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierBitmask;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierCombine;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierDnsRecords;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierExtractFromDN;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierFromAdSid;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierFromLatin1;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierGetHostByName;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierJoin;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierJsonDecode;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierLConfCustomVar;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierLowercase;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierMakeBoolean;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierMap;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierParseURL;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierRegexReplace;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierRegexSplit;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierRejectOrSelect;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierReplace;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierSplit;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierStripDomain;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierSubstring;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierToInt;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierUppercase;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierUpperCaseFirst;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierURLEncode;
|
||||||
|
use Icinga\Module\Director\PropertyModifier\PropertyModifierXlsNumericIp;
|
||||||
|
use Icinga\Module\Director\ProvidedHook\CubeLinks;
|
||||||
|
|
||||||
|
/** @var Module $this */
|
||||||
|
$this->provideHook('monitoring/HostActions');
|
||||||
|
$this->provideHook('monitoring/ServiceActions');
|
||||||
|
$this->provideHook('cube/Actions', CubeLinks::class);
|
||||||
|
|
||||||
|
$directorHooks = [
|
||||||
|
'director/DataType' => [
|
||||||
|
DataTypeArray::class,
|
||||||
|
DataTypeBoolean::class,
|
||||||
|
DataTypeDatalist::class,
|
||||||
|
DataTypeNumber::class,
|
||||||
|
DataTypeDirectorObject::class,
|
||||||
|
DataTypeSqlQuery::class,
|
||||||
|
DataTypeString::class
|
||||||
|
],
|
||||||
|
'director/ImportSource' => [
|
||||||
|
ImportSourceSql::class,
|
||||||
|
ImportSourceLdap::class,
|
||||||
|
ImportSourceCoreApi::class,
|
||||||
|
ImportSourceRestApi::class
|
||||||
|
],
|
||||||
|
'director/Job' => [
|
||||||
|
ConfigJob::class,
|
||||||
|
HousekeepingJob::class,
|
||||||
|
ImportJob::class,
|
||||||
|
SyncJob::class,
|
||||||
|
],
|
||||||
|
'director/PropertyModifier' => [
|
||||||
|
PropertyModifierArrayElementByPosition::class,
|
||||||
|
PropertyModifierArrayFilter::class,
|
||||||
|
PropertyModifierBitmask::class,
|
||||||
|
PropertyModifierCombine::class,
|
||||||
|
PropertyModifierDnsRecords::class,
|
||||||
|
PropertyModifierExtractFromDN::class,
|
||||||
|
PropertyModifierFromAdSid::class,
|
||||||
|
PropertyModifierFromLatin1::class,
|
||||||
|
PropertyModifierGetHostByName::class,
|
||||||
|
PropertyModifierJoin::class,
|
||||||
|
PropertyModifierJsonDecode::class,
|
||||||
|
PropertyModifierLConfCustomVar::class,
|
||||||
|
PropertyModifierLowercase::class,
|
||||||
|
PropertyModifierMakeBoolean::class,
|
||||||
|
PropertyModifierMap::class,
|
||||||
|
PropertyModifierParseURL::class,
|
||||||
|
PropertyModifierRegexReplace::class,
|
||||||
|
PropertyModifierRegexSplit::class,
|
||||||
|
PropertyModifierRejectOrSelect::class,
|
||||||
|
PropertyModifierReplace::class,
|
||||||
|
PropertyModifierSplit::class,
|
||||||
|
PropertyModifierStripDomain::class,
|
||||||
|
PropertyModifierSubstring::class,
|
||||||
|
PropertyModifierToInt::class,
|
||||||
|
PropertyModifierUppercase::class,
|
||||||
|
PropertyModifierUpperCaseFirst::class,
|
||||||
|
PropertyModifierURLEncode::class,
|
||||||
|
PropertyModifierXlsNumericIp::class,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($directorHooks as $type => $classNames) {
|
||||||
|
foreach ($classNames as $className) {
|
||||||
|
$this->provideHook($type, $className);
|
||||||
|
}
|
||||||
|
}
|
@ -7,7 +7,7 @@ use Icinga\Web\Url;
|
|||||||
|
|
||||||
if (Icinga::app()->isCli()) {
|
if (Icinga::app()->isCli()) {
|
||||||
throw new IcingaException(
|
throw new IcingaException(
|
||||||
"PHP version 5.4.x is required for Director >= 1.4.0, you're running %s."
|
"PHP version 5.6.x is required for Director >= 1.7.0, you're running %s."
|
||||||
. ' Please either upgrade PHP or downgrade Icinga Director',
|
. ' Please either upgrade PHP or downgrade Icinga Director',
|
||||||
PHP_VERSION
|
PHP_VERSION
|
||||||
);
|
);
|
||||||
|
65
run.php
65
run.php
@ -3,78 +3,25 @@
|
|||||||
use Icinga\Application\Modules\Module;
|
use Icinga\Application\Modules\Module;
|
||||||
use dipl\Loader\CompatLoader;
|
use dipl\Loader\CompatLoader;
|
||||||
|
|
||||||
if (version_compare(PHP_VERSION, '5.4.0') < 0) {
|
if (version_compare(PHP_VERSION, '5.6.0') < 0) {
|
||||||
include __DIR__ . '/run-php5.3.php';
|
include __DIR__ . '/run-php5.3.php';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$prefix = '\\Icinga\\Module\\Director\\';
|
// TODO: this is going to be removed in v1.8.0
|
||||||
|
|
||||||
/** @var Module $this */
|
|
||||||
$this->provideHook('monitoring/HostActions');
|
|
||||||
$this->provideHook('monitoring/ServiceActions');
|
|
||||||
|
|
||||||
$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceSql');
|
|
||||||
$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceLdap');
|
|
||||||
$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceCoreApi');
|
|
||||||
$this->provideHook('director/ImportSource', $prefix . 'Import\\ImportSourceRestApi');
|
|
||||||
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeArray');
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeBoolean');
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeDatalist');
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeNumber');
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeDirectorObject');
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeSqlQuery');
|
|
||||||
$this->provideHook('director/DataType', $prefix . 'DataType\\DataTypeString');
|
|
||||||
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierLowercase');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierRegexReplace');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierRegexSplit');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierReplace');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierStripDomain');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierSubstring');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierUppercase');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierMap');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierSplit');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierJoin');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierGetHostByName');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierDnsRecords');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierExtractFromDN');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierFromAdSid');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierFromLatin1');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierBitmask');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierMakeBoolean');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierJsonDecode');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierToInt');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierLConfCustomVar');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierArrayFilter');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierCombine');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierXlsNumericIp');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierURLEncode');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierUpperCaseFirst');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierRejectOrSelect');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierArrayElementByPosition');
|
|
||||||
$this->provideHook('director/PropertyModifier', $prefix . 'PropertyModifier\\PropertyModifierParseURL');
|
|
||||||
|
|
||||||
$this->provideHook('director/Job', $prefix . 'Job\\HousekeepingJob');
|
|
||||||
$this->provideHook('director/Job', $prefix . 'Job\\ConfigJob');
|
|
||||||
$this->provideHook('director/Job', $prefix . 'Job\\ImportJob');
|
|
||||||
$this->provideHook('director/Job', $prefix . 'Job\\SyncJob');
|
|
||||||
|
|
||||||
$this->provideHook('cube/Actions', 'CubeLinks');
|
|
||||||
|
|
||||||
require_once __DIR__ . '/library/vendor/ipl/Loader/CompatLoader.php';
|
require_once __DIR__ . '/library/vendor/ipl/Loader/CompatLoader.php';
|
||||||
CompatLoader::delegateLoadingToIcingaWeb($this->app);
|
CompatLoader::delegateLoadingToIcingaWeb($this->app);
|
||||||
|
|
||||||
|
/** @var Module $this */
|
||||||
$modules = $this->app->getModuleManager();
|
$modules = $this->app->getModuleManager();
|
||||||
foreach ($this->getDependencies() as $module => $required) {
|
foreach ($this->getDependencies() as $module => $required) {
|
||||||
if ($modules->hasEnabled($module)) {
|
if ($modules->hasEnabled($module)) {
|
||||||
$installed = $modules->getModule($module, false)->getVersion();
|
$installed = $modules->getModule($module, false)->getVersion();
|
||||||
$installed = \ltrim($installed, 'v'); // v0.6.0 VS 0.6.0
|
$installed = ltrim($installed, 'v'); // v0.6.0 VS 0.6.0
|
||||||
if (preg_match('/^([<>=]+)\s*v?(\d+\.\d+\.\d+)$/', $required, $match)) {
|
if (preg_match('/^([<>=]+)\s*v?(\d+\.\d+\.\d+)$/', $required, $match)) {
|
||||||
$operator = $match[1];
|
$operator = $match[1];
|
||||||
$vRequired = $match[2];
|
$vRequired = $match[2];
|
||||||
if (\version_compare($installed, $vRequired, $operator)) {
|
if (version_compare($installed, $vRequired, $operator)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -83,3 +30,5 @@ foreach ($this->getDependencies() as $module => $required) {
|
|||||||
include __DIR__ . '/run-missingdeps.php';
|
include __DIR__ . '/run-missingdeps.php';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include __DIR__ . '/register-hooks.php';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user