# Crumbforest Terminal Guide

Dieses Dokument erklärt die Nutzung und Konfiguration des Crumbforest-Terminals innerhalb des Docker-Setups.

## Inhaltsverzeichnis

1. [Voraussetzungen](#voraussetzungen)
2. [Starten des Terminals](#starten-des-terminals)
3. [Login-Menü](#login-menü)
4. [Benutzerauswahl](#benutzerauswahl)
5. [Editor (Nano) nutzen](#editor-nano-nutzen)
6. [Mission starten](#mission-starten)
7. [Session-Wrapper verwenden](#session-wrapper-verwenden)
8. [Sudo-Konfiguration für Skripte](#sudo-konfiguration-für-skripte)
9. [Troubleshooting](#troubleshooting)

---

## 1. Voraussetzungen

- Docker & Docker Compose installiert
- Repository geklont und im Projekt-Root
- Mindestens PHP 8.4 und Apache im Container
- `nano`, `bash`, `sudo` und weitere Tools im Image installiert (Dockerfile-Setup)

## 2. Starten des Terminals

Im Projekt-Verzeichnis:

```bash
# Container bauen und starten
docker-compose build
docker-compose up -d

# Shell im App-Container (Port 8080)
docker exec -it <app-container> bash --login -i
```

Zum Öffnen des webbasierten Terminal via ttyd (Port 7780) genügt im Browser:
```
http://localhost:7780
```

## 3. Login-Menü

Beim Start des Terminal-Skripts (`/scripts/terminal_login.sh`) erscheint:

```
🌟 Willkommen im Crumbforest Terminal!

1) 📝 Erste Mission starten
2) 🧪 Terminal erkunden
3) ❌ Beenden
```

## 4. Benutzerauswahl

Nach Auswahl von „Terminal erkunden“ wird mit `login` das interne Login aufgerufen:

```
🔑 Login extern in Arbeit
👤 Wähle Benutzer:
1) root
2) kruemel
3) jupiter
4) heimkind
```

Durch Eingabe der Nummer wechselt man direkt in die Home-Shell des entsprechenden Users.

## 5. Editor (Nano) nutzen

Nano ist im Image installiert (Pfad: `/usr/bin/nano`). Wichtig:

- Shell immer als **Login**- und **Interactive**-Shell starten, damit `PATH` korrekt gesetzt ist.
- Im Skript nutzt du:
  ```bash
  exec bash --login -i
  ```
- In jeder Session kannst du dann einfach `nano datei.txt` ausführen.

## 6. Mission starten

Das Kommando `mission` hängt von geladenen Sitzungsdaten ab und verlangt ggf. Root-Rechte.

### Variante A: Session-Wrapper direkt nutzen
```bash
/scripts/session_wrapper.sh /usr/local/bin/mission
```

### Variante B: `mission` per `sudo`
```bash
sudo mission
```

### Variante C: Menü-Option anpassen
In `terminal_login.sh` unter Punkt 1:
```diff
- /usr/local/bin/mission
+ exec /scripts/session_wrapper.sh /usr/local/bin/mission
```

## 7. Session-Wrapper verwenden

Der Wrapper lädt Auth-Daten und führt das Skript mit korrekten Rechten aus.

Pfad: `/scripts/session_wrapper.sh`

Beispiel:
```bash
/scripts/session_wrapper.sh /usr/local/bin/mission
```

## 8. Sudo-Konfiguration für Skripte

In der Dockerfile legst du fest:
```dockerfile
RUN echo 'www-data ALL=(ALL) NOPASSWD: /scripts/create_linux_user.sh' > /etc/sudoers.d/crumbforest
RUN echo 'kruemel ALL=(ALL) NOPASSWD: /usr/local/bin/mission' >> /etc/sudoers.d/crumbforest
``` 
Dadurch dürfen die Benutzer die jeweiligen Skripte ohne Passwort ausführen.

## 9. Troubleshooting

- **Nano nicht gefunden:** Shell nicht als Login/Interactive gestartet → `exec bash --login -i` verwenden.
- **`mission`: nicht eingeloggt:** Immer per Wrapper (`session_wrapper.sh`) oder `sudo` starten.
- **Tab-Completion fehlt:** `~/.bashrc` nicht eingelesen → siehe Login-Shell-Option.

---

Ende des Guides. Viel Spaß im Crumbforest! 🎉
