# 📖 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.