commit 45a4808480a99676cd7effe48dba5839e432ea6f Author: benji Date: Sun Aug 16 19:55:11 2026 +0000 Dateien nach „/“ hochladen diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de1864d --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.env +msedgedriver.exe +*pycache* +*.json +*.csv +output +venv +logs +node_modules \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..fa2d110 --- /dev/null +++ b/readme.md @@ -0,0 +1,162 @@ +# 📖 Deprecated APIs SAP DM + +## 📑 Inhaltsverzeichnis +- [📖 Deprecated APIs SAP DM](#-deprecated-apis-sap-dm) + - [📑 Inhaltsverzeichnis](#-inhaltsverzeichnis) + - [🚀 Projektübersicht](#-projektübersicht) + - [🏗 Architektur \& Tech-Stack](#-architektur--tech-stack) + - [Tech-Stack](#tech-stack) + - [Systemarchitektur \& Abläufe](#systemarchitektur--abläufe) + - [1. Architektur-Übersicht](#1-architektur-übersicht) + - [2. Datengewinnung (Phase 1)](#2-datengewinnung-phase-1) + - [3. Datenabruf (Phase 2)](#3-datenabruf-phase-2) + - [🔒 Sicherheit \& Zugriffsschutz](#-sicherheit--zugriffsschutz) + - [1. Umgang mit vertraulichen Daten (Secrets)](#1-umgang-mit-vertraulichen-daten-secrets) + - [2. API-Sicherheit (FastAPI)](#2-api-sicherheit-fastapi) + - [3. Container- \& Infrastruktur-Sicherheit](#3-container---infrastruktur-sicherheit) + - [📁 Projektstruktur](#-projektstruktur) + - [💻 Lokale Entwicklung \& Setup](#-lokale-entwicklung--setup) + - [Voraussetzungen](#voraussetzungen) + - [Installation](#installation) + - [API Starten](#api-starten) + - [🐳 Docker Deployment](#-docker-deployment) + - [🛠 Skripte \& Demos](#-skripte--demos) + - [Hinweise](#hinweise) + +--- + +## 🚀 Projektübersicht +Dieses Projekt dient der Überwachung, dem Vergleich und der Verwaltung von veralteten (deprecated) APIs im Umfeld von SAP Digital Manufacturing (SAP DM). Es kombiniert Web-Scraping zur automatisierten Datenerfassung mit einem FastAPI-Backend, um Endpunkte zu vergleichen und die Ergebnisse bereitzustellen. Zudem bietet es Skripte zum Scannen von Repositories an. + +--- + +## 🏗 Architektur & Tech-Stack + +### Tech-Stack +* **Backend:** Python 3, FastAPI (`src/API/fastAPI.py`) +* **Scraping / Automation:** Python, Microsoft Edge WebDriver (`src/msedgedriver.exe`) +* **Containerisierung:** Docker, Docker Compose (`docker/Dockerfile`, `docker/docker-compose.yml`) +* **Skripting:** PowerShell, Node.js (`demo/scan_repositories/`) + +### Systemarchitektur & Abläufe +Die folgenden Diagramme veranschaulichen den grundsätzlichen Datenfluss und die Architektur der Anwendung, aufgeteilt in die automatisierte Datengewinnung und den eigentlichen API-Abruf. + +#### 1. Architektur-Übersicht +![Architektur](doc/assets/mermaid_diagramms/png/architecture.png) + +#### 2. Datengewinnung (Phase 1) +![Sequence_1](doc/assets/mermaid_diagramms/png/sequence_phase_1.png) + +#### 3. Datenabruf (Phase 2) +![Sequence_2](doc/assets/mermaid_diagramms/png/sequence_phase_2.png) + +--- + +## 🔒 Sicherheit & Zugriffsschutz +Das System verarbeitet Schnittstellendaten und interagiert mit externen SAP-Diensten. +Folgende Sicherheitsmaßnahmen sind implementiert bzw. beim Deployment zu beachten: +### 1. Umgang mit vertraulichen Daten (Secrets) +- Keine Hardcoded Credentials: Sensible Daten (API-Keys, Passwörter, Tokens) dürfen niemals direkt im Quellcode committet werden. +- Umgebungsvariablen (.env): Die Konfiguration erfolgt ausschließlich über die Datei src/.env. +- Git-Protection: Um versehentliches Hochladen in das Repository zu verhindern, ist die Datei `src/.env` im `.gitignore` eingetragen. Ein Beispiel ist enthalten. + +### 2. API-Sicherheit (FastAPI) +- CORS (Cross-Origin Resource Sharing): In der Produktion sollten in src/API/fastAPI.py nur explizit erlaubte Origins zugelassen werden (kein allow_origins=["*"]). +- Input-Validierung: FastAPI nutzt Pydantic zur automatischen Typprüfung und Sanitization eingehender HTTP-Payloads, um Injection-Angriffe zu verhindern. +- HTTPS / TLS: Im Produktionsbetrieb muss die API zwingend über HTTPS bereitgestellt werden (z. B. über einen vorgeschalteten Reverse Proxy wie Nginx oder Traefik mit SSL-Zertifikat). + +### 3. Container- & Infrastruktur-Sicherheit +- Non-Root User in Docker: Der Container (docker/Dockerfile) sollte die Anwendung nach Möglichkeit unter einem nicht-privilegierten Benutzer ausführen. +- Minimales Base-Image: Es wird empfohlen, schlanke Base-Images (z. B. python:3.9-slim) zu verwenden, um die Angriffsfläche durch ungenutzte System-Pakete zu minimieren. +- Headless Driver: Der Microsoft Edge Driver (msedgedriver.exe) läuft im isolierten Headless-Modus ohne interaktive Benutzersession. + +--- + +## 📁 Projektstruktur + +Hier ist ein detaillierter Überblick über die wichtigsten Verzeichnisse und Dateien im Repository: + +* **`src/`**: Hauptverzeichnis des Quellcodes. + * **`.env`**: Umgebungsvariablen für das Projekt (z.B. Zugangsdaten, Ports). + * **`msedgedriver.exe`**: Treiber für automatisierte Browser-Interaktionen. + * **`API/`**: Beinhaltet die Backend-Logik. + * `fastAPI.py`: Haupteinstiegspunkt für den API-Server. + * `endpoint_compare.py`: Logik zum Vergleichen von aktuellen und veralteten API-Endpunkten. + * **`core/`**: Kernfunktionalitäten. + * `fetchWhatsNew.py`: Skript zum Abrufen von Neuigkeiten/Änderungen (Scraping/API-Calls). +* **`docker/`**: Konfiguration für die Container-Bereitstellung. + * `Dockerfile`: Definition des Images für die FastAPI-Anwendung. + * `docker-compose.yml`: Multi-Container-Orchestrierung. + * **`logs/`**: Mount-Point für Container-Logs. +* **`demo/`**: Skripte und Beispiele zur Nutzung und zum Testen. + * **`scan_repositories/`**: Tools zum Durchsuchen von Code-Basen. + * `get_all_repositories.ps1`: PowerShell-Skript zum Abrufen von Repositories. + * `scan_repo.js`: Node.js-Skript zur Analyse der gefundenen Repos. + * **`test_api/`**: + * `testaufruf.js`: JavaScript-Beispielaufruf gegen das FastAPI-Backend. + * **`systemctl_service/`**: + * `sap-api.service`: Vorlage für die Einrichtung als Linux Systemd-Dienst. +* **`requirements.txt`**: Python-Abhängigkeiten. + +--- + +## 💻 Lokale Entwicklung & Setup + +### Voraussetzungen +* Python 3.8 oder höher +* Node.js (für Demo-Skripte) +* Microsoft Edge Browser (passend zur `msedgedriver.exe`) + +### Installation +1. Repository klonen. +2. Virtuelle Umgebung erstellen und aktivieren: + ```bash + # Unter Linux/macOS: + python -m venv venv + source venv/bin/activate + + # Unter Windows (PowerShell): + python -m venv venv + . env\Scripts activate + ``` +3. Abhängigkeiten installieren: + ```bash + pip install -r requirements.txt + ``` +4. Umgebungsvariablen anpassen: Kopiere oder bearbeite die Datei `src/.env` mit den entsprechenden Credentials. + +### API Starten +Führe die FastAPI-Anwendung aus dem `src`-Verzeichnis aus: +```bash +cd src +uvicorn API.fastAPI:app --reload +``` + +--- + +## 🐳 Docker Deployment + +Für eine isolierte und plattformunabhängige Bereitstellung wird Docker empfohlen. + +1. Wechsle in das Verzeichnis: + ```bash + cd docker + ``` +2. Starte die Container im Hintergrund: + ```bash + docker-compose up -d --build + ``` +Die API ist nun unter `http://localhost:` erreichbar. Logs finden sich im Verzeichnis `docker/logs/`. + +*Tipp: Um die Container wieder zu stoppen, nutze `docker-compose down` im gleichen Verzeichnis.* + +--- + +## 🛠 Skripte & Demos + +Im Ordner `demo/` befinden sich nützliche Hilfsskripte: +* **Repository Scanner:** Führe `./demo/scan_repositories/get_all_repositories.ps1` aus, um Repositories zu sammeln, und verarbeite diese anschließend mit `node scan_repo.js`. +* **API Test:** Mit `node ./demo/test_api/testaufruf.js` kann ein initialer Funktionstest der laufenden API durchgeführt werden. + +## Hinweise +Da aktuell die Abfrage über den Edge-Browser erfolgt, ist das Scraping nur bei installiertem Browser möglich. \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..7d1f954 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +fastapi>=0.100.0 +uvicorn[standard]>=0.20.0 +pydantic>=2.0 +python-dateutil