
# Elkülönítés

A Rudel kérés alapján kiválasztott rétegként működik. A kiválasztott kérések a sandbox adatbázistábláit és témájának fájljait használják, miközben a gazdagép WordPress telepítésén futnak.

## Sandboxedként elkülönített elemek

### WordPress táblái

Minden sandbox egy generált táblaprefixumot kap: a gazdagép prefixumát, kiegészítve a sandboxazonosító MD5 értékének első hét hexadecimális karakterével.

```text
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
```

A Rudel még azelőtt átállítja az WordPress táblaprefixumát, hogy a WordPress befejezné az indulást, így a sandboxkérés összes lekérdezése a sandbox másolatából olvas és oda ír.

### Felhasználók

Az `users` és az `usermeta` tábla a többi táblával együtt klónozódik. A sandbox létrehozásakor a gazdagép felhasználói és jelszavai kerülnek bele; ezt követően a sandboxban létrehozott, módosított vagy törölt felhasználók nem érintik a gazdagépet, és a gazdagép módosításai sem jutnak el a sandboxba.

### Aktív tém fájljai

A kiválasztott téma a sandbox könyvtárába másolódik:

```text
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
```

Ha a téma gyermek téma, a Rudel a szülő témát is átmásolja, hogy a sablonkapcsolat érvényes maradjon. A sandbox mindig a létrehozásakor rögzített témát szolgálja ki; a sandboxon belüli témaváltásnak nincs hatása.

## Megosztva a gazdagéppel

- WordPress mag
- bővítményfájlok
- feltöltött médiafájlok

A gazdagépen telepített vagy frissített bővítmény minden sandboxban települ vagy frissül. Az aktív bővítményeket az options tábla tárolja, ezért az aktiválási állapot sandboxonként különbözik. A sandboxban végzett feltöltések a gazdagép uploads könyvtárába kerülnek. Így a sandboxok gyorsan létrehozhatók, és elkerülhető a `WP_CONTENT_DIR` globális lecserélése.

A Rudel maradjon aktív minden sandboxban. A levelek blokkolása és a téma rétegezése a bővítményből fut; ha kiválasztott sandbox mellett deaktiválja, a megosztott `wp-config.php` fájlból is eltávolítja az indítósort, így a sandbox kiválasztása az egész telepítésen kikapcsol ([13. számú probléma](https://github.com/inline0/rudel/issues/13)).

## Sandbox kiválasztása

A HTTP kérések az alábbi módokon választanak ki sandboxot:

- a `X-Rudel-Environment` fejléc (régi aliasa: `X-Rudel-Sandbox`)
- a `rudel_environment` süti (régi aliasa: `rudel_sandbox`)

A Rudel soha nem állítja be és nem törli a sütit. A gazdagépre való visszatéréshez törölje a sütit; az adminisztrációs sáv Sandbox eleme a gazdagép URL oldalára mutat, de a sütit meghagyja ([10. számú probléma](https://github.com/inline0/rudel/issues/10)).

A WP-CLI parancsok az alábbi módokon választanak ki sandboxot:

- a `RUDEL_ENVIRONMENT` környezeti változóval
- egy olyan `--url` használatával, amelynek gazdagépneve a sandboxazonosítóval kezdődik, például: `--url=http://alpha-3be7.example.test`

A kiválasztó nincs hitelesítve. Bármelyik, a webhelyet elérő kliens megkapja az adott sandboxot, ha érvényes sandboxazonosítót küld; a sandboxazonosítók (név és négy hexadecimális karakter) könnyen kitalálhatók. Ne tekintse a sandbox kiválasztását hozzáférés-vezérlési határnak; nyilvános gazdagépet webszerver- vagy hálózati szinten védjen.

## Kérés alapértelmezett beállításai

Kiválasztott kérés esetén a Rudel:

- `pre_wp_mail` szűrővel blokkolja a kimenő e-maileket
- a `WP_TEMP_DIR` értékét a sandbox `tmp` könyvtárára állítja
- a `WP_CACHE_KEY_SALT` értékét sandboxonként egyedire állítja, hogy a tartós objektumgyorsítótárak elkülönítsék a sandbox kulcsait
- `WP_DEBUG` naplózást kínál a sandbox `debug.log` fájljába, valamint a sandboxazonosítóból származtatott hitelesítési kulcsokat és sókat

Az indító csak akkor definiálja ezeket az állandókat, ha a `wp-config.php` még nem definiálta őket. Egy szabványos `wp-config.php` definiálja a `WP_DEBUG` értékét, valamint az összes kulcsot és sót; ilyen telepítésen tehát a sandboxkérések a gazdagép hibakeresési beállításait, kulcsait és sóit használják ([4. számú probléma](https://github.com/inline0/rudel/issues/4)). Mivel a felhasználók is klónozódnak, a gazdagép bejelentkezési sütije a sandboxban is érvényes lehet.

## Futásidejű metaadatok

A Rudel futásidejű metaadatai a gazdagép WordPress MySQL tábláiban maradnak:

```text
wp_rudel_environments
wp_rudel_worktrees
```

Ezek a táblák jelentik a Rudel hiteles adatforrását. A környezeti könyvtárak a kezelt fájlokat és elemeket tartalmazzák, nem a futásidejű nyilvántartás állapotát.
