mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-14 20:34:19 +08:00
47 lines
2.2 KiB
Bash
Executable File
47 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Registration, plus the two symlinks that expose what the admin uploads (a third, the pattern, is
|
|
# deliberately NOT one — see below). Nothing here migrates a router off an older footstrap: OpenWrt
|
|
# expects a sysupgrade rather than a package upgrade — the one exception is the stale pattern
|
|
# symlink itself, removed below because leaving it would keep a reported security hole open.
|
|
|
|
changed=0
|
|
|
|
set_opt() {
|
|
uci -q get "luci.$1" >/dev/null 2>&1 && return
|
|
uci set "luci.$1=$2"
|
|
changed=1
|
|
}
|
|
|
|
set_opt themes.Footstrap /luci-static/footstrap
|
|
|
|
# A fresh install may pick the theme; an upgrade must never move a router off the theme it is on.
|
|
# `changed` is what tells the two apart — on an upgrade the entry is already there — and it has to
|
|
# carry the decision alone, because apk exports no PKG_UPGRADE.
|
|
if [ "${PKG_UPGRADE:-}" != 1 ] && [ "$changed" = 1 ]; then
|
|
set_opt main.mediaurlbase /luci-static/footstrap
|
|
fi
|
|
|
|
[ "$changed" = 1 ] && uci commit luci
|
|
|
|
# uhttpd serves /www only, so the admin's uploads live in /etc — where a sysupgrade keeps them
|
|
# (lib/upgrade/keep.d) — and are reached through symlinks, EXCEPT the pattern (below).
|
|
#
|
|
# The pattern is deliberately NOT symlinked into /www: an SVG is a document, and served as one
|
|
# through a plain same-origin URL it runs as a script with the admin's session (OpenWrt forum
|
|
# thread 251930). It is instead read by cgi-bin/luci-theme-footstrap-pattern, which answers with
|
|
# CSP 'none' + sandbox and nosniff — headers uhttpd cannot attach to a static file. The login
|
|
# background stays a plain symlink: fs-assets.js re-encodes every upload to a JPEG on a canvas
|
|
# first, so there is no script grammar left in the bytes for a direct hit to run.
|
|
mkdir -p /etc/footstrap
|
|
if [ -d /www/luci-static/footstrap ]; then
|
|
ln -sf /etc/footstrap/login-bg /www/luci-static/footstrap/bg
|
|
ln -sfn /etc/footstrap/fonts /www/luci-static/footstrap/fonts
|
|
fi
|
|
# Clean up a pre-0.15 install's stale pattern symlink — see the header comment above for why this
|
|
# is the one migration this script makes. `-L` only: never remove a real file some other install
|
|
# step could have left at that path.
|
|
[ -L /www/luci-static/footstrap/pattern.svg ] && rm -f /www/luci-static/footstrap/pattern.svg
|
|
|
|
exit 0
|