# Ustawienia, usługi i tabele bazy danych OpenPlatform

> Klucze konfiguracji, które odczytuje OpenPlatform, co robią jego usługi w tle i do czego służy każda tabela schematu op.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: pl
Content-SHA256: a22a438176c43c85840e19e547808b613ed30bfe1b1d3e17348565fa4d347edd
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## Ustawienia

OpenPlatform przechowuje konfigurację w tabeli `cl_config` i ładuje ją do `CONF` Total.js przy starcie i co osiem godzin (`definitions/init.js`). Ekran konfiguracji odczytuje i zapisuje te klucze (`plugins/setup/schemas/settings.js`):

| Klucz | Znaczenie |
|---|---|
| `name`, `icon`, `color` | nazwa, logo i kolor platformy |
| `url` | publiczny adres platformy (bez końcowego `/`). Jego zmiana czyści odnośniki powiadomień i otwarte sesje aplikacji |
| `language` | język domyślny |
| `mail_smtp`, `mail_smtp_options`, `mail_from` | serwer SMTP, jego opcje (JSON) i nadawca; ekran konfiguracji może je przetestować |
| `$tms`, `secret_tms` | publikowanie zdarzeń przez TMS i sekret tego połączenia |
| `allow_token`, `token` | włączenie publicznego API `GET /users/` i jego tokenu |
| `newtab` | otwieranie każdej aplikacji w nowej karcie |
| `sync`, `sync_token` | akceptowanie gniazda `/sync/` innych instancji, z jego tokenem |

Pierwsze uruchomienie (`database.sql`) generuje też w `cl_config` wartości, których ekran konfiguracji nie edytuje: `id` instalacji, `secret` uwierzytelniania, nazwę `cookie`, `salt` haseł, `saltchecksum` sum kontrolnych i sekret połączenia TMS. Tworzy klucze z tymi wartościami domyślnymi:

| Klucz | Domyślnie | Znaczenie |
|---|---|---|
| `auth_cookie_expire` | `1 month` | jak długo żyje cookie sesji |
| `auth_expire` | `5 minutes` | jak długo zalogowany użytkownik jest trzymany w pamięci, zanim zostanie odczytany ponownie |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | opcje cookie sesji |
| `auth_strict` | `false` | sesje ścisłe |
| `app_session_expire` | `1 day` | jak długo trwa sesja aplikacji |
| `cdn` | `https://cdn.componentator.com/` | CDN interfejsu |
| `language` | `eu` | język domyślny |
| `token`, `sync_token` | generowane | token API użytkowników i gniazda synchronizacji (obie funkcje są domyślnie wyłączone) |

Klucza `servicetoken`, z którym endpoint wysyłania obrazów porównuje swój token zapytania, skrypt **nie** tworzy, a ekran konfiguracji go nie edytuje: istnieje tylko wtedy, gdy sam dodasz go do `cl_config`.

Skrypt tworzy też grupę **Admin** i pierwszego użytkownika (`info@totaljs.com`, administrator, potwierdzony), który do niej należy; zobacz [instalacja](/en/openplatform/install-openplatform/).

## Usługi w tle

Total.js uruchamia usługę co minutę. OpenPlatform używa jej (`definitions/init.js`), aby:

- czyścić pamięć podręczną weryfikacji (co 2 minuty);
- zapisywać dzienne statystyki: użytkownicy online, maksimum i liczba według urządzenia (co 3 minuty);
- przeładowywać konfigurację z bazy danych (co 8 godzin);
- usuwać wygasłe sesje aplikacji i platformy (co 12 godzin);
- wysyłać e-mailowe podsumowania nieprzeczytanych powiadomień (co 11 minut, gdy poczta jest skonfigurowana).

## Baza danych

Wszystko znajduje się w schemacie PostgreSQL `op`:

| Tabela | Co zawiera |
|---|---|
| `cl_config` | konfiguracja (klucz, wartość, typ) |
| `tbl_user` | użytkownicy: profil, skrót hasła, flagi, liczniki i buforowane uprawnienia |
| `tbl_group` | grupy |
| `tbl_user_group` | który użytkownik należy do której grupy |
| `tbl_session` | sesje użytkowników w portalu (urządzenie, adres, ważność) |
| `tbl_app` | aplikacje: adres, sekrety, flagi i dozwolone adresy |
| `tbl_app_permission` | uprawnienia deklarowane przez każdą aplikację |
| `tbl_group_permission` | jakie uprawnienia (lub tylko jakie aplikacje) przyznaje każda grupa |
| `tbl_app_session` | sesje uruchomienia aplikacji i ich wyprowadzone tokeny |
| `tbl_user_app` | na użytkownika i aplikację: odnośniki powiadomień i to, czy akceptują powiadomienia |
| `tbl_notification` | powiadomienia |
| `tbl_visitor` | dzienne statystyki odwiedzających |
| `tbl_feedback` | opinie, które użytkownicy wysyłają z portalu |

Pliki z datą `database-2023-09-15.sql`, `database-2024-03-21.sql`, `database-2024-10-22.sql` i `database-2024-10-30.sql` w repozytorium to zmiany schematu w czasie, a `database.sql` to pełny skrypt uruchamiany przy pierwszym starcie. Rób kopię zapasową tego schematu jak każdej innej bazy PostgreSQL.
