Izolace
Rudel je systém překryvných vrstev vybraných podle požadavku. Vybraný požadavek používá databázové tabulky a soubory motivu sandboxu, ale stále běží v hostitelské instalaci WordPress.
Izolované pro každý sandbox
Tabulky WordPress
Každý sandbox získá vygenerovanou předponu tabulek: hostitelskou předponu následovanou prvními sedmi hexadecimálními znaky MD5 ID sandboxu.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel přepne předponu tabulek WordPress ještě před dokončením zavádění WordPress, takže každý dotaz v požadavku sandboxu čte a zapisuje kopie sandboxu.
Uživatelé
Tabulky users a usermeta se klonují spolu s ostatními. Sandbox při vytvoření obsahuje uživatele a hesla hostitele; poté uživatelé vytvoření, změnění nebo smazaní v sandboxu hostitele neovlivní a změny na hostiteli se do sandboxu nepromítnou.
Soubory aktivního motivu
Vybraný motiv se zkopíruje do adresáře sandboxu:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Pokud jde o podřízený motiv, Rudel zkopíruje také nadřazený motiv, aby vztah šablon zůstal platný. Sandbox vždy používá motiv zaznamenaný při vytvoření; změna motivu uvnitř sandboxu nemá žádný účinek.
Sdílené s hostitelem
- Jádro WordPress
- soubory pluginů
- nahrané mediální soubory
Plugin nainstalovaný nebo aktualizovaný na hostiteli se nainstaluje nebo aktualizuje ve všech sandboxech. Informace o aktivních pluginech se ukládají v tabulce options, takže stav aktivace je pro každý sandbox samostatný. Nahrané soubory ze sandboxu se ukládají do adresáře nahraných souborů hostitele. Díky tomu je vytváření sandboxů rychlé a není třeba globálně nahrazovat WP_CONTENT_DIR.
Rudel ponechte aktivní v každém sandboxu. Blokování e-mailů a překrytí motivu zajišťuje tento plugin; jeho deaktivace při vybraném sandboxu také odstraní zaváděcí řádek ze sdíleného souboru wp-config.php, čímž se výběr sandboxu vypne pro celou instalaci (issue #13).
Výběr sandboxu
Požadavky HTTP vybírají sandbox pomocí:
- hlavičky
X-Rudel-Environment(starší aliasX-Rudel-Sandbox) - souboru cookie
rudel_environment(starší aliasrudel_sandbox)
Rudel soubor cookie nikdy nenastavuje ani nemaže. Smažte ho a vraťte se na hostitele; položka Sandbox na administrační liště odkazuje na hostitelský URL, ale soubor cookie ponechá (issue #10).
Příkazy WP-CLI vybírají sandbox pomocí:
- proměnné prostředí
RUDEL_ENVIRONMENT --url, jehož hostitel začíná ID sandboxu, například--url=http://alpha-3be7.example.test
Výběr není ověřován. Každý klient, který může přistupovat k webu a odešle platné ID sandboxu, se dostane do daného sandboxu; ID sandboxů (název a čtyři hexadecimální znaky) lze snadno uhodnout. Nepovažujte výběr sandboxu za hranici řízení přístupu; veřejného hostitele zabezpečte na úrovni webového serveru nebo sítě.
Výchozí nastavení požadavků
Pro vybraný požadavek Rudel:
- blokuje odchozí e-maily pomocí filtru
pre_wp_mail - nastaví
WP_TEMP_DIRna adresářtmpsandboxu - nastaví
WP_CACHE_KEY_SALTna hodnotu specifickou pro sandbox, aby trvalé mezipaměti objektů oddělily klíče sandboxů - nabízí protokolování
WP_DEBUGdo sandboxudebug.loga ověřovací klíče a soli odvozené z ID sandboxu
Zaváděcí soubor definuje každou z těchto konstant pouze tehdy, pokud ji již nedefinoval wp-config.php. Standardní instalace wp-config.php definuje WP_DEBUG i všechny klíče a soli, takže požadavky sandboxu v takové instalaci používají nastavení ladění a klíče i soli hostitele (issue #4). Protože se klonují také uživatelé, přihlašovací cookie hostitele může být v sandboxu platná.
Metadata za běhu
Metadata běhu Rudel zůstávají v tabulkách MySQL hostitelské WordPress:
wp_rudel_environments
wp_rudel_worktrees
Tyto tabulky jsou jediným spolehlivým zdrojem dat pro Rudel. Adresáře prostředí obsahují spravované soubory a artefakty, nikoli stav registru za běhu.