mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 05:56:38 +08:00
103 lines
2.8 KiB
Bash
103 lines
2.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
INSTALL_DIR="/opt/openflare-agent"
|
|
SERVICE_NAME="openflare-agent"
|
|
|
|
usage() {
|
|
cat <<EOF
|
|
OpenFlare Agent Uninstaller
|
|
|
|
Usage:
|
|
uninstall-agent.sh [OPTIONS]
|
|
|
|
Options:
|
|
--install-dir DIR Installation directory (default: /opt/openflare-agent)
|
|
--service-name NAME systemd service name (default: openflare-agent)
|
|
-h, --help Show this help message
|
|
|
|
Behavior:
|
|
1. Stop the agent service/process and remove the entire installation directory
|
|
2. Remove the systemd service definition when present
|
|
3. Leave the local OpenResty installation untouched
|
|
|
|
Examples:
|
|
uninstall-agent.sh
|
|
uninstall-agent.sh --install-dir /srv/openflare-agent
|
|
EOF
|
|
exit 0
|
|
}
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--install-dir) INSTALL_DIR="$2"; shift 2 ;;
|
|
--service-name) SERVICE_NAME="$2"; shift 2 ;;
|
|
-h|--help) usage ;;
|
|
*) echo "Unknown option: $1"; exit 1 ;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$INSTALL_DIR" || "$INSTALL_DIR" == "/" || "$INSTALL_DIR" == "." ]]; then
|
|
echo "Refusing to remove unsafe install directory: '${INSTALL_DIR}'"
|
|
exit 1
|
|
fi
|
|
|
|
AGENT_BINARY="${INSTALL_DIR}/openflare-agent"
|
|
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
|
|
|
SYSTEMCTL_AVAILABLE="false"
|
|
if command -v systemctl >/dev/null 2>&1; then
|
|
SYSTEMCTL_AVAILABLE="true"
|
|
fi
|
|
|
|
echo "Uninstalling OpenFlare Agent from ${INSTALL_DIR}..."
|
|
|
|
if [[ "$SYSTEMCTL_AVAILABLE" == "true" ]]; then
|
|
if systemctl is-active --quiet "$SERVICE_NAME"; then
|
|
echo "Stopping service: ${SERVICE_NAME}"
|
|
systemctl stop "$SERVICE_NAME"
|
|
fi
|
|
|
|
if systemctl is-enabled --quiet "$SERVICE_NAME" >/dev/null 2>&1; then
|
|
echo "Disabling service: ${SERVICE_NAME}"
|
|
systemctl disable "$SERVICE_NAME" >/dev/null 2>&1 || true
|
|
fi
|
|
fi
|
|
|
|
if command -v pgrep >/dev/null 2>&1; then
|
|
mapfile -t agent_pids < <(pgrep -f "$AGENT_BINARY" || true)
|
|
if (( ${#agent_pids[@]} > 0 )); then
|
|
echo "Stopping agent process: ${agent_pids[*]}"
|
|
kill "${agent_pids[@]}" || true
|
|
sleep 1
|
|
|
|
mapfile -t remaining_agent_pids < <(pgrep -f "$AGENT_BINARY" || true)
|
|
if (( ${#remaining_agent_pids[@]} > 0 )); then
|
|
echo "Force stopping remaining agent process: ${remaining_agent_pids[*]}"
|
|
kill -9 "${remaining_agent_pids[@]}" || true
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [[ -f "$SERVICE_FILE" ]]; then
|
|
echo "Removing service file: ${SERVICE_FILE}"
|
|
rm -f "$SERVICE_FILE"
|
|
fi
|
|
|
|
if [[ "$SYSTEMCTL_AVAILABLE" == "true" ]]; then
|
|
systemctl daemon-reload || true
|
|
systemctl reset-failed "$SERVICE_NAME" >/dev/null 2>&1 || true
|
|
fi
|
|
|
|
if [[ -d "$INSTALL_DIR" ]]; then
|
|
echo "Removing installation directory: ${INSTALL_DIR}"
|
|
rm -rf "$INSTALL_DIR"
|
|
else
|
|
echo "Installation directory not found, skipping: ${INSTALL_DIR}"
|
|
fi
|
|
|
|
echo "Agent uninstall complete."
|
|
echo ""
|
|
echo "Local OpenResty was not modified. Remove it manually if you no longer need it."
|
|
echo "OpenFlare Agent uninstall finished."
|