ESPO-13 legt Secrets unter /srv/espo/secrets ab (vorerst
gitea_package_token). Je Secret ein Parameter; leer oder woertlicher
Platzhalter laesst den Bestand. Erst Format und Funktion aller Werte
pruefen (Probeabruf der Registry), dann atomar schreiben - ein falscher
Token ersetzt keinen funktionierenden. Getestet: gesetzt, unveraendert,
falsches Format, abgelehnter Token.
ESPO-30 holt <extension> <version> aus der Package Registry
EspoCRM_Packages: SHA-256 gegen die Registry, Name und Version gegen das
Manifest, kein Rueckschritt, Snapshot srv-vor-update vor dem Download,
Installation per command.php als www-data, Neustart und Warten auf
healthy, Nachweis ueber --list. Danach liegt keine ZIP mehr auf der VM -
auch EspoCRMs eigene Archive in data/upload/extensions werden entfernt;
Update und Deinstallation brauchen sie nicht (Quelle 10.0.8).
ESPO-20 misst espo_extensions ("Name Version; ...", "none" wenn leer) und
beschreibt den Leseweg der Version wieder richtig. Ring 0 sperrt den
Extension-Upload in der Oberflaeche. README: Nummernkreise nachgezogen,
verrutschte Zeilen der Verzeichnistabelle zurueckgeholt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
3.4 KiB
PHP
72 lines
3.4 KiB
PHP
<?php
|
||
|
||
/**
|
||
* subcura – Grundeinstellungen für EspoCRM-Instanzen (deutscher Markt), unabhängig von Extensions.
|
||
*
|
||
* Mechanismus: EspoCRMs eigene data/config-override.php (ab v8.2) – wird nach config.php und config-internal.php geladen,
|
||
* überschreibt nur die hier gesetzten Schlüssel und wird von der Anwendung nie geschrieben (Änderungen an diesen
|
||
* Parametern über die Admin-UI bleiben wirkungslos). getenv() ist erlaubt.
|
||
* Anwendung: Kunden-VM: ESPO-10 legt die Datei vor dem ersten Start nach /srv/espo/data/config-override.php
|
||
* (Bind-Mount des EspoCRM-data-Verzeichnisses); danach Cache leeren.
|
||
* Entwicklungs- und Integrationsinstanzen: siehe espo-dev-env, Abschnitt 10.
|
||
* Nicht hier: instanzspezifische Werte (siteUrl, Datenbank, Mail-/SMTP-Daten, LDAP-Server, version).
|
||
* Geprüft gegen EspoCRM 10.0.8 (Settings.json / defaults/config.php).
|
||
*/
|
||
return [
|
||
// Sprache, Zeit, Zahlen
|
||
'language' => 'de_DE',
|
||
'timeZone' => 'Europe/Berlin',
|
||
'dateFormat' => 'DD.MM.YYYY',
|
||
'timeFormat' => 'HH:mm',
|
||
'weekStart' => 1, // Montag
|
||
'fiscalYearShift' => 0, // Geschäftsjahr = Kalenderjahr
|
||
'thousandSeparator' => '.',
|
||
'decimalMark' => ',',
|
||
|
||
// Währung
|
||
'currencyList' => ['EUR'],
|
||
'defaultCurrency' => 'EUR',
|
||
'baseCurrency' => 'EUR',
|
||
'currencyFormat' => 3, // "1.000,00 €" (Symbol nach dem Betrag)
|
||
'currencyDecimalPlaces' => 2,
|
||
|
||
// Adressen und Telefon
|
||
'addressFormat' => 2, // Straße / PLZ Ort / Land
|
||
'addressStateList' => [
|
||
'Baden-Württemberg', 'Bayern', 'Berlin', 'Brandenburg', 'Bremen', 'Hamburg', 'Hessen',
|
||
'Mecklenburg-Vorpommern', 'Niedersachsen', 'Nordrhein-Westfalen', 'Rheinland-Pfalz', 'Saarland',
|
||
'Sachsen', 'Sachsen-Anhalt', 'Schleswig-Holstein', 'Thüringen',
|
||
],
|
||
'addressCityList' => [],
|
||
'phoneNumberPreferredCountryList' => ['de'],
|
||
'phoneNumberInternational' => true, // E.164-Speicherung/-Validierung
|
||
|
||
// Listen
|
||
'recordsPerPage' => 50,
|
||
'recordsPerPageSmall' => 10,
|
||
'recordsPerPageSelect' => 20,
|
||
'recordsPerPageKanban' => 10,
|
||
|
||
// E-Mail und Export
|
||
'emailMessageMaxSize' => 25, // MB
|
||
'exportDelimiter' => ';', // CSV-Export für deutsches Excel
|
||
|
||
// Sicherheit (betrifft Espo-Passwörter: Admins, API-Benutzer; bei LDAP-Kunden die Nicht-LDAP-Konten)
|
||
'passwordStrengthLength' => 12,
|
||
'passwordStrengthBothCases' => true,
|
||
'passwordStrengthNumberCount' => 1,
|
||
'passwordStrengthSpecialCharacterCount' => 1,
|
||
'passwordGenerateLength' => 16,
|
||
'passwordRecoveryNoExposure' => true, // Passwort-Reset verrät nicht, ob eine Adresse existiert
|
||
'auth2FA' => true, // 2FA anbieten (nicht erzwingen: auth2FAForced)
|
||
|
||
// Extensions nur über ESPO-30 aus der Package Registry. Der Upload in der Oberfläche ist gesperrt,
|
||
// damit keine Extension an diesem Weg vorbei auf eine Instanz kommt (ADR 0013).
|
||
'adminExtensionUpload' => false,
|
||
|
||
// Authentifizierung: 'LDAP' nur zusammen mit den ldap*-Parametern der Kundeninstanz setzen
|
||
// (ldapHost, ldapPort, ldapSecurity, ldapUsername, ldapPassword, ldapBaseDn, ldapUserLoginFilter, ...).
|
||
// Ohne erreichbaren LDAP-Server können sich nur noch Admins anmelden. Dev-/Integrationsinstanz: 'Espo'.
|
||
// 'authenticationMethod' => 'LDAP',
|
||
];
|