Kihagyás

A config.inc.php részletesen

A web/config.inc.php az MRBS-telepítés saját konfigurációs fájlja. Webhelyspecifikus működést határoz meg, és általában bizalmas adatokat is tartalmaz. Éles konfigurációként, ne az alkalmazás forrásfájljaként kezelje.

Hozd létre a fájlt

Az MRBS tartalmazza a web/config.inc.php-sample mintát, de szándékosan nem tartalmaz aktív config.inc.php fájlt.

cd /var/www/mrbs
cp config.inc.php-sample config.inc.php

Kezdje ugyanazon MRBS kiadás mintájával. Ne vigyen tovább egy régi mintát változatlan formában.

Hogyan töltődik be a konfiguráció

A megosztott bootstrap a konfigurációt a következő sorrendben tölti be:

  1. systemdefaults.inc.php
  2. areadefaults.inc.php
  3. config.inc.php
  4. site_config.inc
  5. belső ellenőrzés és kompatibilitás kezelése

A későbbi hozzárendelések felülírják a korábbiakat. Ez az oka annak, hogy egy rövid config.inc.php helyettesítheti az alkalmazás alapértelmezett beállításait a kiadási fájlok módosítása nélkül.

flowchart LR
  System[System defaults] --> Area[New-area defaults]
  Area --> Local[config.inc.php]
  Local --> Site[Site-specific config]
  Site --> Check[Validation and compatibility]

Important

Az adatbázisban már tárolt területértékek szerkesztése a Tárgyalók oldalon keresztül történik. A areadefaults.inc.php módosítása vagy a config.inc.php felülírása nem írja át a meglévő területeket.

PHP-szintaxis

A konfiguráció végrehajtható PHP-kód. Minden utasítás pontosvesszővel végződik. A karakterláncok egyszeres vagy dupla idézőjeleket használhatnak:

$timezone = 'Europe/Berlin';
$default_view = "week";
$kiosk_mode_enabled = false;
$search["count"] = 30;

Használjon valódi PHP logikai értékeket, ne karakterláncokat:

$mail_settings['disabled'] = false;   // Correct
$mail_settings['disabled'] = "false"; // Wrong: this is a non-empty string

A tömbök bármelyik támogatott PHP szintaxist használhatják:

$auth['admin'] = array('alice', 'bob');
$report_open_areas = [1, 3];

Ne adjon hozzá záró ?> címkét. Véletlen kimenetet hozhat létre, és megtörheti a fejléceket vagy a cookie-kat.

Minimális beállítások

Egy új webhelyhez általában szobaidőzónára és adatbázis-kapcsolatra van szükség:

$timezone = 'Europe/Berlin';

$dbsys = 'mysql';
$db_host = 'localhost';
$db_database = 'mrbs';
$db_login = 'mrbs';
$db_password = 'replace-this-password';
$db_tbl_prefix = 'mrbs_';
$db_persist = false;

Használja azt az időzónát, ahol a szobák találhatók. Ez eltérhet a szerver időzónájától.

Adatbázis konfiguráció

Válassza ki az adatbázist

$dbsys = 'mysql'; // MySQL or MariaDB

vagy:

$dbsys = 'pgsql'; // PostgreSQL

Csatlakozási viselkedés

A localhost az illesztőprogramtól függően választhat egy Unix aljzatot. A 127.0.0.1 használatával kényszerítheti a TCP-t a MySQL számára. Egy nem szabványos port külön is megadható:

$db_host = '127.0.0.1';
$db_port = 3306;

PostgreSQL több sémával rendelkező telepítések beállíthatják:

$db_schema = 'public';

A táblázat előtagjának meg kell egyeznie a telepített sémával:

$db_tbl_prefix = 'mrbs_';

Az állandó kapcsolatok alapértelmezés szerint le vannak tiltva. Csak akkor engedélyezze őket, ha felmérte a valós igényt, és megértette a tranzakciókkal és zárakkal való interakcióikat.

URL és fordított proxybeállítások

Az MRBS általában a kérés adataiból állapítja meg az URL-jét. Ha egy fordított proxy, útvonal-előtag vagy szokatlan virtuálisgép-beállítás ezt megbízhatatlanná teszi, másolja át a szükséges URL-beállításokat a systemdefaults.inc.php fájlból, és adja meg kifejezetten a nyilvános alap-URL-t.

