diff --git a/library/Director/Import/ImportSourceLdap.php b/library/Director/Import/ImportSourceLdap.php new file mode 100644 index 00000000..15f8928c --- /dev/null +++ b/library/Director/Import/ImportSourceLdap.php @@ -0,0 +1,79 @@ +connection()->select()->from($this->settings['objectclass'], $this->listColumns()); + if ($base = $this->settings['base']) { + $query->setBase($base); + } + if ($filter = $this->settings['base']) { + $query->setBase($base); + } + + return $query->fetchAll(); + } + + public function listColumns() + { + return preg_split('/,\s*/', $this->settings['query'], -1, PREG_SPLIT_NO_EMPTY); + } + + public static function addSettingsFormFields(QuickForm $form) + { + Util::addLDAPResourceFormElement($form, 'resource'); + $form->addElement('text', 'base', array( + 'label' => 'LDAP Search Base', + )); + $form->addElement('text', 'objectclass', array( + 'label' => 'Object class', + )); + $form->addElement('text', 'filter', array( + 'label' => 'LDAP filter', + )); + $form->addElement('textarea', 'query', array( + 'label' => 'Properties', + //'required' => true, + 'rows' => 5, + )); + return $form; + } + + protected function connection() + { + if ($this->connection === null) { + $this->connection = ResourceFactory::create($this->settings['resource']); + } + + return $this->connection; + } + +} diff --git a/run.php b/run.php index 2c172218..a9289dff 100644 --- a/run.php +++ b/run.php @@ -2,6 +2,7 @@ $this->registerHook('Monitoring\\HostActions', '\\Icinga\\Module\\Director\\Web\\HostActions'); $this->registerHook('Director\\ImportSource', '\\Icinga\\Module\\Director\\Import\\ImportSourceSql', 'sql'); +$this->registerHook('Director\\ImportSource', '\\Icinga\\Module\\Director\\Import\\ImportSourceLdap', 'ldap'); $this->registerHook('Director\\DataType', '\\Icinga\\Module\\Director\\DataType\\DataTypeString', 'string'); $this->registerHook('Director\\DataType', '\\Icinga\\Module\\Director\\DataType\\DataTypeNumber', 'number');