#!/bin/bash

# Pure-FTPd Install Script for Debian
# Author: ChatGPT
# Description: Installs Pure-FTPd, creates an FTP user, and configures basic security.

# Variables
FTP_USER="timelapseptyltd"
FTP_HOME="/home/ftpuser/$FTP_USER"

# Update System
echo "Updating the system..."
sudo apt-get update -y

# Install Pure-FTPd and Firewall
echo "Installing Pure-FTPd and UFW..."
sudo apt-get install pure-ftpd ufw -y

# Create FTP User and Directory
echo "Creating FTP user and directory..."
sudo mkdir -p "$FTP_HOME"
sudo useradd -d "$FTP_HOME" -m -s /usr/sbin/nologin "$FTP_USER"
sudo chown -R "$FTP_USER":"$FTP_USER" "$FTP_HOME"
sudo chmod 750 "$FTP_HOME"

# Set Password for User
echo "Set password for FTP user $FTP_USER:"
sudo passwd "$FTP_USER"

# Configure Pure-FTPd
echo "Configuring Pure-FTPd settings..."
sudo bash -c 'echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone'
sudo bash -c 'echo "yes" > /etc/pure-ftpd/conf/NoAnonymous'
sudo bash -c 'echo "yes" > /etc/pure-ftpd/conf/AllowDotFiles'
sudo bash -c 'echo "40000 50000" > /etc/pure-ftpd/conf/PassivePortRange'
sudo bash -c 'echo "50" > /etc/pure-ftpd/conf/MaxClientsNumber'

# Enable PureDB Authentication
echo "Configuring virtual users..."
sudo pure-pw useradd "$FTP_USER" -u "$FTP_USER" -d "$FTP_HOME"
sudo pure-pw mkdb
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure
sudo systemctl restart pure-ftpd

# Firewall Configuration
echo "Configuring firewall rules..."
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw allow ssh
sudo ufw enable

# Restart Pure-FTPd
echo "Restarting Pure-FTPd service..."
sudo systemctl enable pure-ftpd
sudo systemctl restart pure-ftpd

# Final Confirmation
echo "Pure-FTPd installation completed!"
echo "FTP User: $FTP_USER"
echo "Home Directory: $FTP_HOME"
echo "Please test your FTP server using a client like FileZilla."
