Files
spacedrive/apps/server/docker/entrypoint.sh
Vítor Vasconcellos 5a103fb21b [ENG-1472] Frontend bug fixes and dependencies update (#2137)
* Fix onboarding sometimes not redirecting to Explorer on prod builds
 - Fix failure trying to compile landing prod builds outside Vercel
 - Fix Server docker failing to restart due to some incorrecting logic for creating the unprivileged users erroring out
 - Fix Storybook failing to build due to updates to Vite
 - Update Storybook dependencies
 - Remove unused Inter font dependency
 - Fix some incorrect references to NodeJS types inside web code
 - Fix $libraryId index using the incorrect redirect function
 - Improve error handling for the $libraryId index route
 - Fix Prism not being correctly loaded, and failing to register its plugins
 - Improve Prism loading error handling
 - Small improvement to the text highlight logic
 - Fix SCSS deprecation for untyped hsl values
 - Fix library query cache incorrectly saving empty values, which lead to the onboarding redirect bug
 - Patch contentLayer to fix an error during the final part of it's build process
 - Update most dev dependencies
 - Update publish-artifact to be compatible with new @actions/artifact
 - Fix issue with new vite-plugin-solid failing to build our .ts files due to the removal of the typescript plugin
 - Fix pnpm overrides not applying due to incorrect placement in package.json
 - Replace deprecated react-tsparticles and updated three used by the Bubbles background in the landing page
 - Rework Bubbles background to be compatible with new @tsparticles/react
 - Update @sd/config dependencies
 - Update @sd/scripts dependencies

* Implement suggestions
 - Replace mobile JS node setup with custom setup-pnpm action
 - Handle GITHUB_SECRET default value in code and throw a warning when it is not set
 - Fix pnpm now resolving the correct node version when building Spacedrive server docker
 - Add missing getent command to spacedrive server docker
 - Fix typo in entrypoint.sh
 - Implement a more robust check if the user is already in a group
 - Fix adduser failing due to missing default group
 - Disconnect IntersectionObserver on component unmount
 - Improve prism import comment

* Implement more suggestions
 - Pin genent version to latest stable release of UClibc
 - Add checksum checks for all ADD clauses in Spacedrive server Dockerfile

* Increase Maestro timeout to reduce CI failures due to slow simulator startup

* Dowgrade maestro to workaround CI timeout

* Improvements to the script that run maestro mobile tests
 - Increase the amount of retries for a maestro test run to 6
 - Increase Maestro driver startup timeout to 2 minutes

* Let run-maestro-tests.sh decide how to run itself

* ¯\_(ツ)_/¯
2024-02-28 23:52:24 +00:00

91 lines
2.3 KiB
Bash

#!/usr/bin/env sh
set -eu
# Shortcircuit for non-default commands.
# The last part inside the "{}" is a workaround for the following bug in ash/dash:
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874264
if [ -n "${1:-}" ] && [ "${1#-}" = "${1}" ] \
&& [ -n "$(command -v -- "${1}")" ] \
&& { ! [ -f "${1}" ] || [ -x "${1}" ]; }; then
exec "$@"
fi
if [ "$(id -u)" -ne 0 ]; then
echo "This container requires executing as root for initial setup, privileges are dropped shortly after" 1>&2
exit 1
fi
delpasswd () {
deluser "$@"
}
create () {
if [ "$#" -ne 3 ] || ! { [ "$1" = "group" ] || [ "$1" = "passwd" ]; } || [ -z "$2" ] || [ "$3" -le 0 ] ; then
echo "Usage: create <group|passwd> <NAME> <ID>" 1>&2
echo " NAME: Group or user name to be created" 1>&2
echo " ID: ID > 1000 to be assigned to the group or user" 1>&2
exit 1
fi
if getent "$1" "$2" >/dev/null; then
if [ "$(getent "$1" "$2" | cut -d: -f3)" = "$3" ]; then
echo "$1 $2 already exists with ID: $3"
return
else
"del${1}" "$2"
fi
fi
if getent "$1" "$3" >/dev/null; then
# WARNING: This need to be modified if this functions arguments are changed
set -- "$1" "$2" "$3" "$(getent "$1" "$3" | cut -d: -f1)"
if [ "$2" = "$4" ]; then
echo "$1 $2 already exists with ID: $3"
return
else
"del${1}" "$4"
fi
fi
case "$1" in
group)
addgroup --system --gid "$3" "$2"
;;
passwd)
rm -rf /var/empty
adduser \
--system \
--uid "$3" \
--home /var/empty \
--shell /bin/nologin \
--gecos "$2 system account" \
-G nobody \
--no-create-home \
"$2"
passwd -l "$2"
;;
esac
}
echo "Configure unprivileged user"
create group spacedrive 1000
create passwd spacedrive 1000
# Add spacedrive user to spacedrive group, if it is not already in it
if ! id -Gn spacedrive | tr '[:space:]+' '\n' | grep -x 'spacedrive'; then
adduser spacedrive spacedrive
fi
if [ -n "${TZ:-}" ]; then
echo "Set Timezone to $TZ"
rm -f /etc/localtime
ln -s "/usr/share/zoneinfo/${TZ}" /etc/localtime
echo "$TZ" >/etc/timezone
fi
echo "Fix spacedrive's directories permissions"
chown -R "${PUID}:${PGID}" /data
exec su spacedrive -s /usr/bin/sd-server -- "$@"