# Настройки, услуги и таблици на базата данни на OpenPlatform

> Конфигурационните ключове, които OpenPlatform чете, какво правят услугите му във фонов режим и за какво служи всяка таблица на схемата op.

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

## Настройките

OpenPlatform пази конфигурацията си в таблицата `cl_config` и я зарежда в `CONF` на Total.js при стартиране и на всеки осем часа (`definitions/init.js`). Екранът за настройка чете и записва тези ключове (`plugins/setup/schemas/settings.js`):

| Ключ | Значение |
|---|---|
| `name`, `icon`, `color` | името, логото и цветът на платформата |
| `url` | публичният адрес на платформата (без крайното `/`). Промяната му изчиства връзките на известията и отворените сесии на приложения |
| `language` | езикът по подразбиране |
| `mail_smtp`, `mail_smtp_options`, `mail_from` | SMTP сървърът, неговите опции (JSON) и подателят; екранът за настройка може да ги тества |
| `$tms`, `secret_tms` | публикуване на събитията чрез TMS и тайната на тази връзка |
| `allow_token`, `token` | включване на публичното API `GET /users/` и неговия токен |
| `newtab` | отваряне на всяко приложение в нов раздел |
| `sync`, `sync_token` | приемане на сокета `/sync/` на други инстанции, с неговия токен |

Първото стартиране (`database.sql`) генерира в `cl_config` и стойности, които екранът за настройка не редактира: `id` на инсталацията, `secret` на удостоверяването, името на `cookie`, `salt` на паролите, `saltchecksum` на контролните суми и тайната на връзката TMS. Създава ключовете с тези стойности по подразбиране:

| Ключ | По подразбиране | Значение |
|---|---|---|
| `auth_cookie_expire` | `1 month` | колко живее бисквитката на сесията |
| `auth_expire` | `5 minutes` | колко време влезлият потребител се държи в паметта, преди да бъде прочетен отново |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | опциите на бисквитката на сесията |
| `auth_strict` | `false` | строги сесии |
| `app_session_expire` | `1 day` | колко трае сесията на приложение |
| `cdn` | `https://cdn.componentator.com/` | CDN на интерфейса |
| `language` | `eu` | езикът по подразбиране |
| `token`, `sync_token` | генерирано | токенът на API за потребители и на синхронизиращия сокет (и двете функции са изключени по подразбиране) |

Ключът `servicetoken`, с който крайната точка за качване на изображения сравнява своя токен на заявката, **не** се създава от скрипта и екранът за настройка не го редактира: съществува само ако го добавите сами в `cl_config`.

Скриптът създава и групата **Admin** и първия потребител (`info@totaljs.com`, администратор, потвърден), който принадлежи към нея; вижте [инсталиране](/en/openplatform/install-openplatform/).

## Услугите във фонов режим

Total.js изпълнява услуга всяка минута. OpenPlatform я използва (`definitions/init.js`), за да:

- изчиства кеша в паметта на проверките (на всеки 2 минути);
- записва дневната статистика: потребители онлайн, максимумът и броят по устройство (на всеки 3 минути);
- презарежда конфигурацията от базата данни (на всеки 8 часа);
- изтрива изтеклите сесии на приложения и платформа (на всеки 12 часа);
- изпраща обобщенията по имейл на непрочетените известия (на всеки 11 минути, когато пощата е конфигурирана).

## Базата данни

Всичко живее в схемата `op` на PostgreSQL:

| Таблица | Какво съдържа |
|---|---|
| `cl_config` | конфигурацията (ключ, стойност, тип) |
| `tbl_user` | потребителите: профил, хеш на паролата, флагове, броячи и кешираните права |
| `tbl_group` | групите |
| `tbl_user_group` | кой потребител към коя група принадлежи |
| `tbl_session` | сесиите на потребителите в портала (устройство, адрес, изтичане) |
| `tbl_app` | приложенията: адрес, тайни, флагове и разрешени адреси |
| `tbl_app_permission` | правата, които декларира всяко приложение |
| `tbl_group_permission` | кои права (или само кои приложения) дава всяка група |
| `tbl_app_session` | сесиите за стартиране на приложенията и техните изведени токени |
| `tbl_user_app` | на потребител и приложение: връзките на известията и дали приемат известия |
| `tbl_notification` | известията |
| `tbl_visitor` | дневната статистика на посетителите |
| `tbl_feedback` | обратната връзка, която потребителите изпращат от портала |

Датираните файлове `database-2023-09-15.sql`, `database-2024-03-21.sql`, `database-2024-10-22.sql` и `database-2024-10-30.sql` в хранилището са промените на схемата във времето, а `database.sql` е пълният скрипт, който изпълнява първото стартиране. Правете резервно копие на тази схема като на всяка друга база данни PostgreSQL.
