Isolering
Rudel er et overlay-system, der vælges pr. anmodning. En valgt anmodning bruger sandkassens databasetabeller og temafiler, mens den stadig kører gennem værtens WordPress-installation.
Isoleret pr. sandkasse
WordPress-tabeller
Hver sandkasse får et genereret tabelpræfiks: værtens præfiks plus de første syv hexadecimale tegn fra sandkasse-ID'ets MD5.
wp_b65338d_options
wp_b65338d_posts
wp_b65338d_users
Rudel skifter WordPress-tabelpræfikset, før WordPress er færdig med at starte, så alle forespørgsler i en sandkasseanmodning læser og skriver til sandkassens kopier.
Brugere
Tabellerne users og usermeta klones sammen med resten. En sandkasse starter med værtens brugere og adgangskoder fra oprettelsestidspunktet. Derefter påvirker brugere, der oprettes, ændres eller slettes i sandkassen, ikke værten, og ændringer på værten overføres ikke til sandkassen.
Aktive temafiler
Det valgte tema kopieres til sandkassemappen:
wp-content/rudel-environments/{environment_id}/themes/{theme_slug}
Hvis temaet er et undertema, kopierer Rudel også overtemaet, så skabelonforholdet forbliver gyldigt. En sandkasse viser altid det tema, der blev registreret ved oprettelsen; temaskift i sandkassen har ingen effekt.
Delt med værten
- WordPress-kernen
- pluginfiler
- uploadede mediefiler
Et plugin, der installeres eller opdateres på værten, installeres eller opdateres for alle sandkasser. Hvilke plugins der er aktive, gemmes i indstillingstabellen, så aktiveringstilstanden er separat for hver sandkasse. Uploads fra en sandkasse placeres i værtens uploadmappe. Det holder oprettelsen af sandkasser hurtig og undgår at erstatte WP_CONTENT_DIR globalt.
Sørg for, at Rudel selv forbliver aktivt i alle sandkasser. Dets blokering af e-mail og temaoverlay kører fra pluginnet, og hvis det deaktiveres, mens en sandkasse er valgt, fjernes bootstrapping-linjen også fra den delte wp-config.php, hvilket slår valg af sandkasse fra for hele installationen (issue #13).
Valg af sandkasse
HTTP-anmodninger vælger en sandkasse via:
- headeren
X-Rudel-Environment(ældre aliasX-Rudel-Sandbox) - cookien
rudel_environment(ældre aliasrudel_sandbox)
Rudel sætter eller rydder aldrig cookien. Slet den for at vende tilbage til værten; punktet Sandbox i adminbjælken linker til værtens URL, men lader cookien være (issue #10).
WP-CLI-kommandoer vælger en sandkasse via:
- miljøvariablen
RUDEL_ENVIRONMENT - en
--url, hvis vært begynder med sandkasse-ID'et, f.eks.--url=http://alpha-3be7.example.test
Vælgeren er ikke godkendt. Enhver klient, der kan nå webstedet og sender et gyldigt sandkasse-ID, får adgang til den sandkasse, og sandkasse-ID'er (navn plus fire hexadecimale tegn) er lette at gætte. Betragt ikke valg af sandkasse som en adgangskontrolgrænse; beskyt en offentlig vært på webserver- eller netværksniveau.
Standardindstillinger for anmodninger
For en valgt anmodning gør Rudel følgende:
- blokerer udgående e-mail via et
pre_wp_mail-filter - sætter
WP_TEMP_DIRtil sandkassenstmp-mappe - sætter
WP_CACHE_KEY_SALTtil en sandkassespecifik værdi, så vedvarende objektcaches holder sandkassernes nøgler adskilt - tilbyder logning af
WP_DEBUGtil sandkassensdebug.logsamt godkendelsesnøgler og salte, der er afledt af sandkasse-ID'et
Bootstrap-koden definerer kun hver af disse konstanter, hvis wp-config.php ikke allerede har defineret den. En standard-wp-config.php definerer WP_DEBUG samt alle nøgler og salte, så sandkasseanmodninger på en sådan installation bruger værtens debugindstilling og nøgler og salte (issue #4). Da brugerne også klones, kan en login-cookie fra værten være gyldig i en sandkasse.
Kørselsmetadata
Rudels kørselsmetadata forbliver i værtens WordPress-tabeller for MySQL:
wp_rudel_environments
wp_rudel_worktrees
Disse tabeller er Rudels autoritative datakilde. Miljømapper indeholder administrerede filer og artefakter, ikke kørselsregistreringstilstand.