# Einstellungen, Dienste und Datenbanktabellen von OpenPlatform

> Die Konfigurationsschlüssel, die OpenPlatform liest, was seine Hintergrunddienste tun und wofür jede Tabelle des Schemas op da ist.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: de
Content-SHA256: 90e3bbe256ad2d7b6760911543ea1b61a36d768d0f3ec7cbf59c2c8840e9e9b9
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Die Einstellungen

OpenPlatform hält seine Konfiguration in der Tabelle `cl_config` und lädt sie beim Start und alle acht Stunden in das `CONF` von Total.js (`definitions/init.js`). Der Setup-Bildschirm liest und speichert diese Schlüssel (`plugins/setup/schemas/settings.js`):

| Schlüssel | Bedeutung |
|---|---|
| `name`, `icon`, `color` | Name, Logo und Farbe der Plattform |
| `url` | die öffentliche Adresse der Plattform (ohne das abschließende `/`). Eine Änderung löscht die Benachrichtigungslinks und die offenen Anwendungssitzungen |
| `language` | die Standardsprache |
| `mail_smtp`, `mail_smtp_options`, `mail_from` | der SMTP-Server, seine Optionen (JSON) und der Absender; der Setup-Bildschirm kann sie testen |
| `$tms`, `secret_tms` | die Ereignisse per TMS veröffentlichen und das Geheimnis dieser Verbindung |
| `allow_token`, `token` | die öffentliche API `GET /users/` und ihr Token aktivieren |
| `newtab` | jede Anwendung in einem neuen Tab öffnen |
| `sync`, `sync_token` | den `/sync/`-Socket anderer Instanzen mit seinem Token akzeptieren |

Der erste Start (`database.sql`) erzeugt in `cl_config` außerdem Werte, die der Setup-Bildschirm nicht bearbeitet: die `id` der Installation, das `secret` der Authentifizierung, den Namen des `cookie`, das `salt` der Passwörter, das `saltchecksum` der Prüfsummen und das Geheimnis der TMS-Verbindung. Er legt die Schlüssel mit diesen Standardwerten an:

| Schlüssel | Standard | Bedeutung |
|---|---|---|
| `auth_cookie_expire` | `1 month` | wie lange das Sitzungs-Cookie lebt |
| `auth_expire` | `5 minutes` | wie lange der angemeldete Benutzer im Speicher gehalten wird, bevor er neu gelesen wird |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | die Optionen des Sitzungs-Cookies |
| `auth_strict` | `false` | strikte Sitzungen |
| `app_session_expire` | `1 day` | wie lange eine Anwendungssitzung dauert |
| `cdn` | `https://cdn.componentator.com/` | das CDN der Oberfläche |
| `language` | `eu` | die Standardsprache |
| `token`, `sync_token` | erzeugt | das Token der Benutzer-API und des Sync-Sockets (beide Funktionen sind standardmäßig aus) |

Der Schlüssel `servicetoken`, mit dem der Endpunkt für den Bild-Upload sein Query-Token vergleicht, wird vom Skript **nicht** angelegt und der Setup-Bildschirm bearbeitet ihn nicht: Er existiert nur, wenn Sie ihn selbst in `cl_config` ergänzen.

Das Skript legt außerdem die Gruppe **Admin** und den ersten Benutzer (`info@totaljs.com`, Administrator, bestätigt) an, der dazugehört; siehe [Installation](/en/openplatform/install-openplatform/).

## Die Hintergrunddienste

Total.js führt jede Minute einen Dienst aus. OpenPlatform nutzt ihn (`definitions/init.js`), um:

- den Speicher-Cache der Verifizierungen zu leeren (alle 2 Minuten);
- die Tagesstatistiken zu speichern: Benutzer online, das Maximum und die Anzahl nach Gerät (alle 3 Minuten);
- die Konfiguration aus der Datenbank neu zu laden (alle 8 Stunden);
- die abgelaufenen Anwendungs- und Plattformsitzungen zu löschen (alle 12 Stunden);
- die E-Mail-Zusammenfassungen ungelesener Benachrichtigungen zu senden (alle 11 Minuten, wenn die Mail konfiguriert ist).

## Die Datenbank

Alles liegt im PostgreSQL-Schema `op`:

| Tabelle | Was sie enthält |
|---|---|
| `cl_config` | die Konfiguration (Schlüssel, Wert, Typ) |
| `tbl_user` | die Benutzer: Profil, Passwort-Hash, Flags, Zähler und die gecachten Berechtigungen |
| `tbl_group` | die Gruppen |
| `tbl_user_group` | welcher Benutzer zu welcher Gruppe gehört |
| `tbl_session` | die Sitzungen der Benutzer im Portal (Gerät, Adresse, Ablauf) |
| `tbl_app` | die Anwendungen: Adresse, Geheimnisse, Flags und erlaubte Adressen |
| `tbl_app_permission` | die Berechtigungen, die jede Anwendung deklariert |
| `tbl_group_permission` | welche Berechtigungen (oder nur welche Anwendungen) jede Gruppe gewährt |
| `tbl_app_session` | die Startsitzungen der Anwendungen und ihre abgeleiteten Tokens |
| `tbl_user_app` | pro Benutzer und Anwendung: die Benachrichtigungslinks und ob sie Benachrichtigungen akzeptieren |
| `tbl_notification` | die Benachrichtigungen |
| `tbl_visitor` | die täglichen Besucherstatistiken |
| `tbl_feedback` | das Feedback, das Benutzer aus dem Portal senden |

Die datierten Dateien `database-2023-09-15.sql`, `database-2024-03-21.sql`, `database-2024-10-22.sql` und `database-2024-10-30.sql` im Repository sind die Änderungen des Schemas im Lauf der Zeit, und `database.sql` ist das vollständige Skript, das der erste Start ausführt. Sichern Sie dieses Schema wie jede andere PostgreSQL-Datenbank.
