Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save thuanpham582002/3b3d087aeee1a5bf53744b4d1aa90160 to your computer and use it in GitHub Desktop.
Save thuanpham582002/3b3d087aeee1a5bf53744b4d1aa90160 to your computer and use it in GitHub Desktop.
#!/bin/bash
# SoftEther VPN Server Uninstall Script
# Gỡ bỏ hoàn toàn SoftEther VPN Server
# Author: AI Assistant
# Version: 1.0
set -e # Exit on any error
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Logging functions
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
}
error() {
echo -e "${RED}[ERROR]${NC} $1" >&2
}
warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
# Check if running as root
check_root() {
if [[ $EUID -ne 0 ]]; then
error "Script này phải chạy với quyền root"
exit 1
fi
}
# Stop VPN Server service
stop_vpn_service() {
log "Dừng SoftEther VPN Server service..."
# Stop systemd service if exists
if systemctl is-active --quiet softether-vpnserver 2>/dev/null; then
systemctl stop softether-vpnserver
info "✓ Đã dừng systemd service"
fi
# Stop VPN server process directly
if [[ -f /opt/vpnserver/vpnserver ]]; then
cd /opt/vpnserver
./vpnserver stop 2>/dev/null || true
info "✓ Đã dừng VPN server process"
fi
# Kill any remaining processes
pkill -f vpnserver 2>/dev/null || true
pkill -f vpncmd 2>/dev/null || true
sleep 2
# Force kill if still running
pkill -9 -f vpnserver 2>/dev/null || true
pkill -9 -f vpncmd 2>/dev/null || true
}
# Remove systemd service
remove_systemd_service() {
log "Gỡ bỏ systemd service..."
if [[ -f /etc/systemd/system/softether-vpnserver.service ]]; then
systemctl disable softether-vpnserver 2>/dev/null || true
rm -f /etc/systemd/system/softether-vpnserver.service
systemctl daemon-reload
info "✓ Đã gỡ bỏ systemd service"
else
info "✓ Không tìm thấy systemd service"
fi
}
# Remove VPN Server files
remove_vpn_files() {
log "Gỡ bỏ các file SoftEther VPN..."
# Remove main installation directory
if [[ -d /opt/vpnserver ]]; then
rm -rf /opt/vpnserver
info "✓ Đã xóa /opt/vpnserver"
fi
# Remove any leftover files
rm -f /opt/softether-vpnserver.tar.gz 2>/dev/null || true
# Remove config files
rm -f /root/vpn_config.ovpn 2>/dev/null || true
rm -f /tmp/vpn_config.ovpn 2>/dev/null || true
info "✓ Đã xóa các file cấu hình"
}
# Remove firewall rules
remove_firewall_rules() {
log "Gỡ bỏ firewall rules..."
# UFW rules
if command -v ufw &> /dev/null; then
ufw delete allow 1194/udp 2>/dev/null || true
ufw delete allow 443/tcp 2>/dev/null || true
ufw delete allow 5555/tcp 2>/dev/null || true
info "✓ Đã gỡ bỏ UFW rules"
fi
# Firewall-cmd rules
if command -v firewall-cmd &> /dev/null; then
firewall-cmd --permanent --remove-port=1194/udp 2>/dev/null || true
firewall-cmd --permanent --remove-port=443/tcp 2>/dev/null || true
firewall-cmd --permanent --remove-port=5555/tcp 2>/dev/null || true
firewall-cmd --reload 2>/dev/null || true
info "✓ Đã gỡ bỏ firewall-cmd rules"
fi
# IPTables rules (basic removal - might need manual cleanup)
if command -v iptables &> /dev/null; then
iptables -D INPUT -p udp --dport 1194 -j ACCEPT 2>/dev/null || true
iptables -D INPUT -p tcp --dport 443 -j ACCEPT 2>/dev/null || true
iptables -D INPUT -p tcp --dport 5555 -j ACCEPT 2>/dev/null || true
warning "⚠️ IPTables rules đã được gỡ bỏ cơ bản, kiểm tra thủ công nếu cần"
fi
}
# Clean up temporary files
cleanup_temp_files() {
log "Dọn dẹp temporary files..."
# Remove script-generated temp files
rm -f /tmp/license_accept.exp 2>/dev/null || true
rm -f /tmp/vpn_setup_initial.txt 2>/dev/null || true
rm -f /tmp/vpn_setup_main.txt 2>/dev/null || true
rm -f /tmp/vpn_setup.txt 2>/dev/null || true
info "✓ Đã dọn dẹp temporary files"
}
# Check if SoftEther VPN is completely removed
verify_removal() {
log "Kiểm tra việc gỡ bỏ..."
local issues=0
# Check for running processes
if pgrep -f vpnserver > /dev/null; then
error "✗ Vẫn còn vpnserver process đang chạy"
issues=$((issues + 1))
else
info "✓ Không còn vpnserver process"
fi
# Check for service
if systemctl list-unit-files | grep -q softether-vpnserver; then
error "✗ Vẫn còn systemd service"
issues=$((issues + 1))
else
info "✓ Đã gỡ bỏ systemd service"
fi
# Check for files
if [[ -d /opt/vpnserver ]]; then
error "✗ Vẫn còn thư mục /opt/vpnserver"
issues=$((issues + 1))
else
info "✓ Đã xóa thư mục cài đặt"
fi
# Check for listening ports
if netstat -tulpn 2>/dev/null | grep -E ":1194|:443|:5555" > /dev/null; then
warning "⚠️ Vẫn có services đang lắng nghe trên các port VPN"
else
info "✓ Không còn services lắng nghe trên các port VPN"
fi
return $issues
}
# Main uninstall function
main() {
echo "=================================================================="
echo -e "${RED}🗑️ SoftEther VPN Server Uninstaller${NC}"
echo -e "${YELLOW}Gỡ bỏ hoàn toàn SoftEther VPN Server${NC}"
echo "=================================================================="
echo ""
# Confirm uninstall
echo -e "${YELLOW}CẢNH BÁO: Script này sẽ gỡ bỏ hoàn toàn SoftEther VPN Server!${NC}"
echo "- Tất cả cấu hình VPN sẽ bị mất"
echo "- Các user VPN sẽ bị xóa"
echo "- Systemd service sẽ bị gỡ bỏ"
echo ""
read -p "Bạn có chắc chắn muốn tiếp tục? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log "Hủy bỏ quá trình uninstall"
exit 0
fi
echo ""
log "Bắt đầu gỡ bỏ SoftEther VPN Server..."
check_root
stop_vpn_service
remove_systemd_service
remove_vpn_files
remove_firewall_rules
cleanup_temp_files
echo ""
if verify_removal; then
echo "=================================================================="
echo -e "${GREEN}✅ SoftEther VPN Server đã được gỡ bỏ hoàn toàn!${NC}"
echo "=================================================================="
echo ""
echo -e "${BLUE}Bước tiếp theo:${NC}"
echo "1. Chạy lại script cài đặt để cài mới: bash install_softether_vpn_no_upgrade.sh"
echo "2. Hoặc cài đặt phiên bản khác nếu cần"
echo ""
echo -e "${YELLOW}Lưu ý:${NC}"
echo "- Tất cả cấu hình VPN cũ đã bị xóa"
echo "- Cần cấu hình lại từ đầu"
echo ""
else
echo "=================================================================="
echo -e "${YELLOW}⚠️ Gỡ bỏ hoàn tất nhưng có một số vấn đề${NC}"
echo "=================================================================="
echo ""
echo "Vui lòng kiểm tra các lỗi ở trên và gỡ bỏ thủ công nếu cần."
echo ""
fi
}
# Run main function
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment