Definições, serviços e tabelas da base de dados do OpenPlatform
As definições
O OpenPlatform guarda a sua configuração na tabela cl_config e carrega-a no CONF do Total.js ao arrancar e a cada oito horas (definitions/init.js). O ecrã de configuração lê e guarda estas chaves (plugins/setup/schemas/settings.js):
| Chave | Significado |
|---|---|
name, icon, color | o nome, o logótipo e a cor da plataforma |
url | o endereço público da plataforma (sem a / final). Alterá-lo limpa as ligações de notificação e as sessões de aplicação abertas |
language | o idioma predefinido |
mail_smtp, mail_smtp_options, mail_from | o servidor SMTP, as suas opções (JSON) e o remetente; o ecrã de configuração pode testá-los |
$tms, secret_tms | publicar os eventos por TMS, e o segredo dessa ligação |
allow_token, token | ativar a API pública GET /users/ e o seu token |
newtab | abrir cada aplicação num novo separador |
sync, sync_token | aceitar o socket /sync/ de outras instâncias, com o seu token |
O primeiro arranque (database.sql) também gera, dentro de cl_config, valores que o ecrã de configuração não edita: o id da instalação, o secret de autenticação, o nome do cookie, o salt das palavras-passe, o saltchecksum das somas de verificação e o segredo da ligação TMS. Cria as chaves com estes valores predefinidos:
| Chave | Predefinição | Significado |
|---|---|---|
auth_cookie_expire | 1 month | quanto tempo vive o cookie de sessão |
auth_expire | 5 minutes | quanto tempo o utilizador com sessão iniciada é mantido em memória antes de ser lido de novo |
auth_cookie_options | {"httponly":true,"security":"lax"} | as opções do cookie de sessão |
auth_strict | false | sessões estritas |
app_session_expire | 1 day | quanto dura uma sessão de aplicação |
cdn | https://cdn.componentator.com/ | a CDN da interface |
language | eu | o idioma predefinido |
token, sync_token | gerado | o token da API de utilizadores e do socket de sincronização (ambas as funcionalidades estão desligadas por predefinição) |
A chave servicetoken, que o endpoint de carregamento de imagens compara com o seu token de consulta, não é criada pelo script e o ecrã de configuração não a edita: só existe se a acrescentar você mesmo a cl_config.
O script cria também o grupo Admin e o primeiro utilizador (info@totaljs.com, administrador, confirmado) que lhe pertence; veja instalá-lo.
Os serviços em segundo plano
O Total.js executa um serviço a cada minuto. O OpenPlatform usa-o (definitions/init.js) para:
- limpar a cache em memória das verificações (a cada 2 minutos);
- guardar as estatísticas diárias: utilizadores online, o máximo e o número por dispositivo (a cada 3 minutos);
- recarregar a configuração a partir da base de dados (a cada 8 horas);
- apagar as sessões de aplicação e de plataforma expiradas (a cada 12 horas);
- enviar os resumos por e-mail das notificações por ler (a cada 11 minutos, quando o correio está configurado).
A base de dados
Tudo vive no esquema PostgreSQL op:
| Tabela | O que contém |
|---|---|
cl_config | a configuração (chave, valor, tipo) |
tbl_user | os utilizadores: perfil, hash da palavra-passe, indicadores, contadores e as permissões em cache |
tbl_group | os grupos |
tbl_user_group | que utilizador pertence a que grupo |
tbl_session | as sessões dos utilizadores no portal (dispositivo, endereço, validade) |
tbl_app | as aplicações: endereço, segredos, indicadores e endereços permitidos |
tbl_app_permission | as permissões que cada aplicação declara |
tbl_group_permission | que permissões (ou apenas que aplicações) cada grupo concede |
tbl_app_session | as sessões de lançamento das aplicações e os seus tokens derivados |
tbl_user_app | por utilizador e aplicação: as ligações de notificação e se aceitam notificações |
tbl_notification | as notificações |
tbl_visitor | as estatísticas diárias de visitantes |
tbl_feedback | os comentários que os utilizadores enviam a partir do portal |
Os ficheiros com data database-2023-09-15.sql, database-2024-03-21.sql, database-2024-10-22.sql e database-2024-10-30.sql do repositório são as alterações do esquema ao longo do tempo, e database.sql é o script completo que o primeiro arranque executa. Faça cópia de segurança deste esquema como de qualquer outra base de dados PostgreSQL.