Preskoči na vsebino

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.

Text
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:

Text
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 vzdevek X-Rudel-Sandbox)
  • piškotka rudel_environment (starejši vzdevek rudel_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_DIR na imenik tmp peskovnega okolja
  • nastavi WP_CACHE_KEY_SALT na vrednost, značilno za peskovno okolje, da trajni predpomnilniki objektov ločijo ključe peskovnih okolij
  • omogoči beleženje WP_DEBUG v peskovno okolje debug.log ter 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:

Text
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.