Izolácia
Rudel je systém prekrytia vyberaného podľa požiadavky. Vybraná požiadavka používa databázové tabuľky a súbory témy sandboxu, no naďalej beží v hostiteľskej inštalácii WordPress.
Izolované pre každý sandbox
Tabuľky WordPress
Každý sandbox dostane vygenerovaný prefix tabuliek: prefix hostiteľského prostredia a prvých sedem hexadecimálnych znakov MD5 ID sandboxu.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel prepne prefix tabuliek WordPress ešte pred dokončením inicializácie WordPress, takže každý databázový dotaz v požiadavke sandboxu číta kópie sandboxu a zapisuje do nich.
Používatelia
Tabuľky users a usermeta sa klonujú spolu s ostatnými. Sandbox pri vytvorení obsahuje používateľov a heslá hostiteľského prostredia; neskoršie vytvorenie, zmena alebo odstránenie používateľov v sandboxe neovplyvní hostiteľské prostredie a zmeny v hostiteľskom prostredí sa do sandboxu neprenesú.
Súbory aktívnej témy
Vybraná téma sa skopíruje do adresára sandboxu:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Ak je téma podriadená, Rudel skopíruje aj nadradenú tému, aby vzťah medzi šablónami zostal platný. Sandbox vždy poskytuje tému zaznamenanú pri vytvorení; zmena témy v sandboxe nemá žiadny účinok.
Zdieľané s hostiteľským prostredím
- jadro WordPress
- súbory pluginov
- nahrané médiá
Plugin nainštalovaný alebo aktualizovaný v hostiteľskom prostredí sa nainštaluje alebo aktualizuje vo všetkých sandboxoch. Aktívne pluginy sú uložené v tabuľke možností, takže ich aktivácia sa spravuje osobitne pre každý sandbox. Nahrané súbory pridané v sandboxe sa ukladajú do adresára nahraných súborov hostiteľského prostredia. Vďaka tomu sa sandboxy vytvárajú rýchlo a netreba globálne nahrádzať WP_CONTENT_DIR.
Rudel musí zostať aktívny v každom sandboxe. Blokovanie pošty a prekrytie témy zabezpečuje plugin; jeho deaktivácia pri vybranom sandboxe zároveň odstráni inicializačný riadok zo zdieľaného wp-config.php, čím sa vypne výber sandboxov pre celú inštaláciu (vydanie č. 13).
Výber sandboxu
Požiadavky HTTP vyberajú sandbox cez:
- hlavičku
X-Rudel-Environment(starší aliasX-Rudel-Sandbox) - súbor cookie
rudel_environment(starší aliasrudel_sandbox)
Rudel nikdy nenastavuje ani nemaže súbor cookie. Ak sa chcete vrátiť do hostiteľského prostredia, vymažte ho; položka Sandbox na paneli správcu odkazuje na hostiteľské URL, ale súbor cookie ponechá (vydanie č. 10).
Príkazy WP-CLI vyberajú sandbox cez:
- premennú prostredia
RUDEL_ENVIRONMENT --url, ktorej hostiteľská časť začína ID sandboxu, napríklad--url=http://alpha-3be7.example.test
Výber nie je overovaný. Každý klient, ktorý sa môže pripojiť k webu a odošle platné ID sandboxu, získa prístup k danému sandboxu; ID sandboxov (názov a štyri hexadecimálne znaky) sa dajú ľahko uhádnuť. Výber sandboxu nepovažujte za hranicu riadenia prístupu; verejné hostiteľské prostredie chráňte na úrovni webového servera alebo siete.
Predvolené nastavenia požiadavky
Pre vybranú požiadavku Rudel:
- blokuje odchádzajúcu poštu pomocou filtra
pre_wp_mail - nastaví
WP_TEMP_DIRna adresártmpsandboxu - nastaví
WP_CACHE_KEY_SALTna hodnotu špecifickú pre sandbox, aby trvalé vyrovnávacie pamäte objektov uchovávali kľúče sandboxov oddelene - sprístupní protokolovanie
WP_DEBUGdodebug.logsandboxu a autentifikačné kľúče a soli odvodené z ID sandboxu
Inicializačný kód definuje každú z týchto konštánt, iba ak ju wp-config.php ešte nedefinoval. Štandardná inštalácia wp-config.php definuje WP_DEBUG a všetky kľúče a soli, takže požiadavky sandboxu v takejto inštalácii používajú nastavenie ladenia hostiteľského prostredia, ako aj jeho kľúče a soli (vydanie č. 4). Keďže sa klonujú aj používatelia, prihlasovací súbor cookie hostiteľského prostredia môže byť platný aj v sandboxe.
Metadáta za behu
Metadáta prostredí Rudel za behu zostávajú v tabuľkách hostiteľského prostredia WordPress MySQL:
wp_rudel_environments
wp_rudel_worktrees
Tieto tabuľky sú jediným zdrojom pravdy pre Rudel. Adresáre prostredí obsahujú spravované súbory a artefakty, nie stav registra za behu.