# Wilcon Client Agent **Version:** 0.3.3 **Letzte Aktualisierung:** 2025-06-29 ## 🛍 ProjektĂŒberblick Wilcon ist ein modularer Systemagent zur Überwachung von: - **System- und Hardwareinformationen** - **Netzwerkdaten** - **Laufenden Prozessen** - **BenutzeraktivitĂ€t (inkl. Steuerung via CLI)** Die Daten werden ĂŒber eine REST-API bereitgestellt und in einem modernen Web-Dashboard dargestellt. ZusĂ€tzlich ist ein optionales CLI-Tool zur Benutzerkontrolle integriert (`Safe Kiddo Agent`). --- ## 📁 Projektstruktur ```text . ├── main.py # (Legacy) einfacher Info-Endpunkt ├── wilcon.py # FastAPI-Server mit API-Key-Schutz & CORS fĂŒr 192.168.13.0/24 ├── sysinfo.py # System- und Hardwareinfos (CPU, RAM, Disk, GPU, User) ├── netinf.py # Netzwerk- und Verbindungserfassung ├── proginfo.py # ProzessĂŒberwachung mit Laufzeiten, CPU/RAM ├── user_control_agent.py # CLI-Tool zur Benutzersteuerung ├── index.html # Web-Dashboard (Frontend) ├── style.css # Design fĂŒr das Frontend ├── requirements.txt # AbhĂ€ngigkeiten (bereinigt, optional erweiterbar) ├── install_service.sh # Installer fĂŒr systemd (nicht mitgeliefert) ├── deploy.sh # Optionales Deploy-Skript (nicht mitgeliefert) ├── safe_kiddo_user_control.sh # Hilfsskript fĂŒr SafeKiddo CLI-Tool └── tests/ # Testverzeichnis mit pytest-Skripten ``` --- ## 🚀 Installation ### Voraussetzungen - Python 3.9+ - Linux empfohlen (getestet unter Ubuntu) - Root-Rechte fĂŒr `user_control_agent.py` ### Schritt 1 – Projekt klonen ```bash git clone https://dein-git-repo/wilcon-agent.git cd wilcon-agent ``` ### Schritt 2 – Virtuelle Umgebung (optional, empfohlen) ```bash python3 -m venv venv source venv/bin/activate ``` ### Schritt 3 – AbhĂ€ngigkeiten installieren ```bash pip install -r requirements.txt ``` #### Optional: Falls GPU-Informationen oder erweiterte CPU-/OS-Erkennung benötigt werden: ```bash pip install gputil py-cpuinfo distro ``` --- ## ▶ Anwendung starten ```bash export WILCON_API_KEY=test123 uvicorn wilcon:app --host 0.0.0.0 --port 8080 ``` Rufe dann das Webinterface auf unter: [http://localhost:5500/index.html](http://localhost:5500/index.html) (**Tipp:** Live Server in VS Code verwenden) **Hinweis:** Alle API-Endpunkte erfordern den HTTP-Header `x-api-key`: ```bash curl -H "x-api-key: test123" http://localhost:8080/sysinfo ``` --- ## 🌐 API-Endpunkte | Endpunkt | Beschreibung | | ----------- | --------------------------------------- | | `/sysinfo` | Hardware- und OS-Informationen | | `/netinfo` | Netzwerk-Interfaces, IPs, Gateways, DNS | | `/procinfo` | Laufende Prozesse mit CPU, RAM & Zeit | --- ## 💡 Web-Dashboard Das HTML-Dashboard bietet: - Übersicht ĂŒber Systemdaten - Scrollbare und filterbare Tabellen - Sortierbare Spalten (Prozesse, Netzwerk) - GPU- und Benutzerinformationen --- ## 🔐 Safe Kiddo CLI (user_control_agent.py) Ein Werkzeug zur lokalen Benutzerkontrolle, das u. a. folgende Funktionen bietet: - **Benutzer sperren/entsperren** - **Countdown mit Sound & Benachrichtigung** - **Shutdown nach Ablauf** ### Beispiel: ```bash sudo python3 user_control_agent.py testuser disable --countdown --sound --time 30 --debug ``` > Hinweis: `notify-send`, `paplay` o. À. mĂŒssen installiert sein. --- ## 💠 Entwicklerhinweise ### Logging Jedes Modul loggt separat: - `~/hardware_info.log` - `~/netinf.log` - `~/process_monitor.log` - `~/safe_kiddo_user_control.log` ### Debug-Modus Alle CLI-Module und das Backend unterstĂŒtzen `--debug`. ### Hinweis zu `hardware.py` Die Datei `hardware.py` war eine frĂŒhe Version von `sysinfo.py` und wurde durch letztere vollstĂ€ndig ersetzt. Sie kann aus dem Projekt entfernt werden. ### Erweiterungsideen - Authentifizierung (JWT, API-Key ✅) - Langzeit-Logging (Prometheus, SQLite) - Dockerisierung - Web-Control fĂŒr Safe Kiddo - IP-basierte Netzwerkfilterung via `allow_origin_regex` ✅ --- ## đŸ§Ș Tests & QualitĂ€tssicherung Das Projekt nutzt [pytest](https://pytest.org) fĂŒr automatisierte Tests. ### Struktur ```text tests/ ├── test_sysinfo.py # Tests fĂŒr System- und Hardwaredaten ├── test_netinf.py # Tests fĂŒr Netzwerkfunktionen ├── test_proginfo.py # Tests fĂŒr Prozessinformationen └── test_api.py # Tests fĂŒr die FastAPI-Endpunkte ``` ### Beispiel-Test ```python from sysinfo import get_hardware_info def test_sysinfo_contains_required_keys(): data = get_hardware_info() assert "cpu" in data assert "ram" in data ``` ### AusfĂŒhrung ```bash pytest -v ``` --- ## đŸ§‘â€đŸ’» Lizenz Dieses Projekt ist derzeit privat. FĂŒr Open-Source-Freigabe bitte Lizenz ergĂ€nzen. --- ## 📞 Kontakt Erstellt von \[Dein Name] Kontakt: \[[email@example.com](mailto:email@example.com)]