fix(web): gebroken splash-logo door Apache Alias /icons/ shadowing (#1221) #1224
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1224
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/1221-web-splash-icon-apache-shadow"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er mis was
Bij het laden van de webdemo verscheen een gebroken-afbeelding-icoon in plaats
van het OciDeck-logo op het laadscherm.
Root cause (anders dan #1221 vermoedde)
De diagnose in het issue noemde base-href en niet-meekopiëren van iconen, maar
geen van beide was het:
base href="/"klopte op de live site;SHA256SUMS;/favicon.png(root) en/assets/...geven 200, maar/icons/Icon-192.pnggeeft 404 en
/icons/geeft 403;/icons/blank.gifen/icons/a.gifgeven 200 — dat zijn standaardApache-systeemiconen uit
/usr/share/apache2/icons/.Debian/Ubuntu Apache levert in
mods-enabled/alias.confeenAlias /icons/ /usr/share/apache2/icons/. Die alias overschaduwt de webrooticons/map: de OciDeck-iconen staan op de server maar zijn onbereikbaar. Hetallereerste wat een bezoeker ziet oogt kapot.
Bovendien:
deploy_web.shstap 4 vergelijkt alleenindex.htmlenSHA256SUMSbyte-voor-byte — die controle zegt niet dat de bestanden inSHA256SUMS ook echt ophaalbaar zijn. Vandaar dat deze deploy groen ging terwijl
het pad gebroken was.
Oplossing
Hernoem
web/icons/naarweb/app-icons/— een pad dat geen standaardserveraliast. De bundel werkt nu op elke default Apache/Nginx zonder vhost-ingreep.
Een vhost-edit op de live host is daarmee niet meer nodig; een redeploy fixt de
live site.
web/index.html: splash-<img>enapple-touch-iconnaarapp-icons/scripts/regenerate_icons.sh: uitvoerpaden naarweb/app-icons/test/platform_icon_branding_test.dart: referenties naarweb/app-icons/Poort
De root cause (Apache-alias-shadowing) kan een
flutter testniet bewijzen —er draait geen Apache onder
flutter test. Daarom ligt de ratchet intool/check_web_hardening.dart, op de gebouwde bundel: faalt alsindex.htmleen icoon onder
icons/referereert, en als de splash-<img>niet naar eenbestaand bestand in
build/webwijst. Een revert naar de Fluttericons/-conventie gaat dan rood, in plaats van pas op de volgende live deploy.
Bewaker-weging
Deze wijziging raakt een publieke belofte (het eerste wat een bezoeker ziet) en
de draagbaarheid van de bundel. Twee routes waren mogelijk:
icons/-conventie) — maar elke nieuwe Apache-host met default config loopt weer
tegen hetzelfde aan; de repo is dan niet draagbaar zonder hostkennis.
icons/-conventie) — draagbaarnaar elke default host zonder vhost-ingreep.
Gekozen is 2: soevereiniteit en draagbaarheid (waarden 3/10) wegen hier zwaarder
dan de
icons/-conventie, omdat de schaduw-alias een default van tweemainstream distro's is, geen exotische host-eigenaardigheid. Van gedachten
veranderd als een toekomstige PWA-controle de
icons/-mapnaam hard eist — danvolgt een heroverweging met de bewaker.
Test plan
make checkgroen (8388 tests, 87,7% dekking)make check-fullgroen (gitleaks, trufflehog, semgrep, web-hardening)tool/check_web_hardening.dartbevestigt de nieuwe poort op de bundelicons/, negeertapp-icons/flutter test test/platform_icon_branding_test.dartgroen (5/5)curl /app-icons/Icon-192.png-> 200Generated with Devin
2fbb1ce2063950b27e03