From c53c6dad736f75126fe86e17452e63ed0cded2c5 Mon Sep 17 00:00:00 2001 From: blaerf Date: Sun, 16 Nov 2025 11:26:22 +0000 Subject: [PATCH 1/2] Projektstruktur-und-Best-Practices aktualisiert --- Projektstruktur-und-Best-Practices.-.md | 468 ++++++++++++------------ 1 file changed, 234 insertions(+), 234 deletions(-) diff --git a/Projektstruktur-und-Best-Practices.-.md b/Projektstruktur-und-Best-Practices.-.md index db7b28f..de5fa44 100644 --- a/Projektstruktur-und-Best-Practices.-.md +++ b/Projektstruktur-und-Best-Practices.-.md @@ -1,234 +1,234 @@ -# Projektstruktur - -*Hinweis: Dies ist lediglich ein Vorschlag meinerseits, um eine klare, sichere und nachvollziehbare Struktur für unser PHP-/AD-Projekt zu gewährleisten.* - -Dieses Dokument beschreibt die empfohlene Ordnerstruktur für das Gitea-Repository und für den späteren IIS-Server, sodass jedes Teammitglied genau versteht, was wohin gehört und warum. - ---- - -# 1. Ordnerstruktur im Gitea-Repository - -``` -ad-admin-panel\ -├── public\ -│ ├── index.php -│ ├── css\ -│ ├── js\ -│ ├── images\ -│ └── assets\ -├── app\ -│ ├── Controllers\ -│ ├── Services\ -│ │ ├── Ldap\ -│ │ ├── Powershell\ -│ │ └── Snmp\ -│ ├── Models\ -│ └── Helpers\ -├── config\ -│ ├── config.example.php -│ └── config.php -├── scripts\ -│ └── powershell\ -├── storage\ -│ ├── logs\ -│ └── uploads\ -├── docs\ -│ ├── Architektur.md -│ ├── Deployment.md -│ └── API-Endpunkte.md -├── .gitignore -└── README.md -``` - ---- - -## 1.1 Erklärung aller Ordner - -### **public/** -Dies ist das *Webroot* – der einzige Ordner, der direkt über den Browser erreichbar ist. - -Hier gehört hinein: -- `index.php` als Einstiegspunkt -- CSS-Dateien -- JavaScript-Dateien -- Bilder -- Frontend-Assets - -**Warum:** -Sicherheit. Alles, was sensibel ist (Config, PowerShell, Logs), liegt *außerhalb* des Webroots. - ---- - -### **app\** -Hier liegt die komplette PHP-Anwendungslogik. - -#### **app\Controllers\** -- Verarbeiten Requests aus dem Frontend -- Rufen passende Services auf -- Geben Views oder JSON zurück - -Beispiel: `UserController.php` zeigt Benutzerliste an oder verarbeitet Formulare. - -#### **app\Services\** -Hier steckt die "Fachlogik" des Projekts. - -- keine HTML-Ausgabe -- alles, was LDAP, SNMP, PowerShell oder CSV betrifft - -Unterordner: - -**Ldap\** -- LDAP-Verbindungen -- User anlegen/ändern/löschen -- Passwörter setzen -- Gruppen verwalten - -**Powershell\** -- PHP-Wrapper für `.ps1`-Skripte -- Benutzerverwaltung per AD-Cmdlets - -**Snmp\** -- SNMP-Status auslesen -- CPU/RAM/Platten/etc. abrufen - -#### **app\Models\** -Reine Datenobjekte, z.B.: -- `User.php` -- `ServerStatus.php` - -Hier werden keine Aktionen ausgeführt – nur Struktur & Daten. - -#### **app\Helpers\** -Werkzeuge für: -- Validation -- kleine Utility-Funktionen -- Logging-Helfer - ---- - -### **config\** -Globale Einstellungen. - -**config.example.php** -– liegt im Repo -– enthält die Struktur, aber keine Passwörter - -**config.php** -– echte Config -– kommt in `.gitignore` -– enthält LDAP-Credentials, SNMP-Settings, Pfade usw. - ---- - -### **scripts\** -Nicht-öffentliche Skripte, die vom PHP-Code aufgerufen werden. - -#### **scripts\powershell\** -Hier liegen alle `.ps1` Dateien: - -- `New-AdUser.ps1` -- `Set-AdUser.ps1` -- `Disable-AdUser.ps1` -- `Import-UsersFromCsv.ps1` - -Diese Skripte laufen auf dem Server – **niemals im Webroot**. - ---- - -### **storage\** -Dynamische Dateien, die während der Laufzeit entstehen. - -#### **storage\logs\** -- PHP-Logs -- Fehlerprotokolle -- Aktionen (z.B. wer welchen User angelegt hat) - -#### **storage\uploads\** -- hochgeladene CSV-Dateien für Massenimporte -- ggf. später Export-Dateien - -**Wichtig:** -Dieser Ordner wird **nie** versioniert und kommt in `.gitignore`. - ---- - -### **docs\** -Projektdokumentation. - -Hier können alle Markdown-Dokumente rein: -- `Architektur.md` -- `Deployment.md` -- `API-Endpunkte.md` -- Diagramme, Erklärungen, Beispiele - -Diese Unterlagen landen später im Wiki. - ---- - -### **README.md** -Beschreibung des Projekts -– Was ist das? -– Wie installiert man es? -– Wie läuft es? - -### **.gitignore im Repository-Root** -Im Hauptverzeichnis des Repositories liegt eine `.gitignore`-Datei. Sie sorgt dafür, dass keine temporären oder sensiblen Daten versioniert werden: -``` -\vendor\ -\.idea\ -\.vscode\ -\storage\ -\config.php -``` - ---- - -# 2. Struktur auf dem IIS-Server - -``` -C:\Web\AdAdminPanel -├── public\ # Webroot im IIS -├── app\ -├── config\ -├── scripts\ -│ └── powershell\ -├── storage\ -│ ├── logs\ -│ └── uploads\ -└── vendor\ -``` - -### Wichtige Punkte: - -- IIS zeigt **nur auf `public\`** -- `config\`, `scripts\`, `storage\` bleiben *unsichtbar* für den Browser -- PowerShell läuft über einen eigenen Service-Account -- AppPool-Identität erhält nur minimal benötigte Rechte - ---- - -# 3. Warum diese Struktur gut für das Projekt ist - -- sicher (Webroot klar getrennt) -- einfach zu verstehen -- klarer Ort für jede Art Datei -- PowerShell sauber gekapselt -- CSV-Verarbeitung logisch eingebettet -- SNMP & LDAP sauber strukturiert -- guter Team-Workflow -- Deployment klar und eindeutig - ---- - -# 4. Zusammenfassung - -Diese Ordnerstruktur ermöglicht: - -- Klarheit -- Sicherheit -- Wartbarkeit -- Teamfähigkeit -- saubere Trennung von Frontend, Logik und Server-Skripten - -Sie sorgt dafür, dass jeder sofort versteht, **wohin was gehört** – ohne Chaos und ohne Risiko, dass Passwörter oder Skripte versehentlich öffentlich sind. - +# Projektstruktur + +*Hinweis: Dies ist lediglich ein Vorschlag meinerseits, um eine klare, sichere und nachvollziehbare Struktur für unser PHP-/AD-Projekt zu gewährleisten.* + +Dieses Dokument beschreibt die empfohlene Ordnerstruktur für das Gitea-Repository und für den späteren IIS-Server, sodass jedes Teammitglied genau versteht, was wohin gehört und warum. + +--- + +# 1. Ordnerstruktur im Gitea-Repository + +``` +ad-admin-panel\ +├── public\ +│ ├── index.php +│ ├── css\ +│ ├── js\ +│ ├── images\ +│ └── assets\ +├── app\ +│ ├── Controllers\ +│ ├── Services\ +│ │ ├── Ldap\ +│ │ ├── Powershell\ +│ │ └── Snmp\ +│ ├── Models\ +│ └── Helpers\ +├── config\ +│ ├── config.example.php +│ └── config.php +├── scripts\ +│ └── powershell\ +├── storage\ +│ ├── logs\ +│ └── uploads\ +├── docs\ +│ ├── Architektur.md +│ ├── Deployment.md +│ └── API-Endpunkte.md +├── .gitignore +└── README.md +``` + +--- + +## 1.1 Erklärung aller Ordner + +### **public/** +Dies ist das *Webroot* – der einzige Ordner, der direkt über den Browser erreichbar ist. + +Hier gehört hinein: +- `index.php` als Einstiegspunkt +- CSS-Dateien +- JavaScript-Dateien +- Bilder +- Frontend-Assets + +**Warum:** +Sicherheit. Alles, was sensibel ist (Config, PowerShell, Logs), liegt *außerhalb* des Webroots. + +--- + +### **app\** +Hier liegt die komplette PHP-Anwendungslogik. + +#### **app\Controllers\** +- Verarbeiten Requests aus dem Frontend +- Rufen passende Services auf +- Geben Views oder JSON zurück + +Beispiel: `UserController.php` zeigt Benutzerliste an oder verarbeitet Formulare. + +#### **app\Services\** +Hier steckt die "Fachlogik" des Projekts. + +- keine HTML-Ausgabe +- alles, was LDAP, SNMP, PowerShell oder CSV betrifft + +Unterordner: + +**Ldap\** +- LDAP-Verbindungen +- User anlegen/ändern/löschen +- Passwörter setzen +- Gruppen verwalten + +**Powershell\** +- PHP-Wrapper für `.ps1`-Skripte +- Benutzerverwaltung per AD-Cmdlets + +**Snmp\** +- SNMP-Status auslesen +- CPU/RAM/Platten/etc. abrufen + +#### **app\Models\** +Reine Datenobjekte, z.B.: +- `User.php` +- `ServerStatus.php` + +Hier werden keine Aktionen ausgeführt – nur Struktur & Daten. + +#### **app\Helpers\** +Werkzeuge für: +- Validation +- kleine Utility-Funktionen +- Logging-Helfer + +--- + +### **config\** +Globale Einstellungen. + +**config.example.php** +– liegt im Repo +– enthält die Struktur, aber keine Passwörter + +**config.php** +– echte Config +– kommt in `.gitignore` +– enthält LDAP-Credentials, SNMP-Settings, Pfade usw. + +--- + +### **scripts\** +Nicht-öffentliche Skripte, die vom PHP-Code aufgerufen werden. + +#### **scripts\powershell\** +Hier liegen alle `.ps1` Dateien: + +- `New-AdUser.ps1` +- `Set-AdUser.ps1` +- `Disable-AdUser.ps1` +- `Import-UsersFromCsv.ps1` + +Diese Skripte laufen auf dem Server – **niemals im Webroot**. + +--- + +### **storage\** +Dynamische Dateien, die während der Laufzeit entstehen. + +#### **storage\logs\** +- PHP-Logs +- Fehlerprotokolle +- Aktionen (z.B. wer welchen User angelegt hat) + +#### **storage\uploads\** +- hochgeladene CSV-Dateien für Massenimporte +- ggf. später Export-Dateien + +**Wichtig:** +Dieser Ordner wird **nie** versioniert und kommt in `.gitignore`. + +--- + +### **docs\** +Projektdokumentation. + +Hier können alle Markdown-Dokumente rein: +- `Architektur.md` +- `Deployment.md` +- `API-Endpunkte.md` +- Diagramme, Erklärungen, Beispiele + +Diese Unterlagen landen später im Wiki. + +--- + +### **README.md** +Beschreibung des Projekts +– Was ist das? +– Wie installiert man es? +– Wie läuft es? + +### **.gitignore im Repository-Root** +Im Hauptverzeichnis des Repositories liegt eine `.gitignore`-Datei. Sie sorgt dafür, dass keine temporären oder sensiblen Daten versioniert werden: +``` +\vendor\ +\.idea\ +\.vscode\ +\storage\ +\config.php +``` + +--- + +# 2. Struktur auf dem IIS-Server + +``` +C:\Web\AdAdminPanel +├── public\ # Webroot im IIS +├── app\ +├── config\ +├── scripts\ +│ └── powershell\ +├── storage\ +│ ├── logs\ +│ └── uploads\ +└── vendor\ +``` + +### Wichtige Punkte: + +- IIS zeigt **nur auf `public\`** +- `config\`, `scripts\`, `storage\` bleiben *unsichtbar* für den Browser +- PowerShell läuft über einen eigenen Service-Account +- AppPool-Identität erhält nur minimal benötigte Rechte + +--- + +# 3. Warum diese Struktur gut für das Projekt ist + +- sicher (Webroot klar getrennt) +- einfach zu verstehen +- klarer Ort für jede Art Datei +- PowerShell sauber gekapselt +- CSV-Verarbeitung logisch eingebettet +- SNMP & LDAP sauber strukturiert +- guter Team-Workflow +- Deployment klar und eindeutig + +--- + +# 4. Zusammenfassung + +Diese Ordnerstruktur ermöglicht: + +- Klarheit +- Sicherheit +- Wartbarkeit +- Teamfähigkeit +- saubere Trennung von Frontend, Logik und Server-Skripten + +Sie sorgt dafür, dass jeder sofort versteht, **wohin was gehört** – ohne Chaos und ohne Risiko, dass Passwörter oder Skripte versehentlich öffentlich sind. + From 74ad4f283a115e982a466c6c5cc0aefd201c0de7 Mon Sep 17 00:00:00 2001 From: blaerf Date: Sun, 16 Nov 2025 14:00:51 +0000 Subject: [PATCH 2/2] =?UTF-8?q?Anforderungen=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Anforderungen.md | 118 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Anforderungen.md diff --git a/Anforderungen.md b/Anforderungen.md new file mode 100644 index 0000000..4658da6 --- /dev/null +++ b/Anforderungen.md @@ -0,0 +1,118 @@ +# Administrations-Tool für Active Directory und Serververwaltung + +Die IT-Abteilung legt neue Benutzerkonten derzeit manuell im Active Directory an. Dieser Vorgang ist zeitintensiv, fehleranfällig und erschwert eine effiziente Massenverarbeitung. Auch die Serveradministration erfolgt überwiegend reaktiv. Um diese Abläufe zu verbessern, entsteht ein webbasiertes Verwaltungstool, das die Benutzeranlage automatisiert und zentrale Wartungsfunktionen bereitstellt. + +## Projektziel +Ziel ist die Entwicklung eines Administrationstools zur: +- automatisierten Anlage und Bearbeitung von Active-Directory-Benutzern, +- zentralen Ausführung von Serverwartungen. + +Die Umsetzung erfolgt in HTML, CSS und PHP. Die Kommunikation mit dem Active Directory erfolgt über LDAP, während Powershell-Befehle für administrative Operationen genutzt werden. + +## Funktionsumfang + +### Benutzerverwaltung +- Anlage neuer Benutzer über Eingabefelder +- CSV-Import für Massenverarbeitungen +- automatische Übernahme der CSV-Daten in die Eingabefelder +- Validierung der Eingabedaten +- Übertragung der Benutzerinformationen an das AD +- Zuordnung zu Gruppen +- optionale Einstellung von Anmeldezeiten + +### Datenfelder +- Login-Name +- Passwort +- Vorname +- Nachname +- Gruppe +- (optional) Anmeldezeiten + +### Serververwaltung +- Ausführen vordefinierter Powershell-Routinen +- Abrufen von Systemmetriken (CPU, RAM, Dienste, Speicher) +- Dokumentation der Testergebnisse +- Unterstützung präventiver Wartungsprozesse + +## Projektphasen + +### Testumgebung erstellen +- Virtuelle Maschine einrichten +- Windows Server installieren +- Active Directory konfigurieren +- LDAP-Anbindung testen + +### Tests +- Powershell-Befehle prüfen +- CSV-Importvalidierung testen +- AD-Anbindungen dokumentiert verifizieren + +### Entwicklung +- Entwurf der Weboberfläche +- Implementierung der CSV-Importlogik +- Anbindung an LDAP und Powershell +- Integration aller Funktionen + +### Übergabe +- Funktionstests +- Dokumentation +- Präsentation + +--- + +# Erweiterungsmöglichkeiten + +## Ausführliches Logging +Ein integriertes Logging ermöglicht die Nachvollziehbarkeit aller Aktionen: +- angelegte Benutzer +- ausgeführte Powershell-Befehle +- Fehlermeldungen und LDAP-Issues + +## Erweiterte AD-Benutzerdaten +Optional können zusätzliche Attribute gesetzt werden: +- Abteilung +- Telefonnummer +- E-Mail +- Standort + +## Dynamisches Einlesen aus dem AD +Das Tool kann OUs und Gruppen automatisch anzeigen und zur Auswahl bereitstellen. + +## CSV-Validierungscheck +Vor der Verarbeitung sollten geprüft werden: +- Pflichtfelder vorhanden? +- ungültige Zeichen? +- doppelte Einträge? +- existieren Logins bereits im AD? + +## Benutzerübersicht (Read-Only) +Eine AD-Liste mit Such- und Filterfunktion: +- Benutzername +- Name +- Gruppen +- Status + +## Server-Health-Dashboard +Ein Dashboard mit: +- CPU-Last +- RAM-Auslastung +- Dienste-Status +- Festplattenbelegung +- Server-Ping +- kritische Eventlogs + +## Powershell-Wartungsroutinen +- Dienste neustarten +- Eventlogs prüfen +- AD-Replikation testen +- Berechtigungen analysieren +- Netzwerkstatus abfragen + +## Rollen-Vorlagen (für AD-Gruppen) +Automatische Gruppenzuweisung durch auswählbare Rollen, z. B.: +- Azubi +- IT +- Vertrieb + +Diese Funktion erleichtert standardisierte Benutzeranlagen, ohne Rollen im Tool selbst zu verwalten. +