added backlight and fixed outbound
This commit is contained in:
@@ -101,6 +101,37 @@ switch_to() {
|
||||
ln -sfn "$1" "$CURRENT"
|
||||
}
|
||||
|
||||
# Install privileged helpers + sudoers from the staged package so OTA can
|
||||
# deliver new bt-* scripts (e.g. bt-brightness) without a full redeploy.
|
||||
sync_helpers() {
|
||||
local dest="$1"
|
||||
local src="$dest/webconfig/scripts"
|
||||
local s name tmp_sudoers
|
||||
[ -d "$src" ] || { log "sync_helpers: no $src"; return 0; }
|
||||
mkdir -p "$ROOT/scripts"
|
||||
for s in "$src"/bt-*; do
|
||||
[ -f "$s" ] || continue
|
||||
name="$(basename "$s")"
|
||||
install -m 0755 "$s" "$ROOT/scripts/$name"
|
||||
chown root:root "$ROOT/scripts/$name" 2>/dev/null || true
|
||||
sed -i 's/\r$//' "$ROOT/scripts/$name" 2>/dev/null || true
|
||||
log "synced helper $name"
|
||||
done
|
||||
if [ -f "$src/buttontask.sudoers" ]; then
|
||||
tmp_sudoers="$(mktemp)"
|
||||
cp "$src/buttontask.sudoers" "$tmp_sudoers"
|
||||
sed -i 's/\r$//' "$tmp_sudoers" 2>/dev/null || true
|
||||
chmod 0440 "$tmp_sudoers"
|
||||
if visudo -cf "$tmp_sudoers" >/dev/null 2>&1; then
|
||||
install -m 0440 "$tmp_sudoers" /etc/sudoers.d/buttontask
|
||||
log "synced sudoers"
|
||||
else
|
||||
log "sudoers validation failed — kept previous /etc/sudoers.d/buttontask"
|
||||
fi
|
||||
rm -f "$tmp_sudoers"
|
||||
fi
|
||||
}
|
||||
|
||||
cmd_stage() {
|
||||
local pkg="$1"
|
||||
[ -f "$pkg" ] || { write_status error "package not found"; exit 1; }
|
||||
@@ -138,6 +169,9 @@ cmd_stage() {
|
||||
chmod -R u=rwX,go=rX "$dest" 2>/dev/null || true
|
||||
rm -f "$pkg"
|
||||
|
||||
write_status helpers "установка хелперов"
|
||||
sync_helpers "$dest"
|
||||
|
||||
write_status switching "$ver"
|
||||
switch_to "$dest"
|
||||
restart_services
|
||||
@@ -167,6 +201,14 @@ cmd_rollback() {
|
||||
write_status rollback_done "откат выполнен"
|
||||
}
|
||||
|
||||
cmd_sync_helpers() {
|
||||
local dest
|
||||
dest="$(readlink -f "$CURRENT" 2>/dev/null || true)"
|
||||
[ -n "$dest" ] && [ -d "$dest" ] || { echo "no current version" >&2; exit 1; }
|
||||
sync_helpers "$dest"
|
||||
echo "helpers synced from $dest"
|
||||
}
|
||||
|
||||
cmd_remove() {
|
||||
local name="$1"
|
||||
[[ "$name" =~ ^[A-Za-z0-9._-]+$ ]] || { echo "invalid version name" >&2; exit 1; }
|
||||
@@ -184,8 +226,9 @@ cmd_remove() {
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
stage) [ "$#" -ge 2 ] || { echo "usage: bt-update stage <pkg>"; exit 2; }; cmd_stage "$2" ;;
|
||||
rollback) cmd_rollback ;;
|
||||
remove) [ "$#" -ge 2 ] || { echo "usage: bt-update remove <name>"; exit 2; }; cmd_remove "$2" ;;
|
||||
*) echo "usage: bt-update {stage <pkg>|rollback|remove <name>}"; exit 2 ;;
|
||||
stage) [ "$#" -ge 2 ] || { echo "usage: bt-update stage <pkg>"; exit 2; }; cmd_stage "$2" ;;
|
||||
rollback) cmd_rollback ;;
|
||||
sync-helpers) cmd_sync_helpers ;;
|
||||
remove) [ "$#" -ge 2 ] || { echo "usage: bt-update remove <name>"; exit 2; }; cmd_remove "$2" ;;
|
||||
*) echo "usage: bt-update {stage <pkg>|rollback|sync-helpers|remove <name>}"; exit 2 ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user