mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 10:21:52 +00:00
* task fix and keyboard fix
* fixes for build scripts
* passthrough feature
* feat: inline domain health checks and improve address UX
- addPublicDomain returns DNS query + port check results (AddPublicDomainRes)
so frontend skips separate API calls after adding a domain
- addPrivateDomain returns check_dns result for the gateway
- Support multiple ports per domain in validation modal (deduplicated)
- Run port checks concurrently via futures::future::join_all
- Add note to add-domain dialog showing other interfaces on same host
- Add addXForwardedHeaders to knownProtocols in SDK Host.ts
- Add plugin filter kind, pluginId filter, matchesAny, and docs to
getServiceInterface.ts
- Add PassthroughInfo type and passthroughs field to NetworkInfo
- Pluralize "port forwarding rules" in i18n dictionaries
* feat: add shared host note to private domain dialog with i18n
* fix: scope public domain to single binding and return single port check
Accept internalPort in AddPublicDomainParams to target a specific
binding. Disable the domain on all other bindings. Return a single
CheckPortRes instead of Vec. Revert multi-port UI to singular port
display from 0f8a66b35.
* better shared hostname approach, and improve look-feel of addresses tables
* fix starttls
* preserve usb as top efi boot option
* fix race condition in wan ip check
* sdk beta.56
* various bug, improve smtp
* multiple bugs, better outbound gateway UX
* remove non option from smtp for better package compat
* bump sdk
---------
Co-authored-by: Aiden McClelland <me@drbonez.dev>
97 lines
2.9 KiB
Bash
Executable File
97 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
SOURCE_DIR="$(dirname $(realpath "${BASH_SOURCE[0]}"))"
|
|
|
|
if [ "$UID" -ne 0 ]; then
|
|
>&2 echo 'Must be run as root'
|
|
exit 1
|
|
fi
|
|
|
|
if ! [ -f "$1" ]; then
|
|
>&2 echo "usage: $0 <SQUASHFS>"
|
|
exit 1
|
|
fi
|
|
|
|
echo 'Upgrading...'
|
|
|
|
hash=$(b3sum $1 | head -c 32)
|
|
if [ -n "$2" ] && [ "$hash" != "$CHECKSUM" ]; then
|
|
>&2 echo 'Checksum mismatch'
|
|
exit 2
|
|
fi
|
|
|
|
unsquashfs -f -d / $1 boot
|
|
|
|
umount -R /media/startos/next 2> /dev/null || true
|
|
umount /media/startos/upper 2> /dev/null || true
|
|
umount /media/startos/lower 2> /dev/null || true
|
|
|
|
mkdir -p /media/startos/upper
|
|
mount -t tmpfs tmpfs /media/startos/upper
|
|
mkdir -p /media/startos/lower /media/startos/upper/data /media/startos/upper/work /media/startos/next
|
|
mount $1 /media/startos/lower
|
|
mount -t overlay \
|
|
-olowerdir=/media/startos/lower,upperdir=/media/startos/upper/data,workdir=/media/startos/upper/work \
|
|
overlay /media/startos/next
|
|
|
|
mkdir -p /media/startos/next/run
|
|
mkdir -p /media/startos/next/dev
|
|
mkdir -p /media/startos/next/sys
|
|
mkdir -p /media/startos/next/proc
|
|
mkdir -p /media/startos/next/boot
|
|
mkdir -p /media/startos/next/media/startos/root
|
|
mount --bind /run /media/startos/next/run
|
|
mount --bind /tmp /media/startos/next/tmp
|
|
mount --bind /dev /media/startos/next/dev
|
|
mount --bind /sys /media/startos/next/sys
|
|
mount --bind /proc /media/startos/next/proc
|
|
mount --bind /boot /media/startos/next/boot
|
|
mount --bind /media/startos/root /media/startos/next/media/startos/root
|
|
|
|
if mountpoint /boot/efi 2>&1 > /dev/null; then
|
|
mkdir -p /media/startos/next/boot/efi
|
|
mount --bind /boot/efi /media/startos/next/boot/efi
|
|
fi
|
|
|
|
if mountpoint /sys/firmware/efi/efivars 2>&1 > /dev/null; then
|
|
mount --bind /sys/firmware/efi/efivars /media/startos/next/sys/firmware/efi/efivars
|
|
fi
|
|
|
|
chroot /media/startos/next bash -e << "EOF"
|
|
|
|
if [ -f /boot/grub/grub.cfg ]; then
|
|
grub-install /dev/$(eval $(lsblk -o MOUNTPOINT,PKNAME -P | grep 'MOUNTPOINT="/media/startos/root"') && echo $PKNAME)
|
|
update-grub
|
|
fi
|
|
|
|
EOF
|
|
|
|
# Promote the USB installer boot entry back to first in EFI boot order.
|
|
# The entry number was saved during initial OS install.
|
|
if [ -d /sys/firmware/efi ] && [ -f /media/startos/config/efi-installer-entry ]; then
|
|
USB_ENTRY=$(cat /media/startos/config/efi-installer-entry)
|
|
if [ -n "$USB_ENTRY" ]; then
|
|
CURRENT_ORDER=$(efibootmgr | grep BootOrder | sed 's/BootOrder: //')
|
|
OTHER_ENTRIES=$(echo "$CURRENT_ORDER" | tr ',' '\n' | grep -v "$USB_ENTRY" | tr '\n' ',' | sed 's/,$//')
|
|
if [ -n "$OTHER_ENTRIES" ]; then
|
|
efibootmgr -o "$USB_ENTRY,$OTHER_ENTRIES"
|
|
else
|
|
efibootmgr -o "$USB_ENTRY"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
sync
|
|
|
|
umount -Rl /media/startos/next
|
|
umount /media/startos/upper
|
|
umount /media/startos/lower
|
|
|
|
mv $1 /media/startos/images/${hash}.rootfs
|
|
ln -rsf /media/startos/images/${hash}.rootfs /media/startos/config/current.rootfs
|
|
|
|
sync
|
|
|
|
echo 'System upgrade complete. Reboot to apply changes...' |