From 0cbe69243b4b7538593c27076bbe041cb8c2c384 Mon Sep 17 00:00:00 2001
From: Thibault Dockx <thibault.dockx@fusiondirectory.org>
Date: Fri, 4 Apr 2025 10:13:36 +0100
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(extractor):=20add=20LDAP=20dat?=
 =?UTF-8?q?a=20extraction=20plugin=20with=20schema=20and=20metadata=20-=20?=
 =?UTF-8?q?basic=20structure?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore                                    | 10 ++++++
 .../contrib/openldap/extractor-fd.schema      | 32 +++++++++++++++++++
 extractor/contrib/yaml/description.yaml       | 27 ++++++++++++++++
 .../breezy/icons/48/apps/extractor-task.png   |  0
 extractor/locale/en/fusiondirectory.po        |  0
 5 files changed, 69 insertions(+)
 create mode 100644 extractor/contrib/openldap/extractor-fd.schema
 create mode 100644 extractor/contrib/yaml/description.yaml
 create mode 100644 extractor/html/themes/breezy/icons/48/apps/extractor-task.png
 create mode 100644 extractor/locale/en/fusiondirectory.po

diff --git a/.gitignore b/.gitignore
index 6ef5c6d096..3d254de604 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,12 @@
 .directory
 
+.idea/deployment.xml
+.idea/fd-plugins.iml
+.idea/modules.xml
+.idea/php.xml
+.idea/sshConfigs.xml
+.idea/vcs.xml
+.idea/webServers.xml
+.idea/workspace.xml
+.gitignore
+filelist
diff --git a/extractor/contrib/openldap/extractor-fd.schema b/extractor/contrib/openldap/extractor-fd.schema
new file mode 100644
index 0000000000..d4f0ae02ab
--- /dev/null
+++ b/extractor/contrib/openldap/extractor-fd.schema
@@ -0,0 +1,32 @@
+##
+## extractor-fd.schema - Needed by Fusion Directory for extractor plugin
+##
+## Allows extracting LDAP data based on selected members or groups and a chosen format.
+##
+
+# Attributes
+
+attributetype ( 1.3.6.1.4.1.38414.93.1.1 NAME 'fdExtractorTaskMembers'
+    DESC 'Fusion Directory - List of members or groups for extraction tasks'
+    EQUALITY caseExactMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+attributetype ( 1.3.6.1.4.1.38414.93.1.2 NAME 'fdExtractorTaskListOfDN'
+    DESC 'Fusion Directory - DNs derived from the selected members/groups'
+    EQUALITY caseExactMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
+
+attributetype ( 1.3.6.1.4.1.38414.93.1.3 NAME 'fdExtractorTaskFormat'
+    DESC 'Fusion Directory - Format used for data extraction (CSV for now, extensible later)'
+    EQUALITY caseExactMatch
+    SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
+    SINGLE-VALUE )
+
+# Object Class
+
+objectclass ( 1.3.6.1.4.1.38414.93.2.1 NAME 'fdExtractorTasks'
+    DESC 'Fusion Directory - Extractor tasks plugin object class'
+    SUP top
+    AUXILIARY
+    MUST ( fdExtractorTaskMembers $ fdExtractorTaskFormat )
+    MAY ( fdExtractorTaskListOfDN ) )
\ No newline at end of file
diff --git a/extractor/contrib/yaml/description.yaml b/extractor/contrib/yaml/description.yaml
new file mode 100644
index 0000000000..c4a8f9fd00
--- /dev/null
+++ b/extractor/contrib/yaml/description.yaml
@@ -0,0 +1,27 @@
+information:
+  authors:
+    - FusionDirectory
+  description: LDAP data extraction plugin for FusionDirectory
+  license: GPLv2
+  logoUrl: https://raw.githubusercontent.com/fusiondirectory/fusiondirectory-plugins/dev/extractor/html/themes/breezy/icons/48/apps/extractor.png
+  name: extractor
+  origin: package
+  screenshotUrl:
+    - https://raw.githubusercontent.com/fusiondirectory/fusiondirectory-plugins/dev/extractor/contrib/screenshots/extractor-task.png
+  status: Stable
+  tags:
+    - user
+    - group
+    - automation
+    - extraction
+  version: '1.0'
+requirement:
+  fdVersion: 1.5
+  phpVersion: 7.4
+support:
+  contractUrl: https://www.fusiondirectory.org/abonnements-fusiondirectory/
+  documentationUrl: https://fusiondirectory-user-manual.readthedocs.io/
+  homeUrl: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins
+  provider: fusiondirectory
+  schemaUrl: https://schemas.fusiondirectory.org/
+  ticketUrl: https://gitlab.fusiondirectory.org/fusiondirectory/fd-plugins/-/issues
\ No newline at end of file
diff --git a/extractor/html/themes/breezy/icons/48/apps/extractor-task.png b/extractor/html/themes/breezy/icons/48/apps/extractor-task.png
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/extractor/locale/en/fusiondirectory.po b/extractor/locale/en/fusiondirectory.po
new file mode 100644
index 0000000000..e69de29bb2
-- 
GitLab