Izolacija
Rudel je sistem prekrivnih plasti, ki se izberejo za posamezno zahtevo. Izbrana zahteva uporablja tabele zbirke podatkov in datoteke teme peskovnega okolja, vendar še vedno teče prek gostiteljske namestitve WordPress.
Izolirano v posameznem peskovnem okolju
Tabele WordPress
Vsako peskovno okolje dobi ustvarjeno predpono tabel: gostiteljsko predpono in prvih sedem šestnajstiških znakov MD5 ID-ja peskovnega okolja.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel preklopi predpono tabel WordPress, preden se WordPress zažene do konca, zato vsaka poizvedba v zahtevi peskovnika bere iz kopij peskovnika in vanje zapisuje.
Uporabniki
Tabeli users in usermeta se klonirata skupaj z ostalimi. Peskovno okolje ob ustvarjanju vsebuje uporabnike in gesla gostitelja; od takrat naprej ustvarjanje, spreminjanje ali brisanje uporabnikov v peskovnem okolju ne vpliva na gostitelja, spremembe na gostitelju pa ne dosežejo peskovnega okolja.
Datoteke aktivne teme
Izbrana tema se kopira v imenik peskovnega okolja:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Če je tema podrejena, Rudel kopira tudi nadrejeno temo, tako da povezava s predlogo ostane veljavna. Peskovno okolje vedno streže temo, zabeleženo ob ustvarjanju; preklop teme v peskovnem okolju nima učinka.
V skupni rabi z gostiteljem
- jedro WordPress
- datoteke vtičnikov
- naložene predstavnostne datoteke
Vtičnik, nameščen ali posodobljen na gostitelju, je nameščen oziroma posodobljen v vseh peskovnih okoljih. Kateri vtičniki so aktivni, je shranjeno v tabeli z možnostmi, zato je stanje aktivacije določeno za vsako peskovno okolje posebej. Naložene datoteke iz peskovnega okolja se shranijo v gostiteljski imenik za nalaganje. Tako je ustvarjanje peskovnega okolja hitro in prepreči globalno zamenjavo WP_CONTENT_DIR.
Ohranite aktiviran Rudel v vsakem peskovnem okolju. Njegovo blokiranje pošte in prekrivanje teme delujeta prek vtičnika, deaktiviranje, ko je izbrano peskovno okolje, pa iz skupne rabe odstrani tudi vrstico za zagon iz wp-config.php, s čimer se za celotno namestitev izklopi izbiranje peskovnih okolij (težava št. 13).
Izbira peskovnega okolja
Zahteve HTTP izberejo peskovno okolje prek:
- glave
X-Rudel-Environment(starejši vzdevekX-Rudel-Sandbox) - piškotka
rudel_environment(starejši vzdevekrudel_sandbox)
Rudel nikoli ne nastavi ali izbriše piškotka. Izbrišite ga, da se vrnete na gostitelja; element Peskovno okolje v skrbniški vrstici vodi na gostiteljski URL, vendar piškotek ostane (težava št. 10).
Ukazi WP-CLI izberejo peskovno okolje prek:
- spremenljivke okolja
RUDEL_ENVIRONMENT --url, katerega gostitelj se začne z ID-jem peskovnega okolja, na primer--url=http://alpha-3be7.example.test
Izbirnik ne zahteva preverjanja pristnosti. Vsak odjemalec, ki lahko dostopa do mesta in pošlje veljaven ID peskovnega okolja, ga dobi, ID-je peskovnih okolij (ime in štirje šestnajstiški znaki) pa je lahko uganiti. Izbire peskovnega okolja ne obravnavajte kot meje za nadzor dostopa; javnega gostitelja zaščitite na ravni spletnega strežnika ali omrežja.
Privzete nastavitve zahtev
Za izbrano zahtevo Rudel:
- blokira odhodno e-pošto s filtrom
pre_wp_mail - nastavi
WP_TEMP_DIRna imeniktmppeskovnega okolja - nastavi
WP_CACHE_KEY_SALTna vrednost, značilno za peskovno okolje, da trajni predpomnilniki objektov ločijo ključe peskovnih okolij - omogoči beleženje
WP_DEBUGv peskovno okoljedebug.logter ključe in soli za preverjanje pristnosti, izpeljane iz ID-ja peskovnega okolja
Zagon določi vsako od teh konstant samo, če je wp-config.php še ni določil. Standardna namestitev wp-config.php določi WP_DEBUG ter vse ključe in soli, zato zahteve peskovnega okolja pri taki namestitvi uporabljajo gostiteljsko nastavitev za razhroščevanje ter gostiteljske ključe in soli (težava št. 4). Ker so klonirani tudi uporabniki, je lahko prijavni piškotek gostitelja veljaven v peskovnem okolju.
Metapodatki med izvajanjem
Metapodatki okolja Rudel med izvajanjem ostanejo v gostiteljskih tabelah WordPress MySQL:
wp_rudel_environments
wp_rudel_worktrees
Te tabele so edini zanesljivi vir podatkov za Rudel. Imeniki okolij vsebujejo upravljane datoteke in artefakte, ne pa stanja registra med izvajanjem.