mirror of
https://github.com/KaySar12/NextZen-UserService.git
synced 2025-10-06 19:59:42 +07:00
add cleanup script for future uninstall modularization (#16)
This commit is contained in:
@@ -63,7 +63,6 @@ readonly BUILD_PATH
|
|||||||
readonly SOURCE_ROOT=${BUILD_PATH}/sysroot
|
readonly SOURCE_ROOT=${BUILD_PATH}/sysroot
|
||||||
|
|
||||||
readonly APP_NAME="casaos-user-service"
|
readonly APP_NAME="casaos-user-service"
|
||||||
readonly APP_NAME_FORMAL="CasaOS-UserService"
|
|
||||||
readonly APP_NAME_SHORT="user-service"
|
readonly APP_NAME_SHORT="user-service"
|
||||||
readonly APP_NAME_LEGACY="casaos"
|
readonly APP_NAME_LEGACY="casaos"
|
||||||
|
|
||||||
@@ -95,46 +94,6 @@ if [ "${NEED_MIGRATION}" = "false" ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MIGRATION_SERVICE_DIR=${1}
|
|
||||||
|
|
||||||
if [ -z "${MIGRATION_SERVICE_DIR}" ]; then
|
|
||||||
MIGRATION_SERVICE_DIR=${BUILD_PATH}/scripts/migration/service.d/${APP_NAME_SHORT}
|
|
||||||
fi
|
|
||||||
|
|
||||||
readonly MIGRATION_LIST_FILE=${MIGRATION_SERVICE_DIR}/migration.list
|
|
||||||
|
|
||||||
MIGRATION_PATH=()
|
|
||||||
CURRENT_VERSION_FOUND="false"
|
|
||||||
|
|
||||||
# a VERSION_PAIR looks like "v0.3.5 v0.3.6-alpha2"
|
|
||||||
#
|
|
||||||
# - "v0.3.5" is the current version installed on this host
|
|
||||||
# - "v0.3.6-alpha2" is the version of the migration tool from GitHub
|
|
||||||
while read -r VERSION_PAIR; do
|
|
||||||
if [ -z "${VERSION_PAIR}" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# obtain "v0.3.5" from "v0.3.5 v0.3.6-alpha2"
|
|
||||||
VER1=$(echo "${VERSION_PAIR}" | cut -d' ' -f1)
|
|
||||||
|
|
||||||
# obtain "v0.3.6-alpha2" from "v0.3.5 v0.3.6-alpha2"
|
|
||||||
VER2=$(echo "${VERSION_PAIR}" | cut -d' ' -f2)
|
|
||||||
|
|
||||||
if [ "${CURRENT_VERSION}" = "${VER1// /}" ] || [ "${CURRENT_VERSION}" = "LEGACY_WITHOUT_VERSION" ]; then
|
|
||||||
CURRENT_VERSION_FOUND="true"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${CURRENT_VERSION_FOUND}" = "true" ]; then
|
|
||||||
MIGRATION_PATH+=("${VER2// /}")
|
|
||||||
fi
|
|
||||||
done < "${MIGRATION_LIST_FILE}"
|
|
||||||
|
|
||||||
if [ ${#MIGRATION_PATH[@]} -eq 0 ]; then
|
|
||||||
__warning "No migration path found from ${CURRENT_VERSION} to ${SOURCE_VERSION}"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
ARCH="unknown"
|
ARCH="unknown"
|
||||||
|
|
||||||
case $(uname -m) in
|
case $(uname -m) in
|
||||||
@@ -152,20 +111,61 @@ case $(uname -m) in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
__info "ARCH: ${ARCH}"
|
||||||
|
|
||||||
|
MIGRATION_SERVICE_DIR=${1}
|
||||||
|
|
||||||
|
if [ -z "${MIGRATION_SERVICE_DIR}" ]; then
|
||||||
|
MIGRATION_SERVICE_DIR=${BUILD_PATH}/scripts/migration/service.d/${APP_NAME_SHORT}
|
||||||
|
fi
|
||||||
|
|
||||||
|
readonly MIGRATION_LIST_FILE=${MIGRATION_SERVICE_DIR}/migration.list
|
||||||
|
|
||||||
|
MIGRATION_PATH=()
|
||||||
|
CURRENT_VERSION_FOUND="false"
|
||||||
|
|
||||||
|
# a VERSION_PAIR looks like "v0.3.5 <url>"
|
||||||
|
#
|
||||||
|
# - "v0.3.5" is the current version installed on this host
|
||||||
|
# - "<url>" is the url of the migration tool
|
||||||
|
while read -r VERSION_PAIR; do
|
||||||
|
if [ -z "${VERSION_PAIR}" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# obtain "v0.3.5" from "v0.3.5 v0.3.6-alpha2"
|
||||||
|
VER1=$(echo "${VERSION_PAIR}" | cut -d' ' -f1)
|
||||||
|
|
||||||
|
# obtain "<url>" from "v0.3.5 <url>"
|
||||||
|
URL=$(eval echo "${VERSION_PAIR}" | cut -d' ' -f2)
|
||||||
|
|
||||||
|
if [ "${CURRENT_VERSION}" = "${VER1// /}" ] || [ "${CURRENT_VERSION}" = "LEGACY_WITHOUT_VERSION" ]; then
|
||||||
|
CURRENT_VERSION_FOUND="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${CURRENT_VERSION_FOUND}" = "true" ]; then
|
||||||
|
MIGRATION_PATH+=("${URL// /}")
|
||||||
|
fi
|
||||||
|
done < "${MIGRATION_LIST_FILE}"
|
||||||
|
|
||||||
|
if [ ${#MIGRATION_PATH[@]} -eq 0 ]; then
|
||||||
|
__warning "No migration path found from ${CURRENT_VERSION} to ${SOURCE_VERSION}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
pushd "${MIGRATION_SERVICE_DIR}"
|
pushd "${MIGRATION_SERVICE_DIR}"
|
||||||
|
|
||||||
{
|
{
|
||||||
for VER2 in "${MIGRATION_PATH[@]}"; do
|
for URL in "${MIGRATION_PATH[@]}"; do
|
||||||
MIGRATION_TOOL_FILE=linux-"${ARCH}"-"${APP_NAME}"-migration-tool-"${VER2}".tar.gz
|
MIGRATION_TOOL_FILE=$(basename "${URL}")
|
||||||
|
|
||||||
if [ -f "${MIGRATION_TOOL_FILE}" ]; then
|
if [ -f "${MIGRATION_TOOL_FILE}" ]; then
|
||||||
__info "Migration tool ${MIGRATION_TOOL_FILE} exists. Skip downloading."
|
__info "Migration tool ${MIGRATION_TOOL_FILE} exists. Skip downloading."
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MIGRATION_TOOL_URL=https://github.com/IceWhaleTech/"${APP_NAME_FORMAL}"/releases/download/"${VER2}"/linux-"${ARCH}"-"${APP_NAME}"-migration-tool-"${VER2}".tar.gz
|
__info "Dowloading ${URL}..."
|
||||||
__info "Dowloading ${MIGRATION_TOOL_URL}..."
|
curl -fsSL -o "${MIGRATION_TOOL_FILE}" -O "${URL}"
|
||||||
curl -sL -O "${MIGRATION_TOOL_URL}"
|
|
||||||
done
|
done
|
||||||
} || {
|
} || {
|
||||||
popd
|
popd
|
||||||
@@ -173,8 +173,8 @@ pushd "${MIGRATION_SERVICE_DIR}"
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
for VER2 in "${MIGRATION_PATH[@]}"; do
|
for URL in "${MIGRATION_PATH[@]}"; do
|
||||||
MIGRATION_TOOL_FILE=linux-"${ARCH}"-"${APP_NAME}"-migration-tool-"${VER2}".tar.gz
|
MIGRATION_TOOL_FILE=$(basename "${URL}")
|
||||||
__info "Extracting ${MIGRATION_TOOL_FILE}..."
|
__info "Extracting ${MIGRATION_TOOL_FILE}..."
|
||||||
tar zxvf "${MIGRATION_TOOL_FILE}" || __error "Failed to extract ${MIGRATION_TOOL_FILE}"
|
tar zxvf "${MIGRATION_TOOL_FILE}" || __error "Failed to extract ${MIGRATION_TOOL_FILE}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
LEGACY_WITHOUT_VERSION v0.3.6
|
LEGACY_WITHOUT_VERSION https://github.com/IceWhaleTech/CasaOS-UserService/releases/download/v0.3.6/linux-${ARCH}-casaos-user-service-migration-tool-v0.3.6.tar.gz
|
||||||
v0.3.5 v0.3.6
|
v0.3.5 https://github.com/IceWhaleTech/CasaOS-UserService/releases/download/v0.3.6/linux-${ARCH}-casaos-user-service-migration-tool-v0.3.6.tar.gz
|
||||||
v0.3.5.1 v0.3.6
|
v0.3.5.1 https://github.com/IceWhaleTech/CasaOS-UserService/releases/download/v0.3.6/linux-${ARCH}-casaos-user-service-migration-tool-v0.3.6.tar.gz
|
||||||
|
|||||||
@@ -15,11 +15,8 @@ if [ ! -f "${CONF_FILE}" ]; then \
|
|||||||
cp -v "${CONF_FILE_SAMPLE}" "${CONF_FILE}"; \
|
cp -v "${CONF_FILE_SAMPLE}" "${CONF_FILE}"; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# enable and start service
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
# enable service (without starting)
|
||||||
echo "Enabling service..."
|
echo "Enabling service..."
|
||||||
systemctl enable --force --no-ask-password "${APP_NAME}.service"
|
systemctl enable --force --no-ask-password "${APP_NAME}.service"
|
||||||
|
|
||||||
#echo "Starting service..."
|
|
||||||
#systemctl start --force --no-ask-password "${APP_NAME}.service"
|
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
readonly APP_NAME_SHORT=user-service
|
||||||
|
|
||||||
|
__get_setup_script_directory_by_os_release() {
|
||||||
|
pushd "$(dirname "${BASH_SOURCE[0]}")/../service.d/${APP_NAME_SHORT}" &>/dev/null
|
||||||
|
|
||||||
|
{
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
{
|
||||||
|
source /etc/os-release
|
||||||
|
{
|
||||||
|
pushd "${ID}"/"${VERSION_CODENAME}" &>/dev/null
|
||||||
|
} || {
|
||||||
|
pushd "${ID}" &>/dev/null
|
||||||
|
} || {
|
||||||
|
pushd "${ID_LIKE}" &>/dev/null
|
||||||
|
} || {
|
||||||
|
echo "Unsupported OS: ${ID} ${VERSION_CODENAME} (${ID_LIKE})"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
pwd
|
||||||
|
|
||||||
|
popd &>/dev/null
|
||||||
|
|
||||||
|
} || {
|
||||||
|
echo "Unsupported OS: unknown"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
popd &>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
SETUP_SCRIPT_DIRECTORY=$(__get_setup_script_directory_by_os_release)
|
||||||
|
|
||||||
|
readonly SETUP_SCRIPT_DIRECTORY
|
||||||
|
readonly SETUP_SCRIPT_FILENAME="cleanup-${APP_NAME_SHORT}.sh"
|
||||||
|
readonly SETUP_SCRIPT_FILEPATH="${SETUP_SCRIPT_DIRECTORY}/${SETUP_SCRIPT_FILENAME}"
|
||||||
|
|
||||||
|
echo "🟩 Running ${SETUP_SCRIPT_FILENAME}..."
|
||||||
|
$SHELL "${SETUP_SCRIPT_FILEPATH}" "${BUILD_PATH}"
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
../cleanup-user-service.sh
|
||||||
+109
@@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
readonly CASA_EXEC=casaos-user-service
|
||||||
|
readonly CASA_SERVICE=casaos-user-service.service
|
||||||
|
|
||||||
|
CASA_SERVICE_PATH=$(systemctl show ${CASA_SERVICE} --no-pager --property FragmentPath | cut -d'=' -sf2)
|
||||||
|
readonly CASA_SERVICE_PATH
|
||||||
|
|
||||||
|
CASA_CONF=$( grep -i ExecStart= "${CASA_SERVICE_PATH}" | cut -d'=' -sf2 | cut -d' ' -sf3)
|
||||||
|
if [[ -z "${CASA_CONF}" ]]; then
|
||||||
|
CASA_CONF=/etc/casaos/user-service.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
CASA_DB_PATH=$( (grep -i dbpath "${CASA_CONF}" || echo "/var/lib/casaos/db") | cut -d'=' -sf2 | xargs )
|
||||||
|
readonly CASA_DB_PATH
|
||||||
|
|
||||||
|
CASA_DB_FILE=${CASA_DB_PATH}/user-service.db
|
||||||
|
|
||||||
|
readonly aCOLOUR=(
|
||||||
|
'\e[38;5;154m' # green | Lines, bullets and separators
|
||||||
|
'\e[1m' # Bold white | Main descriptions
|
||||||
|
'\e[90m' # Grey | Credits
|
||||||
|
'\e[91m' # Red | Update notifications Alert
|
||||||
|
'\e[33m' # Yellow | Emphasis
|
||||||
|
)
|
||||||
|
|
||||||
|
Show() {
|
||||||
|
# OK
|
||||||
|
if (($1 == 0)); then
|
||||||
|
echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} OK $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
|
||||||
|
# FAILED
|
||||||
|
elif (($1 == 1)); then
|
||||||
|
echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[3]}FAILED$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
|
||||||
|
# INFO
|
||||||
|
elif (($1 == 2)); then
|
||||||
|
echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[0]} INFO $COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
|
||||||
|
# NOTICE
|
||||||
|
elif (($1 == 3)); then
|
||||||
|
echo -e "${aCOLOUR[2]}[$COLOUR_RESET${aCOLOUR[4]}NOTICE$COLOUR_RESET${aCOLOUR[2]}]$COLOUR_RESET $2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
Warn() {
|
||||||
|
echo -e "${aCOLOUR[3]}$1$COLOUR_RESET"
|
||||||
|
}
|
||||||
|
|
||||||
|
trap 'onCtrlC' INT
|
||||||
|
onCtrlC() {
|
||||||
|
echo -e "${COLOUR_RESET}"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ ! -x "$(command -v ${CASA_EXEC})" ]]; then
|
||||||
|
Show 2 "${CASA_EXEC} is not detected, exit the script."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo -n -e " ${aCOLOUR[4]}Do you want delete user database? Y/n :${COLOUR_RESET}"
|
||||||
|
read -r input
|
||||||
|
case $input in
|
||||||
|
[yY][eE][sS] | [yY])
|
||||||
|
REMOVE_USER_DATABASE=true
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
[nN][oO] | [nN])
|
||||||
|
REMOVE_USER_DATABASE=false
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e " ${aCOLOUR[3]}Invalid input, please try again.${COLOUR_RESET}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo -n -e " ${aCOLOUR[4]}Do you want delete user directory? Y/n :${COLOUR_RESET}"
|
||||||
|
read -r input
|
||||||
|
case $input in
|
||||||
|
[yY][eE][sS] | [yY])
|
||||||
|
REMOVE_USER_DIRECTORY=true
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
[nN][oO] | [nN])
|
||||||
|
REMOVE_USER_DIRECTORY=false
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e " ${aCOLOUR[3]}Invalid input, please try again.${COLOUR_RESET}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
Show 2 "Stopping ${CASA_SERVICE}..."
|
||||||
|
systemctl disable --now "${CASA_SERVICE}" || Show 3 "Failed to disable ${CASA_SERVICE}"
|
||||||
|
|
||||||
|
rm -rvf "$(which ${CASA_EXEC})" || Show 3 "Failed to remove ${CASA_EXEC}"
|
||||||
|
rm -rvf "${CASA_CONF}" || Show 3 "Failed to remove ${CASA_CONF}"
|
||||||
|
|
||||||
|
if [[ "${REMOVE_USER_DATABASE}" == true ]]; then
|
||||||
|
rm -rvf "${CASA_DB_FILE}" || Show 3 "Failed to remove ${CASA_DB_FILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${REMOVE_USER_DIRECTORY}" == true ]]; then
|
||||||
|
Show 2 "Removing user directories..."
|
||||||
|
rm -rvf /var/lib/casaos/[1-9]*
|
||||||
|
fi
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../debian/cleanup-user-service.sh
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../debian/bullseye/cleanup-user-service.sh
|
||||||
Reference in New Issue
Block a user