#!/bin/bash
# Check package inventory based on available package manager
if command -v apt &> /dev/null; then
echo "Updating apt package inventory..."
sudo apt update
elif command -v yum &> /dev/null; then
echo "Updating yum package inventory..."
sudo yum makecache
elif command -v dnf &> /dev/null; then
echo "Updating dnf package inventory..."
sudo dnf makecache
else
echo "Error: No supported package manager found (apt/yum/dnf)."
exit 1
fi
# Check if unzip is installed, install if not
if ! command -v unzip &> /dev/null; then
echo "unzip is not installed. Installing unzip..."
if command -v apt &> /dev/null; then
sudo apt install -y unzip
elif command -v yum &> /dev/null; then
sudo yum install -y unzip
elif command -v dnf &> /dev/null; then
sudo dnf install -y unzip
else
echo "Error: No supported package manager found (apt/yum/dnf)."
exit 1
fi
fi
# Download the snell-server executable
wget https://dl.nssurge.com/snell/snell-server-v4.1.1-linux-amd64.zip -O /tmp/snell-server.zip
# Create the target directory
mkdir -p /opt/Surge
# Unzip the downloaded file to /opt/Surge
unzip /tmp/snell-server.zip -d /opt/Surge
# Add executable permissions to snell-server
chmod +x /opt/Surge/snell-server
# Change to /opt/Surge directory and run snell-server with 'y' to generate config
cd /opt/Surge
echo "y" | ./snell-server
# Create systemd service file
cat << EOF > /etc/systemd/system/snell-server.service
[Unit]
Description=Snell Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/opt/Surge/snell-server -c /opt/Surge/snell-server.conf
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
EOF
# Reload systemd daemon and enable the service
systemctl daemon-reload
systemctl enable snell-server.service
systemctl start snell-server.service
# Clean up temporary file
rm /tmp/snell-server.zip