# Blacklist - Installations- und Konfigurationshandbuch

Schritt-für-Schritt-Anleitung zur Installation des Blacklist-Moduls im STARFACE Module Designer.

---

## Voraussetzungen

- STARFACE 8.x, 9.x oder 10.x
- Admin-Zugriff auf STARFACE
- Kompilierte `BlacklistBlock.class` (siehe `./build-block.sh`)

> Es ist **keine** zusätzliche Bibliothek nötig (anders als bei Mail2Fax kein JavaMail).
> Es wird auch **kein** SSH-Zugriff zum Installieren von Libs benötigt.

---

## Teil 1: Modul-Erstellung im Module Designer

### Schritt 1: Neues Modul erstellen

STARFACE Admin → **Module → Module Designer → Neues Modul**

- **Modul-Name**: `Blacklist`
- **Beschreibung**: "Sperrt/behandelt eingehende Anrufe anhand einer Blacklist und anonyme Anrufe"
- **Version**: `1.0.0`

### Schritt 2: Class-Datei hochladen

Tab **Ressourcen** → **Datei hochladen** → `BlacklistBlock.class`

Optional (nur für die Aktion `ANNOUNCE`): eine Ansage-Audiodatei (WAV) hochladen.
Der Dateiname wird später im Feld **Ansage-Datei** eingetragen.

### Schritt 3: Funktion erstellen

Tab **Funktionen** → neue Funktion `Blacklist` anlegen und den Block `BlacklistBlock`
in den Ablauf ziehen.

### Schritt 4: GUI-Elemente (Eingabefelder) anlegen

Lege die Konfigurationsfelder an und verknüpfe sie mit den `@InputVar`-Feldern des Blocks:

| Feldname | Typ | Label | Auswahlwerte |
|----------|-----|-------|--------------|
| `blacklistEntries` | STRING (mehrzeilig) | Blacklist-Einträge | |
| `defaultAction` | STRING | Standard-Aktion | HANGUP, BUSY, REDIRECT, ANNOUNCE |
| `defaultRedirectTarget` | STRING | Standard-Umleitungsziel | |
| `announcementFile` | STRING | Ansage-Datei | |
| `anonymousAction` | STRING | Aktion bei anonymen Anrufen | NONE, HANGUP, BUSY, REDIRECT, ANNOUNCE |
| `anonymousRedirectTarget` | STRING | Umleitungsziel anonyme Anrufe | |
| `countryCode` | STRING | Ländervorwahl | (Default 49) |
| `prefixMatch` | BOOLEAN | Bereichssperre erlauben | (Default an) |

> Die Auswahlwerte (`possibleValues`) sind bereits im Block hinterlegt und erscheinen
> i.d.R. automatisch als Dropdown. Falls nicht, als normales Textfeld anlegen.

### Schritt 5: GUI-Felder zuweisen

Jedes GUI-Element mit dem gleichnamigen Block-Parameter verbinden. Alle `@InputVar`-Felder
sollten verknüpft sein.

### Schritt 6: Modul speichern

Modul speichern.

---

## Teil 2: Modul als Anruf-Modul aktivieren

Damit der Block bei eingehenden Anrufen läuft, muss das Modul als **Call-Processing-Modul**
eingebunden werden.

### Variante A: Für alle eingehenden Anrufe

1. Module → **Modulkonfigurationen** → **[+] Neu**
2. Modul `Blacklist` auswählen, Instanz benennen (z.B. "Blacklist - Zentrale")
3. Felder ausfüllen (siehe Teil 3)
4. Bei den Modul-Einstellungen den Typ **Call-Processing** wählen und die Aktivierung auf
   **"bei allen eingehenden Anrufen"** setzen.
5. Modul **aktivieren**.

### Variante B: Pro Benutzer/Gruppe (Rufverteilung)

Alternativ kann das Modul gezielt in die **Rufverteilung** eines Benutzers oder einer
Gruppe eingehängt werden (Administration → Benutzer/Gruppe → Rufverteilung → Modul
einfügen, **vor** der eigentlichen Zustellung). So gilt die Blacklist nur für diese
Nummern.

> **Wichtig:** Bei einem Treffer mit Aktion `HANGUP`/`BUSY`/`REDIRECT`/`ANNOUNCE` wird der
> Anruf beendet bzw. umgeleitet und erreicht die nachgelagerte Zustellung nicht mehr.
> Bei `ALLOW`/`NONE`/keinem Treffer läuft der Anruf normal weiter.

---

## Teil 3: Konfiguration (Beispiel)

**Blacklist-Einträge:**
```
# Werbeanrufe-Bereiche komplett sperren
0190;BUSY
0900;BUSY
# einzelner Störer: auflegen
+49301234567;HANGUP
# Ausnahme: dieser eine Anschluss aus dem 089-Raum ist ok
+4989123456;ALLOW
089;ANNOUNCE
# nervige Nummer auf die Zentrale umleiten
+4972198765;REDIRECT;100
```

**Standard-Aktion (Blacklist):** `HANGUP`
**Standard-Umleitungsziel:** `100`
**Ansage-Datei:** `blacklist_ansage.wav` (zuvor als Ressource hochgeladen)

**Aktion bei anonymen Anrufen:** `BUSY`
*(oder `REDIRECT` mit Ziel, oder `NONE` zum Durchstellen)*

**Ländervorwahl:** `49`
**Bereichssperre erlauben:** ✓ an

Mit dieser Konfiguration:
- `0190…`/`0900…`/anonyme Anrufer hören Besetzt
- `+49 30 1234567` wird aufgelegt
- der gesamte `089…`-Bereich bekommt eine Ansage – **außer** `+49 89 123456` (Ausnahme oben)
- `+49 721 98765` wird auf Nebenstelle 100 umgeleitet

---

## Logs und Fehlersuche

**Log-Datei:**
```
/var/log/starface/starface.log
```

**Nützliche Meldungen:**
```bash
# alle Blacklist-Entscheidungen
grep "Blacklist:" /var/log/starface/starface.log

# Treffer
grep "Blacklist-Treffer" /var/log/starface/starface.log

# anonyme Anrufe
grep "Blacklist: Anonymer Anruf" /var/log/starface/starface.log
```

**Häufige Punkte:**
1. Block tut nichts / "kein Anruf-Kontext": Das Modul ist nicht als *Call-Processing* /
   "bei allen eingehenden Anrufen" eingebunden.
2. REDIRECT ohne Wirkung: Zielrufnummer/Nebenstelle prüfen, ggf. mit Amtskennziffer.
3. ANNOUNCE ohne Ton: Audiodatei als Ressource hochgeladen und Dateiname im Feld korrekt?
4. Nummer wird nicht erkannt: `countryCode` prüfen und im Log die normalisierte
   `intl='…'`-Form mit dem Eintrag vergleichen.
</content>