A külső URL-nek a felhasználók által látott sémát és gazdagépet kell használnia. Konfigurálja a proxyt úgy, hogy megbízható sémát és gazdagépadatokat adjon át, és utasítsa el a nem megbízható állomásfejléceket.

Az URL viselkedésének megváltoztatása után tesztelje:

  • átirányítások bejelentkezés után;
  • linkek e-mailben;
  • iCalendar URL-ek;
  • kioszk kilépési linkek;
  • többoldalas hivatkozások; és
  • HTTP-to-HTTPS átirányítások.

Hitelesítés és munkamenetek

A hitelesítés igazolja a személyazonosságot; a session metódus megszerzi és megtartja.

$auth["type"] = "db";
$auth["session"] = "php";

A külső rendszerek saját beállításokat adnak hozzá, például:

$auth["type"] = "ldap";
$auth["session"] = "php";

Ne másoljon mintafelhasználókat vagy jelszavakat a termelésbe. Adminisztrátori hozzáférést kifejezetten leképez, és normál felhasználót és rendszergazdát is tesztel. Lásd: Hitelesítés.

Hozzáférés-szabályozás

A $auth alatti beállítások szabályozzák a nyilvános láthatóságot és a kiemelt foglalási viselkedést:

$auth['deny_public_access'] = true;
$auth['only_admin_can_book'] = false;
$auth['admin_must_obey_policies'] = true;

Tekintse át együtt a kapcsolódó beállításokat. A nyilvános naptár, a nyilvános jelentés, a kioszk és a privát foglalás különböző információkat tartalmazhat.

Naptár és felület

A gyakori globális felülbírálások a következők:

$default_view = 'week';
$weekstarts = 1;                 // Monday
$display_mincals = true;
$show_timeline = true;
$kiosk_mode_enabled = false;

A dátum és idő formázása a területi beállításoktól függő. Másolja a teljes vonatkozó $datetime_formats bejegyzést egy formátum felülbírálásakor, ahelyett, hogy részlegesen rekonstruálná azt.

Foglalási szabályok

Sok foglalási szabály egy területhez tartozik, és az adatbázisban adminisztrálja őket. A globális beállítások korlátokat írhatnak elő az egyes területeken, vagy korlátozhatják a képességeket.

Tartsa a házirend-felülírásokat egy egyértelműen megjelölt részben, és dokumentálja az üzleti okot:

// Facilities policy: every user may hold at most 20 future bookings.
$max_per_interval_global_enabled['future'] = true;
$max_per_interval_global['future'] = 20;

Tesztelje az ismétlődő, többnapos és rendszergazdai foglalásokat a szabályzat határán.

E-mail

Válasszon levélküldési módot, majd állítsa be a feladót, a címzetteket, az eseményeket és az átvitelt:

$mail_settings['admin_backend'] = 'smtp';
$mail_settings['from'] = 'mrbs@example.org';
$mail_settings['booker'] = true;

$smtp_settings['host'] = 'mail.example.org';
$smtp_settings['port'] = 587;
$smtp_settings['auth'] = true;
$smtp_settings['secure'] = 'tls';
$smtp_settings['username'] = 'mrbs@example.org';
$smtp_settings['password'] = 'replace-this-password';

Tartsa engedélyezve a tanúsítvány ellenőrzését. Lásd: E-mail értesítések.

Nyelv és helyi megfogalmazás

Csak akkor állítson be rögzített alapértelmezett nyelvet, ha a böngésző egyeztetése nem megfelelő:

$default_language_tokens = 'de';

Egyes címkék felülbírálása szerkesztés nélkül web/lang/lang.*:

$vocab_override['en']['mrbs'] = 'Resource Booking';
$vocab_override['de']['mrbs'] = 'Ressourcenbuchung';
$vocab_override['fr']['mrbs'] = 'Réservation de ressources';
$vocab_override['es']['mrbs'] = 'Reserva de recursos';

Az $vocab_override használata megőrzi a helyi szövegezést a frissítések során. A teljes munkafolyamatot a Szöveg és fordítások tartalmazza.

