mirror of
https://github.com/unifi-utilities/unifios-utilities.git
synced 2024-08-30 18:32:21 +00:00
44397ab741
See https://github.com/unifi-utilities/unifios-utilities/issues/416#issuecomment-1413489715 udmse podman install didn't work properly on base UDM. udmpro variant works without issues, so we should use that one when normal udm is detected
123 lines
2.7 KiB
Bash
Executable File
123 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if which unifi-os >/dev/null 2>&1; then
|
|
echo 'Cowardly refusing to install on UDM 1.x'
|
|
exit 1
|
|
fi
|
|
|
|
udm_model() {
|
|
case "$(ubnt-device-info model || true)" in
|
|
"UniFi Dream Machine SE")
|
|
echo "udmse"
|
|
;;
|
|
"UniFi Dream Machine Pro")
|
|
echo "udmpro"
|
|
;;
|
|
"UniFi Dream Machine")
|
|
echo "udm"
|
|
;;
|
|
"UniFi Dream Router")
|
|
echo "udr"
|
|
;;
|
|
*)
|
|
echo "unknown"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
DESIRED_ZIPFILE='udmse-podman-install.zip'
|
|
case "$(udm_model)" in
|
|
udmse|udmpro)
|
|
DESIRED_ZIPFILE="$(udm_model)-podman-install.zip"
|
|
;;
|
|
udm)
|
|
# base UDM works fine with udmpro podman version, but has issues with udmse variant
|
|
DESIRED_ZIPFILE="udmpro-podman-install.zip"
|
|
;;
|
|
*)
|
|
# shrug
|
|
# udmse-podman-install.zip seems to work fine on UDM 2.4.x
|
|
true
|
|
;;
|
|
esac
|
|
|
|
|
|
# Get DataDir location
|
|
DATA_DIR="/mnt/data"
|
|
case "$(ubnt-device-info firmware || true)" in
|
|
1*)
|
|
DATA_DIR="/mnt/data"
|
|
;;
|
|
2*)
|
|
DATA_DIR="/data"
|
|
;;
|
|
3*)
|
|
DATA_DIR="/data"
|
|
;;
|
|
*)
|
|
echo "ERROR: No persistent storage found." 1>&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
CACHE_DIR="${DATA_DIR}/podman/cache"
|
|
INSTALL_ROOT="${DATA_DIR}/podman/install"
|
|
CONF_DIR="${DATA_DIR}/podman/conf"
|
|
|
|
mkdir -p "${CACHE_DIR}" "${INSTALL_ROOT}" "${CONF_DIR}"
|
|
|
|
URL="https://unifi.boostchicken.io/${DESIRED_ZIPFILE}"
|
|
|
|
if [ "$1" = '--download-only' ]; then
|
|
echo "downloading ${URL}" \
|
|
&& curl -Lsfo "${CACHE_DIR}/${DESIRED_ZIPFILE}" "${URL}" \
|
|
&& echo "downloaded ${URL}"
|
|
exit $?
|
|
fi
|
|
|
|
if podman version >/dev/null 2>&1; then
|
|
if [ "$1" = '--force' ]; then
|
|
echo 'overwriting existing podman install (--force)'
|
|
else
|
|
echo 'podman is already installed; skipping'
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if [ -f "${CACHE_DIR}/${DESIRED_ZIPFILE}" ]; then
|
|
echo "(using cache at ${CACHE_DIR}/${DESIRED_ZIPFILE})"
|
|
elif echo "downloading ${URL}" \
|
|
&& curl -Lsfo "${CACHE_DIR}/${DESIRED_ZIPFILE}" "${URL}"; then
|
|
echo "downloaded ${URL}"
|
|
else
|
|
echo 'download failed'
|
|
exit 1
|
|
fi
|
|
|
|
unzip -o "${CACHE_DIR}/${DESIRED_ZIPFILE}" -d "${CACHE_DIR}" >/dev/null
|
|
unzip -o "${CACHE_DIR}/podman-install.zip" -d "${INSTALL_ROOT}" >/dev/null
|
|
rm -f "${CACHE_DIR}/podman-install.zip"
|
|
|
|
for SOURCE in $(find "${INSTALL_ROOT}" -not -type d); do
|
|
TARGET="$(expr "${SOURCE}" : "${INSTALL_ROOT}\(.*\)")"
|
|
mkdir -p "$(dirname "${TARGET}")"
|
|
ln -sf "${SOURCE}" "${TARGET}"
|
|
done
|
|
|
|
# fix missing config files
|
|
for CONFIG in $(cd "${CONF_DIR}" && echo *); do
|
|
[ -e "${CONF_DIR}/${CONFIG}" ] || continue
|
|
ln -sf "${CONF_DIR}/${CONFIG}" "/etc/containers/${CONFIG}"
|
|
done
|
|
|
|
if podman version >/dev/null 2>&1; then
|
|
echo "podman $(podman version -f '{{.Client.Version}}') was installed successfully"
|
|
exit 0
|
|
fi
|
|
|
|
echo 'Something went wrong'
|
|
exit 1
|
|
|