test
This commit is contained in:
parent
9d306e00a0
commit
d26a192d0e
@ -1615,5 +1615,5 @@ trap 'post_update_to_api "failed" "$BASH_COMMAND"' ERR
|
||||
trap 'post_update_to_api "failed" "INTERRUPTED"' SIGINT
|
||||
trap 'post_update_to_api "failed" "TERMINATED"' SIGTERM
|
||||
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/helpers.func)
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/helper.func)
|
||||
|
||||
|
179
misc/helper.func
Normal file
179
misc/helper.func
Normal file
@ -0,0 +1,179 @@
|
||||
install_node_and_modules() {
|
||||
local NODE_VERSION="${NODE_VERSION:-22}"
|
||||
local NODE_MODULE="${NODE_MODULE:-}"
|
||||
local CURRENT_NODE_VERSION=""
|
||||
local NEED_NODE_INSTALL=false
|
||||
|
||||
if command -v node >/dev/null; then
|
||||
CURRENT_NODE_VERSION="$(node -v | grep -oP '^v\K[0-9]+')"
|
||||
if [[ "$CURRENT_NODE_VERSION" != "$NODE_VERSION" ]]; then
|
||||
msg_info "Node.js Version $CURRENT_NODE_VERSION found, replacing with $NODE_VERSION"
|
||||
NEED_NODE_INSTALL=true
|
||||
fi
|
||||
else
|
||||
msg_info "Node.js not found, installing version $NODE_VERSION"
|
||||
NEED_NODE_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_NODE_INSTALL" == true ]]; then
|
||||
$STD apt-get purge -y nodejs
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list
|
||||
rm -f /etc/apt/keyrings/nodesource.gpg
|
||||
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
|
||||
gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" \
|
||||
> /etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y nodejs
|
||||
msg_ok "Installed Node.js ${NODE_VERSION}"
|
||||
fi
|
||||
|
||||
if [[ -n "$NODE_MODULE" ]]; then
|
||||
IFS=',' read -ra MODULES <<< "$NODE_MODULE"
|
||||
for mod in "${MODULES[@]}"; do
|
||||
local MODULE_NAME MODULE_REQ_VERSION MODULE_INSTALLED_VERSION
|
||||
if [[ "$mod" == *"@"* ]]; then
|
||||
MODULE_NAME="${mod%@*}"
|
||||
MODULE_REQ_VERSION="${mod#*@}"
|
||||
else
|
||||
MODULE_NAME="$mod"
|
||||
MODULE_REQ_VERSION="latest"
|
||||
fi
|
||||
|
||||
if npm list -g --depth=0 "$MODULE_NAME" >/dev/null 2>&1; then
|
||||
MODULE_INSTALLED_VERSION="$(npm list -g --depth=0 "$MODULE_NAME" | grep "$MODULE_NAME@" | awk -F@ '{print $2}' | tr -d '[:space:]')"
|
||||
if [[ "$MODULE_REQ_VERSION" != "latest" && "$MODULE_REQ_VERSION" != "$MODULE_INSTALLED_VERSION" ]]; then
|
||||
msg_info "Updating $MODULE_NAME from v$MODULE_INSTALLED_VERSION to v$MODULE_REQ_VERSION"
|
||||
$STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}"
|
||||
elif [[ "$MODULE_REQ_VERSION" == "latest" ]]; then
|
||||
msg_info "Updating $MODULE_NAME to latest version"
|
||||
$STD npm install -g "${MODULE_NAME}@latest"
|
||||
else
|
||||
msg_ok "$MODULE_NAME@$MODULE_INSTALLED_VERSION already installed"
|
||||
fi
|
||||
else
|
||||
msg_info "Installing $MODULE_NAME@$MODULE_REQ_VERSION"
|
||||
$STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}"
|
||||
fi
|
||||
done
|
||||
msg_ok "Node Modules processed"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_postgresql() {
|
||||
local PG_VERSION="${PG_VERSION:-15}"
|
||||
local CURRENT_PG_VERSION=""
|
||||
local DISTRO
|
||||
local NEED_PG_INSTALL=false
|
||||
DISTRO="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
|
||||
if command -v psql >/dev/null; then
|
||||
CURRENT_PG_VERSION="$(psql -V | grep -oP '\s\K[0-9]+(?=\.)')"
|
||||
if [[ "$CURRENT_PG_VERSION" != "$PG_VERSION" ]]; then
|
||||
msg_info "PostgreSQL Version $CURRENT_PG_VERSION found, replacing with $PG_VERSION"
|
||||
NEED_PG_INSTALL=true
|
||||
fi
|
||||
else
|
||||
msg_info "PostgreSQL not found, installing version $PG_VERSION"
|
||||
NEED_PG_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_PG_INSTALL" == true ]]; then
|
||||
msg_info "Stopping PostgreSQL if running"
|
||||
systemctl stop postgresql >/dev/null 2>&1 || true
|
||||
|
||||
msg_info "Removing conflicting PostgreSQL packages"
|
||||
$STD apt-get purge -y "postgresql*"
|
||||
rm -f /etc/apt/sources.list.d/pgdg.list /etc/apt/trusted.gpg.d/postgresql.gpg
|
||||
|
||||
msg_info "Setting up PostgreSQL Repository"
|
||||
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
|
||||
gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
|
||||
|
||||
echo "deb https://apt.postgresql.org/pub/repos/apt ${DISTRO}-pgdg main" \
|
||||
> /etc/apt/sources.list.d/pgdg.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y "postgresql-${PG_VERSION}"
|
||||
|
||||
msg_ok "Installed PostgreSQL ${PG_VERSION}"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_mariadb() {
|
||||
local MARIADB_VERSION="${MARIADB_VERSION:-10.11}"
|
||||
local CURRENT_VERSION=""
|
||||
local NEED_INSTALL=false
|
||||
|
||||
if command -v mariadb >/dev/null; then
|
||||
CURRENT_VERSION="$(mariadb --version | grep -oP 'Ver\s+\K[0-9]+\.[0-9]+')"
|
||||
if [[ "$CURRENT_VERSION" != "$MARIADB_VERSION" ]]; then
|
||||
msg_info "MariaDB $CURRENT_VERSION found, replacing with $MARIADB_VERSION"
|
||||
NEED_INSTALL=true
|
||||
else
|
||||
msg_ok "MariaDB $MARIADB_VERSION already installed"
|
||||
fi
|
||||
else
|
||||
msg_info "MariaDB not found, installing version $MARIADB_VERSION"
|
||||
NEED_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_INSTALL" == true ]]; then
|
||||
msg_info "Removing conflicting MariaDB packages"
|
||||
$STD systemctl stop mariadb >/dev/null 2>&1 || true
|
||||
$STD apt-get purge -y 'mariadb*'
|
||||
rm -f /etc/apt/sources.list.d/mariadb.list /etc/apt/trusted.gpg.d/mariadb.gpg
|
||||
|
||||
msg_info "Setting up MariaDB Repository"
|
||||
curl -fsSL "https://mariadb.org/mariadb_release_signing_key.asc" | gpg --dearmor -o /etc/apt/trusted.gpg.d/mariadb.gpg
|
||||
DISTRO_CODENAME="$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)"
|
||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/mariadb.gpg] http://mirror.mariadb.org/repo/${MARIADB_VERSION}/debian ${DISTRO_CODENAME} main" \
|
||||
> /etc/apt/sources.list.d/mariadb.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y mariadb-server mariadb-client
|
||||
|
||||
msg_ok "Installed MariaDB $MARIADB_VERSION"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_mysql() {
|
||||
local MYSQL_VERSION="${MYSQL_VERSION:-8.0}"
|
||||
local CURRENT_VERSION=""
|
||||
local NEED_INSTALL=false
|
||||
|
||||
if command -v mysql >/dev/null; then
|
||||
CURRENT_VERSION="$(mysql --version | grep -oP 'Distrib\s+\K[0-9]+\.[0-9]+')"
|
||||
if [[ "$CURRENT_VERSION" != "$MYSQL_VERSION" ]]; then
|
||||
msg_info "MySQL $CURRENT_VERSION found, replacing with $MYSQL_VERSION"
|
||||
NEED_INSTALL=true
|
||||
else
|
||||
msg_ok "MySQL $MYSQL_VERSION already installed"
|
||||
fi
|
||||
else
|
||||
msg_info "MySQL not found, installing version $MYSQL_VERSION"
|
||||
NEED_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_INSTALL" == true ]]; then
|
||||
msg_info "Removing conflicting MySQL packages"
|
||||
$STD systemctl stop mysql >/dev/null 2>&1 || true
|
||||
$STD apt-get purge -y 'mysql*'
|
||||
rm -f /etc/apt/sources.list.d/mysql.list /etc/apt/trusted.gpg.d/mysql.gpg
|
||||
|
||||
msg_info "Setting up MySQL APT Repository"
|
||||
DISTRO_CODENAME="$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)"
|
||||
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | gpg --dearmor -o /etc/apt/trusted.gpg.d/mysql.gpg
|
||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/mysql.gpg] https://repo.mysql.com/apt/debian/ ${DISTRO_CODENAME} mysql-${MYSQL_VERSION}" \
|
||||
> /etc/apt/sources.list.d/mysql.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y mysql-server
|
||||
|
||||
msg_ok "Installed MySQL $MYSQL_VERSION"
|
||||
fi
|
||||
}
|
@ -153,183 +153,3 @@ exit-script() {
|
||||
echo -e "\n${CROSS}${RD}User exited script${CL}\n"
|
||||
exit
|
||||
}
|
||||
|
||||
install_node_and_modules() {
|
||||
local NODE_VERSION="${NODE_VERSION:-22}"
|
||||
local NODE_MODULE="${NODE_MODULE:-}"
|
||||
local CURRENT_NODE_VERSION=""
|
||||
local NEED_NODE_INSTALL=false
|
||||
|
||||
if command -v node >/dev/null; then
|
||||
CURRENT_NODE_VERSION="$(node -v | grep -oP '^v\K[0-9]+')"
|
||||
if [[ "$CURRENT_NODE_VERSION" != "$NODE_VERSION" ]]; then
|
||||
msg_info "Node.js Version $CURRENT_NODE_VERSION found, replacing with $NODE_VERSION"
|
||||
NEED_NODE_INSTALL=true
|
||||
fi
|
||||
else
|
||||
msg_info "Node.js not found, installing version $NODE_VERSION"
|
||||
NEED_NODE_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_NODE_INSTALL" == true ]]; then
|
||||
$STD apt-get purge -y nodejs
|
||||
rm -f /etc/apt/sources.list.d/nodesource.list
|
||||
rm -f /etc/apt/keyrings/nodesource.gpg
|
||||
|
||||
mkdir -p /etc/apt/keyrings
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
|
||||
gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" \
|
||||
> /etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y nodejs
|
||||
msg_ok "Installed Node.js ${NODE_VERSION}"
|
||||
fi
|
||||
|
||||
if [[ -n "$NODE_MODULE" ]]; then
|
||||
IFS=',' read -ra MODULES <<< "$NODE_MODULE"
|
||||
for mod in "${MODULES[@]}"; do
|
||||
local MODULE_NAME MODULE_REQ_VERSION MODULE_INSTALLED_VERSION
|
||||
if [[ "$mod" == *"@"* ]]; then
|
||||
MODULE_NAME="${mod%@*}"
|
||||
MODULE_REQ_VERSION="${mod#*@}"
|
||||
else
|
||||
MODULE_NAME="$mod"
|
||||
MODULE_REQ_VERSION="latest"
|
||||
fi
|
||||
|
||||
if npm list -g --depth=0 "$MODULE_NAME" >/dev/null 2>&1; then
|
||||
MODULE_INSTALLED_VERSION="$(npm list -g --depth=0 "$MODULE_NAME" | grep "$MODULE_NAME@" | awk -F@ '{print $2}' | tr -d '[:space:]')"
|
||||
if [[ "$MODULE_REQ_VERSION" != "latest" && "$MODULE_REQ_VERSION" != "$MODULE_INSTALLED_VERSION" ]]; then
|
||||
msg_info "Updating $MODULE_NAME from v$MODULE_INSTALLED_VERSION to v$MODULE_REQ_VERSION"
|
||||
$STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}"
|
||||
elif [[ "$MODULE_REQ_VERSION" == "latest" ]]; then
|
||||
msg_info "Updating $MODULE_NAME to latest version"
|
||||
$STD npm install -g "${MODULE_NAME}@latest"
|
||||
else
|
||||
msg_ok "$MODULE_NAME@$MODULE_INSTALLED_VERSION already installed"
|
||||
fi
|
||||
else
|
||||
msg_info "Installing $MODULE_NAME@$MODULE_REQ_VERSION"
|
||||
$STD npm install -g "${MODULE_NAME}@${MODULE_REQ_VERSION}"
|
||||
fi
|
||||
done
|
||||
msg_ok "Node Modules processed"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_postgresql() {
|
||||
local PG_VERSION="${PG_VERSION:-15}"
|
||||
local CURRENT_PG_VERSION=""
|
||||
local DISTRO
|
||||
local NEED_PG_INSTALL=false
|
||||
DISTRO="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
|
||||
|
||||
if command -v psql >/dev/null; then
|
||||
CURRENT_PG_VERSION="$(psql -V | grep -oP '\s\K[0-9]+(?=\.)')"
|
||||
if [[ "$CURRENT_PG_VERSION" != "$PG_VERSION" ]]; then
|
||||
msg_info "PostgreSQL Version $CURRENT_PG_VERSION found, replacing with $PG_VERSION"
|
||||
NEED_PG_INSTALL=true
|
||||
fi
|
||||
else
|
||||
msg_info "PostgreSQL not found, installing version $PG_VERSION"
|
||||
NEED_PG_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_PG_INSTALL" == true ]]; then
|
||||
msg_info "Stopping PostgreSQL if running"
|
||||
systemctl stop postgresql >/dev/null 2>&1 || true
|
||||
|
||||
msg_info "Removing conflicting PostgreSQL packages"
|
||||
$STD apt-get purge -y "postgresql*"
|
||||
rm -f /etc/apt/sources.list.d/pgdg.list /etc/apt/trusted.gpg.d/postgresql.gpg
|
||||
|
||||
msg_info "Setting up PostgreSQL Repository"
|
||||
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
|
||||
gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
|
||||
|
||||
echo "deb https://apt.postgresql.org/pub/repos/apt ${DISTRO}-pgdg main" \
|
||||
> /etc/apt/sources.list.d/pgdg.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y "postgresql-${PG_VERSION}"
|
||||
|
||||
msg_ok "Installed PostgreSQL ${PG_VERSION}"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_mariadb() {
|
||||
local MARIADB_VERSION="${MARIADB_VERSION:-10.11}"
|
||||
local CURRENT_VERSION=""
|
||||
local NEED_INSTALL=false
|
||||
|
||||
if command -v mariadb >/dev/null; then
|
||||
CURRENT_VERSION="$(mariadb --version | grep -oP 'Ver\s+\K[0-9]+\.[0-9]+')"
|
||||
if [[ "$CURRENT_VERSION" != "$MARIADB_VERSION" ]]; then
|
||||
msg_info "MariaDB $CURRENT_VERSION found, replacing with $MARIADB_VERSION"
|
||||
NEED_INSTALL=true
|
||||
else
|
||||
msg_ok "MariaDB $MARIADB_VERSION already installed"
|
||||
fi
|
||||
else
|
||||
msg_info "MariaDB not found, installing version $MARIADB_VERSION"
|
||||
NEED_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_INSTALL" == true ]]; then
|
||||
msg_info "Removing conflicting MariaDB packages"
|
||||
$STD systemctl stop mariadb >/dev/null 2>&1 || true
|
||||
$STD apt-get purge -y 'mariadb*'
|
||||
rm -f /etc/apt/sources.list.d/mariadb.list /etc/apt/trusted.gpg.d/mariadb.gpg
|
||||
|
||||
msg_info "Setting up MariaDB Repository"
|
||||
curl -fsSL "https://mariadb.org/mariadb_release_signing_key.asc" | gpg --dearmor -o /etc/apt/trusted.gpg.d/mariadb.gpg
|
||||
DISTRO_CODENAME="$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)"
|
||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/mariadb.gpg] http://mirror.mariadb.org/repo/${MARIADB_VERSION}/debian ${DISTRO_CODENAME} main" \
|
||||
> /etc/apt/sources.list.d/mariadb.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y mariadb-server mariadb-client
|
||||
|
||||
msg_ok "Installed MariaDB $MARIADB_VERSION"
|
||||
fi
|
||||
}
|
||||
|
||||
function install_mysql() {
|
||||
local MYSQL_VERSION="${MYSQL_VERSION:-8.0}"
|
||||
local CURRENT_VERSION=""
|
||||
local NEED_INSTALL=false
|
||||
|
||||
if command -v mysql >/dev/null; then
|
||||
CURRENT_VERSION="$(mysql --version | grep -oP 'Distrib\s+\K[0-9]+\.[0-9]+')"
|
||||
if [[ "$CURRENT_VERSION" != "$MYSQL_VERSION" ]]; then
|
||||
msg_info "MySQL $CURRENT_VERSION found, replacing with $MYSQL_VERSION"
|
||||
NEED_INSTALL=true
|
||||
else
|
||||
msg_ok "MySQL $MYSQL_VERSION already installed"
|
||||
fi
|
||||
else
|
||||
msg_info "MySQL not found, installing version $MYSQL_VERSION"
|
||||
NEED_INSTALL=true
|
||||
fi
|
||||
|
||||
if [[ "$NEED_INSTALL" == true ]]; then
|
||||
msg_info "Removing conflicting MySQL packages"
|
||||
$STD systemctl stop mysql >/dev/null 2>&1 || true
|
||||
$STD apt-get purge -y 'mysql*'
|
||||
rm -f /etc/apt/sources.list.d/mysql.list /etc/apt/trusted.gpg.d/mysql.gpg
|
||||
|
||||
msg_info "Setting up MySQL APT Repository"
|
||||
DISTRO_CODENAME="$(awk -F= '/VERSION_CODENAME/ { print $2 }' /etc/os-release)"
|
||||
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | gpg --dearmor -o /etc/apt/trusted.gpg.d/mysql.gpg
|
||||
echo "deb [signed-by=/etc/apt/trusted.gpg.d/mysql.gpg] https://repo.mysql.com/apt/debian/ ${DISTRO_CODENAME} mysql-${MYSQL_VERSION}" \
|
||||
> /etc/apt/sources.list.d/mysql.list
|
||||
|
||||
$STD apt-get update
|
||||
$STD apt-get install -y mysql-server
|
||||
|
||||
msg_ok "Installed MySQL $MYSQL_VERSION"
|
||||
fi
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user