Egyéni mezők

Az egyéni adatbázis-oszlopok konfigurációval címkézhetők és alakíthatók:

$vocab_override['en']['room.coffee_machine'] = 'Coffee machine';
$select_options['entry.catering'] = array(
    'c' => 'Coffee',
    's' => 'Sandwiches',
    'h' => 'Hot lunch'
);
$is_mandatory_field['entry.catering'] = true;
$is_private_field['entry.refreshments'] = true;

Először be kell fejezni az adatbázis módosításait. Az entry egyéni oszlophoz azonos oszlopra van szükség a repeat-ban. A támogatott típusokért, sémapéldákért, érvényesítésért, adatvédelemért, mezők sorrendjéért és teszteléséért lásd a Egyéni mezők részt.

Másik fájl titkait is beillesztheti

Az config.inc.php tartalmazhat egy másik fájlt is, de az elérési útnak abszolútnak kell lennie:

require '/etc/mrbs/database-secrets.php';

A mellékelt fájlnak csak a várt értékeket kell visszaadnia vagy hozzárendelnie, és olvashatónak kell lennie a PHP futási környezet számára. Tartsa a webgyökéren kívül.

A környezeti változók explicit módon is olvashatók:

$db_password = getenv('MRBS_DB_PASSWORD');

Ellenőrizze, hogy a kötelező érték létezik-e, és ne fogadjon el észrevétlenül üres bizalmas értéket.

Több webhely

A több webhely globális konfigurációt, valamint egy helyspecifikus konfigurációt használ a sites/<site>/ alatt. Legalább minden webhelynek szüksége van egy elkülönített táblázat előtagra:

$multisite = true;
$db_tbl_prefix = 'berlin_';

A hitelesítés, a levelezés, a téma és egyéb beállítások webhelyenként eltérőek lehetnek. Lásd: Több webhely.

Hibakeresés

Csak ideiglenesen engedélyezze a hibakeresési viselkedést, és soha ne tegye ki nem megbízható felhasználóknak. Az integráció-specifikus hibakeresési kimenet címtáradatokat, fejléceket, levelezőszerver-adatokat vagy személyes adatokat tartalmazhat.

A hitelesítő adatok naplózása letiltva:

$auth['log_credentials'] = false;

Frissítésbiztos karbantartás

Minden MRBS frissítés esetén:

  1. Készítsen biztonsági másolatot az aktív konfigurációról.
  2. Induljon ki az új kiadás config.inc.php-sample fájljából.
  3. Hasonlítsa össze a régi felülírásokat az új alapértelmezettekkel.
  4. Csak szándékos beállítások átvitele.
  5. Távolítsa el a kompatibilitási ellenőrzések által jelentett elavult változókat.
  6. Futtasson szintaktikai ellenőrzést és funkcionális teszteket.

Kerülje a teljes régi alapértelmezések átmásolását az új konfigurációba; amely elrejti az új alapértelmezéseket és megnehezíti a későbbi frissítéseket.

Érvényesítési ellenőrző lista

php -l /var/www/mrbs/config.inc.php

Ezután ellenőrizze:

  • alkalmazás- és adatbázisverziók a Súgó címen;
  • adatbázis kapcsolat és tábla előtag;
  • szoba időzóna és nyári időszámítás;
  • bejelentkezés, kijelentkezés, lejárat és rendszergazda hozzárendelés;
  • nyilvános és privát nézetek;
  • létrehozása, szerkesztése, törlése, ismétlődése és irányelvi határok létrehozása;
  • e-mail küldője, címzettjei és TLS;
  • jelentések, exportálások, kioszk és több hely, ahol használják; és
  • naplók jelszavak vagy személyes adatok nélkül.

Javasolt fájlelrendezés

A fájl legyen rövid és csoportosítva:

<?php
declare(strict_types=1);
namespace MRBS;

// Timezone
$timezone = 'Europe/Berlin';

// Database
$dbsys = 'mysql';
// ...

// Authentication
$auth['type'] = 'db';
$auth['session'] = 'php';

// Site-specific overrides
// ...

Minden nem nyilvánvaló felülírásnak meg kell magyaráznia, miért van rá szüksége a telepítésnek.