# Ρυθμίσεις, υπηρεσίες και πίνακες βάσης δεδομένων του OpenPlatform

> Τα κλειδιά διαμόρφωσης που διαβάζει το OpenPlatform, τι κάνουν οι υπηρεσίες παρασκηνίου του και σε τι χρησιμεύει κάθε πίνακας του σχήματος op.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: el
Content-SHA256: 7c862fa32098b2195eedef777ddde6dcbf1da66d7cc4ceac380c690c2818a8de
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/` και του token του |
| `newtab` | άνοιγμα κάθε εφαρμογής σε νέα καρτέλα |
| `sync`, `sync_token` | αποδοχή του socket `/sync/` άλλων στιγμιοτύπων, με το token του |

Η πρώτη εκκίνηση (`database.sql`) δημιουργεί επίσης, μέσα στο `cl_config`, τιμές που η οθόνη ρύθμισης δεν επεξεργάζεται: το `id` της εγκατάστασης, το `secret` ταυτοποίησης, το όνομα του `cookie`, το `salt` των κωδικών, το `saltchecksum` των αθροισμάτων ελέγχου και το μυστικό της σύνδεσης TMS. Δημιουργεί τα κλειδιά με αυτές τις προεπιλογές:

| Κλειδί | Προεπιλογή | Σημασία |
|---|---|---|
| `auth_cookie_expire` | `1 month` | πόσο ζει το cookie συνεδρίας |
| `auth_expire` | `5 minutes` | πόσο κρατιέται στη μνήμη ο συνδεδεμένος χρήστης πριν διαβαστεί ξανά |
| `auth_cookie_options` | `{"httponly":true,"security":"lax"}` | οι επιλογές του cookie συνεδρίας |
| `auth_strict` | `false` | αυστηρές συνεδρίες |
| `app_session_expire` | `1 day` | πόσο διαρκεί μια συνεδρία εφαρμογής |
| `cdn` | `https://cdn.componentator.com/` | το CDN της διεπαφής |
| `language` | `eu` | η προεπιλεγμένη γλώσσα |
| `token`, `sync_token` | παράγεται | το token του API χρηστών και του socket συγχρονισμού (και οι δύο λειτουργίες είναι απενεργοποιημένες από προεπιλογή) |

Το κλειδί `servicetoken`, με το οποίο το endpoint μεταφόρτωσης εικόνων συγκρίνει το token ερωτήματός του, **δεν** δημιουργείται από το σενάριο και η οθόνη ρύθμισης δεν το επεξεργάζεται: υπάρχει μόνο αν το προσθέσετε εσείς στο `cl_config`.

Το σενάριο δημιουργεί επίσης την ομάδα **Admin** και τον πρώτο χρήστη (`info@totaljs.com`, διαχειριστής, επιβεβαιωμένος) που ανήκει σε αυτήν· δείτε [εγκατάσταση](/en/openplatform/install-openplatform/).

## Οι υπηρεσίες παρασκηνίου

Το Total.js εκτελεί μια υπηρεσία κάθε λεπτό. Το OpenPlatform τη χρησιμοποιεί (`definitions/init.js`) για να:

- καθαρίζει την προσωρινή μνήμη των επαληθεύσεων (κάθε 2 λεπτά)·
- αποθηκεύει τα ημερήσια στατιστικά: χρήστες online, το μέγιστο και ο αριθμός ανά συσκευή (κάθε 3 λεπτά)·
- ξαναφορτώνει τη διαμόρφωση από τη βάση δεδομένων (κάθε 8 ώρες)·
- διαγράφει τις ληγμένες συνεδρίες εφαρμογών και πλατφόρμας (κάθε 12 ώρες)·
- στέλνει τις συνόψεις με email των μη αναγνωσμένων ειδοποιήσεων (κάθε 11 λεπτά, όταν η αλληλογραφία είναι διαμορφωμένη).

## Η βάση δεδομένων

Όλα βρίσκονται στο σχήμα PostgreSQL `op`:

| Πίνακας | Τι περιέχει |
|---|---|
| `cl_config` | η διαμόρφωση (κλειδί, τιμή, τύπος) |
| `tbl_user` | οι χρήστες: προφίλ, hash κωδικού, σημαίες, μετρητές και τα αποθηκευμένα στην cache δικαιώματα |
| `tbl_group` | οι ομάδες |
| `tbl_user_group` | ποιος χρήστης ανήκει σε ποια ομάδα |
| `tbl_session` | οι συνεδρίες των χρηστών στην πύλη (συσκευή, διεύθυνση, λήξη) |
| `tbl_app` | οι εφαρμογές: διεύθυνση, μυστικά, σημαίες και επιτρεπόμενες διευθύνσεις |
| `tbl_app_permission` | τα δικαιώματα που δηλώνει κάθε εφαρμογή |
| `tbl_group_permission` | ποια δικαιώματα (ή απλώς ποιες εφαρμογές) χορηγεί κάθε ομάδα |
| `tbl_app_session` | οι συνεδρίες εκκίνησης των εφαρμογών και τα παράγωγα tokens τους |
| `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.
