mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-03-29 10:10:06 +00:00
161 lines
5.4 KiB
Bash
Executable File
161 lines
5.4 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
set -eu
|
|
|
|
# Links to scripts/configs
|
|
bin="https://github.com/simplex-chat/simplexmq/releases/latest/download"
|
|
bin_smp="$bin/smp-server-ubuntu-20_04-x86-64"
|
|
bin_xftp="$bin/xftp-server-ubuntu-20_04-x86-64"
|
|
|
|
scripts="https://raw.githubusercontent.com/simplex-chat/simplexmq/stable/scripts/main"
|
|
scripts_systemd_smp="$scripts/smp-server.service"
|
|
scripts_systemd_xftp="$scripts/xftp-server.service"
|
|
scripts_update="$scripts/simplex-servers-update"
|
|
scripts_uninstall="$scripts/simplex-servers-uninstall"
|
|
|
|
# Default installation paths
|
|
path_bin="/usr/local/bin"
|
|
path_bin_smp="$path_bin/smp-server"
|
|
path_bin_xftp="$path_bin/xftp-server"
|
|
path_bin_update="$path_bin/simplex-servers-update"
|
|
path_bin_uninstall="$path_bin/simplex-servers-uninstall"
|
|
|
|
path_systemd="/etc/systemd/system"
|
|
path_systemd_smp="$path_systemd/smp-server.service"
|
|
path_systemd_xftp="$path_systemd/xftp-server.service"
|
|
|
|
# Temporary paths
|
|
path_tmp_bin="$(mktemp -d)"
|
|
path_tmp_bin_update="$path_tmp_bin/simplex-servers-update"
|
|
path_tmp_bin_uninstall="$path_tmp_bin/simplex-servers-uninstall"
|
|
path_tmp_systemd_smp="$path_tmp_bin/smp-server.service"
|
|
path_tmp_systemd_xftp="$path_tmp_bin/xftp-server.service"
|
|
|
|
GRN='\033[0;32m'
|
|
BLU='\033[1;36m'
|
|
YLW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m'
|
|
|
|
# Currently, XFTP default to v0.1.0, so it doesn't make sense to check its version
|
|
local_version="$($path_bin_smp -v | awk '{print $3}')"
|
|
remote_version="$(curl --proto '=https' --tlsv1.2 -sSf -L https://api.github.com/repos/simplex-chat/simplexmq/releases/latest | grep -i "tag_name" | awk -F \" '{print $4}')"
|
|
|
|
update_scripts() {
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$scripts_update" -o "$path_tmp_bin_update" && chmod +x "$path_tmp_bin_update"
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$scripts_uninstall" -o "$path_tmp_bin_uninstall" && chmod +x "$path_tmp_bin_uninstall"
|
|
|
|
if diff -q "$path_bin_uninstall" "$path_tmp_bin_uninstall" > /dev/null; then
|
|
printf -- "- ${YLW}Uninstall script is up-to-date${NC}.\n"
|
|
rm "$path_tmp_bin_uninstall"
|
|
else
|
|
printf -- "- Updating uninstall script..."
|
|
mv "$path_tmp_bin_uninstall" "$path_bin_uninstall"
|
|
printf "${GRN}Done!${NC}\n"
|
|
fi
|
|
if diff -q "$path_bin_update" "$path_tmp_bin_update" > /dev/null; then
|
|
printf -- "- ${YLW}Update script is up-to-date${NC}.\n"
|
|
rm "$path_tmp_bin_update"
|
|
else
|
|
printf -- "- Updating update script..."
|
|
mv "$path_tmp_bin_update" "$path_bin_update"
|
|
printf "${GRN}Done!${NC}\n"
|
|
printf "Re-executing Update script with latest updates..."
|
|
exec sh "$path_bin_update" "continue"
|
|
fi
|
|
}
|
|
|
|
update_systemd() {
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$scripts_systemd_smp" -o "$path_tmp_systemd_smp"
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$scripts_systemd_xftp" -o "$path_tmp_systemd_xftp"
|
|
|
|
if diff -q "$path_systemd_smp" "$path_tmp_systemd_smp" > /dev/null; then
|
|
printf -- "- ${YLW}smp-server service is up-to-date${NC}.\n"
|
|
rm "$path_tmp_systemd_smp"
|
|
else
|
|
printf -- "- Updating smp-server service..."
|
|
mv "$path_tmp_systemd_smp" "$path_systemd_smp"
|
|
systemctl daemon-reload
|
|
printf "${GRN}Done!${NC}\n"
|
|
fi
|
|
if diff -q "$path_systemd_xftp" "$path_tmp_systemd_xftp" > /dev/null; then
|
|
printf -- "- ${YLW}xftp-server service is up-to-date${NC}.\n"
|
|
rm "$path_tmp_systemd_xftp"
|
|
else
|
|
printf -- "- Updating xftp-server service..."
|
|
mv "$path_tmp_systemd_xftp" "$path_systemd_xftp"
|
|
systemctl daemon-reload
|
|
printf "${GRN}Done!${NC}\n"
|
|
fi
|
|
}
|
|
|
|
update_bins() {
|
|
if [ "$local_version" != "$remote_version" ]; then
|
|
if systemctl is-active --quiet smp-server; then
|
|
printf -- "- Stopping smp-server service..."
|
|
systemctl stop smp-server
|
|
printf "${GRN}Done!${NC}\n"
|
|
|
|
printf -- "- Updating smp-server bin to %s..." "$remote_version"
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$bin_smp" -o "$bin_path_smp" && chmod +x "$bin_path_smp"
|
|
printf "${GRN}Done!${NC}\n"
|
|
|
|
printf -- "- Starting smp-server service..."
|
|
systemctl stop smp-server
|
|
printf "${GRN}Done!${NC}\n"
|
|
else
|
|
printf -- "- Updating smp-server bin..."
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$bin_smp" -o "$bin_path_smp" && chmod +x "$bin_path_smp"
|
|
printf "${GRN}Done!${NC}\n"
|
|
fi
|
|
|
|
if systemctl is-active --quiet xftp-server; then
|
|
printf -- "- Stopping xftp-server service..."
|
|
systemctl stop xftp-server
|
|
printf "${GRN}Done!${NC}\n"
|
|
|
|
printf -- "- Updating xftp-server bin to %s..." "$remote_version"
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$bin_xftp" -o "$bin_path_xftp" && chmod +x "$bin_path_xftp"
|
|
printf "${GRN}Done!${NC}\n"
|
|
|
|
printf -- "- Starting xftp-server service..."
|
|
systemctl stop xftp-server
|
|
printf "${GRN}Done!${NC}\n"
|
|
else
|
|
printf -- "- Updating xftp-server bin..."
|
|
curl --proto '=https' --tlsv1.2 -sSf -L "$bin_smp" -o "$bin_path_xftp" && chmod +x "$bin_path_xftp"
|
|
printf "${GRN}Done!${NC}\n"
|
|
fi
|
|
else
|
|
printf -- "- ${YLW}smp-server and xftp-server binaries is up-to-date${NC}.\n"
|
|
fi
|
|
}
|
|
|
|
checks() {
|
|
if [ "$(id -u)" -ne 0 ]; then
|
|
printf "This script is intended to be run with root privileges. Please re-run script using sudo.\n"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
checks
|
|
|
|
set +u
|
|
if [ "$1" != "continue" ]; then
|
|
set -u
|
|
printf "Updating scripts...\n"
|
|
update_scripts
|
|
else
|
|
set -u
|
|
printf "${GRN}Done!${NC}\n"
|
|
fi
|
|
|
|
printf "Updating systemd services...\n"
|
|
update_systemd
|
|
|
|
printf "Updating simplex server binaries...\n"
|
|
update_bins
|
|
}
|
|
|
|
main "$@"
|