225 lines
8.7 KiB
Bash
225 lines
8.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Audio Recorder - Полное удаление службы DND-recorder
|
|
# Запускать с правами root: sudo ./uninstall-service.sh
|
|
|
|
set -e
|
|
|
|
# Цвета для вывода
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
echo -e "${RED}========================================${NC}"
|
|
echo -e "${RED}DND-recorder - Uninstaller${NC}"
|
|
echo -e "${RED}========================================${NC}"
|
|
|
|
# Проверка прав root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo -e "${RED}Please run as root: sudo $0${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Конфигурация
|
|
SERVICE_NAME="DND-recorder"
|
|
INSTALL_DIR="/opt/audio-recorder"
|
|
APP_USER="audio-recorder"
|
|
DATA_DIR="/opt/audio-recorder/data"
|
|
RECORDINGS_DIR="/opt/audio-recorder/recordings"
|
|
BINARY_NAME="audio-recorder"
|
|
|
|
echo -e "${YELLOW}⚠️ ВНИМАНИЕ: Это полностью удалит Audio Recorder!${NC}"
|
|
echo -e "${YELLOW}Будут удалены:${NC}"
|
|
echo -e " - Служба ${SERVICE_NAME}"
|
|
echo -e " - Бинарные файлы"
|
|
echo -e " - Конфигурационные файлы"
|
|
echo -e " - База данных"
|
|
echo -e " - Записи (опционально)"
|
|
echo -e " - Пользователь ${APP_USER}"
|
|
echo -e ""
|
|
read -p "Вы уверены, что хотите продолжить? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo -e "${GREEN}Удаление отменено.${NC}"
|
|
exit 0
|
|
fi
|
|
|
|
# Спросить про удаление записей
|
|
echo ""
|
|
read -p "Сохранить записи (recordings)? (y/n): " -n 1 -r
|
|
echo
|
|
KEEP_RECORDINGS=$REPLY
|
|
|
|
echo ""
|
|
echo -e "${BLUE}Начинаем удаление...${NC}"
|
|
|
|
# 1. Остановка службы
|
|
echo -e "${GREEN}1. Остановка службы...${NC}"
|
|
if systemctl is-active --quiet ${SERVICE_NAME}.service 2>/dev/null; then
|
|
systemctl stop ${SERVICE_NAME}.service
|
|
echo -e " ✅ Служба остановлена"
|
|
else
|
|
echo -e " ⚠️ Служба не запущена"
|
|
fi
|
|
|
|
# 2. Отключение службы
|
|
echo -e "${GREEN}2. Отключение службы...${NC}"
|
|
if systemctl is-enabled --quiet ${SERVICE_NAME}.service 2>/dev/null; then
|
|
systemctl disable ${SERVICE_NAME}.service
|
|
echo -e " ✅ Служба отключена"
|
|
else
|
|
echo -e " ⚠️ Служба не включена"
|
|
fi
|
|
|
|
# 3. Удаление файла службы
|
|
echo -e "${GREEN}3. Удаление файла службы...${NC}"
|
|
if [ -f "/etc/systemd/system/${SERVICE_NAME}.service" ]; then
|
|
rm -f /etc/systemd/system/${SERVICE_NAME}.service
|
|
echo -e " ✅ Файл службы удален"
|
|
else
|
|
echo -e " ⚠️ Файл службы не найден"
|
|
fi
|
|
|
|
# 4. Перезагрузка systemd
|
|
echo -e "${GREEN}4. Перезагрузка systemd...${NC}"
|
|
systemctl daemon-reload
|
|
systemctl reset-failed
|
|
echo -e " ✅ systemd перезагружен"
|
|
|
|
# 5. Удаление sudoers файла
|
|
echo -e "${GREEN}5. Удаление sudoers файла...${NC}"
|
|
if [ -f "/etc/sudoers.d/audio-recorder" ]; then
|
|
rm -f /etc/sudoers.d/audio-recorder
|
|
echo -e " ✅ Sudoers файл удален"
|
|
else
|
|
echo -e " ⚠️ Sudoers файл не найден"
|
|
fi
|
|
|
|
# 6. Удаление sysctl конфигурации
|
|
echo -e "${GREEN}6. Удаление sysctl конфигурации...${NC}"
|
|
if [ -f "/etc/sysctl.d/99-audio-recorder.conf" ]; then
|
|
rm -f /etc/sysctl.d/99-audio-recorder.conf
|
|
echo -e " ✅ Sysctl конфиг удален"
|
|
else
|
|
echo -e " ⚠️ Sysctl конфиг не найден"
|
|
fi
|
|
|
|
# 7. Удаление ALSA конфигурации
|
|
echo -e "${GREEN}7. Удаление ALSA конфигурации...${NC}"
|
|
if [ -f "/etc/asound.conf" ] && grep -q "audio-recorder" /etc/asound.conf 2>/dev/null; then
|
|
rm -f /etc/asound.conf
|
|
echo -e " ✅ ALSA конфиг удален"
|
|
else
|
|
echo -e " ⚠️ ALSA конфиг не найден"
|
|
fi
|
|
|
|
# 8. Удаление WireGuard модуля
|
|
echo -e "${GREEN}8. Удаление WireGuard модуля...${NC}"
|
|
if [ -f "/etc/modules-load.d/wireguard.conf" ] && grep -q "wireguard" /etc/modules-load.d/wireguard.conf 2>/dev/null; then
|
|
rm -f /etc/modules-load.d/wireguard.conf
|
|
echo -e " ✅ WireGuard модуль удален"
|
|
else
|
|
echo -e " ⚠️ WireGuard модуль не найден"
|
|
fi
|
|
|
|
# 9. Удаление пользователя
|
|
echo -e "${GREEN}9. Удаление пользователя...${NC}"
|
|
if id -u ${APP_USER} > /dev/null 2>&1; then
|
|
userdel ${APP_USER} 2>/dev/null || true
|
|
echo -e " ✅ Пользователь ${APP_USER} удален"
|
|
else
|
|
echo -e " ⚠️ Пользователь ${APP_USER} не найден"
|
|
fi
|
|
|
|
# 10. Удаление установочной директории
|
|
echo -e "${GREEN}10. Удаление установочной директории...${NC}"
|
|
if [ -d "$INSTALL_DIR" ]; then
|
|
if [ "$KEEP_RECORDINGS" = "y" ] || [ "$KEEP_RECORDINGS" = "Y" ]; then
|
|
echo -e " 📀 Сохраняем записи..."
|
|
if [ -d "$RECORDINGS_DIR" ]; then
|
|
BACKUP_DIR="/tmp/audio-recorder-backup-$(date +%Y%m%d_%H%M%S)"
|
|
mkdir -p "$BACKUP_DIR"
|
|
cp -r "$RECORDINGS_DIR" "$BACKUP_DIR/"
|
|
echo -e " ✅ Записи сохранены в: $BACKUP_DIR"
|
|
fi
|
|
fi
|
|
|
|
rm -rf "$INSTALL_DIR"
|
|
echo -e " ✅ Установочная директория удалена"
|
|
else
|
|
echo -e " ⚠️ Установочная директория не найдена"
|
|
fi
|
|
|
|
# 11. Очистка временных файлов
|
|
echo -e "${GREEN}11. Очистка временных файлов...${NC}"
|
|
rm -rf /tmp/audio-recorder-* 2>/dev/null || true
|
|
rm -rf /tmp/wpa_supplicant.conf 2>/dev/null || true
|
|
rm -rf /tmp/openvpn_temp_*.conf 2>/dev/null || true
|
|
echo -e " ✅ Временные файлы очищены"
|
|
|
|
# 12. Очистка логов
|
|
echo -e "${GREEN}12. Очистка логов...${NC}"
|
|
read -p "Удалить файлы логов? (y/n): " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
rm -rf /var/log/audio-recorder 2>/dev/null || true
|
|
rm -f /var/log/audio-recorder.log 2>/dev/null || true
|
|
journalctl --rotate --vacuum-time=1s 2>/dev/null || true
|
|
echo -e " ✅ Логи удалены"
|
|
else
|
|
echo -e " ⚠️ Логи сохранены"
|
|
fi
|
|
|
|
# 13. Проверка оставшихся процессов
|
|
echo -e "${GREEN}13. Проверка оставшихся процессов...${NC}"
|
|
if pgrep -f "audio-recorder" > /dev/null; then
|
|
echo -e " ${YELLOW}⚠️ Найдены остаточные процессы audio-recorder${NC}"
|
|
pkill -f "audio-recorder" 2>/dev/null || true
|
|
echo -e " ✅ Процессы остановлены"
|
|
else
|
|
echo -e " ✅ Остаточных процессов нет"
|
|
fi
|
|
|
|
# 14. Проверка порта 80
|
|
echo -e "${GREEN}14. Проверка порта 80...${NC}"
|
|
if command -v netstat &> /dev/null; then
|
|
if netstat -tlnp 2>/dev/null | grep -q ":80 "; then
|
|
echo -e " ${YELLOW}⚠️ Порт 80 занят другим приложением${NC}"
|
|
else
|
|
echo -e " ✅ Порт 80 свободен"
|
|
fi
|
|
elif command -v ss &> /dev/null; then
|
|
if ss -tlnp 2>/dev/null | grep -q ":80 "; then
|
|
echo -e " ${YELLOW}⚠️ Порт 80 занят другим приложением${NC}"
|
|
else
|
|
echo -e " ✅ Порт 80 свободен"
|
|
fi
|
|
else
|
|
echo -e " ⚠️ Не удалось проверить порт (netstat/ss не найдены)"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN}Удаление завершено!${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e ""
|
|
echo -e "${BLUE}Итог:${NC}"
|
|
echo -e " - Служба удалена: ${SERVICE_NAME}"
|
|
echo -e " - Установочная директория: ${INSTALL_DIR} - УДАЛЕНА"
|
|
if [ "$KEEP_RECORDINGS" = "y" ] || [ "$KEEP_RECORDINGS" = "Y" ]; then
|
|
echo -e " - Записи: СОХРАНЕНЫ в /tmp/audio-recorder-backup-*"
|
|
else
|
|
echo -e " - Записи: УДАЛЕНЫ"
|
|
fi
|
|
echo -e " - Пользователь: ${APP_USER} - УДАЛЕН"
|
|
echo -e ""
|
|
echo -e "${YELLOW}Примечание: Системные пакеты (ffmpeg, wireguard, openvpn и др.) НЕ БЫЛИ УДАЛЕНЫ${NC}"
|
|
echo -e "${YELLOW}так как они могут использоваться другими приложениями.${NC}"
|
|
echo -e ""
|
|
echo -e "${GREEN}Для полной переустановки:${NC}"
|
|
echo -e " 1. Пересоберите приложение: go build -o audio-recorder ."
|
|
echo -e " 2. Запустите установку: sudo ./install-service.sh"
|
|
echo -e ""
|
|
echo -e "${RED}Удаление завершено.${NC}" |