#!/bin/bash

# Pastikan script dijalankan sebagai root
if [ "$(id -u)" -ne 0 ]; then
  echo "Harap jalankan script ini sebagai root atau menggunakan sudo."
  exit 1
fi

echo "Memperbarui indeks paket..."
apt-get update -y

echo "Menginstal FTP server (vsftpd)..."
apt-get install vsftpd -y

echo "Membuat backup konfigurasi asli vsftpd.conf..."
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

echo "Menerapkan konfigurasi vsftpd..."
# Menulis ulang konfigurasi agar lebih aman dan mengizinkan user lokal untuk upload file
cat <<EOF > /etc/vsftpd.conf
listen=NO
listen_ipv6=YES
# Menonaktifkan login anonim
anonymous_enable=NO
# Mengizinkan user lokal di sistem untuk login
local_enable=YES
# Mengizinkan akses tulis/upload file
write_enable=YES
# Mask default untuk file yang diupload
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
# Membatasi user dengan chroot
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
# Menambahkan batasan port pasif (opsional)
pasv_min_port=40000
pasv_max_port=50000
# Mengarahkan default folder login user FTP langsung ke /var/www/html
local_root=/var/www/html
EOF

echo "Mengatur hak akses pada folder /var/www/html..."
# Membuat folder jika belum ada
mkdir -p /var/www/html

# Memberikan hak akses agar user FTP (dan user lainnya) bisa read & write di dalam folder ini
# Mengubah ownership ke www-data dan memberikan permission yang longgar untuk read & write
chown -R www-data:www-data /var/www/html
chmod -R 777 /var/www/html

echo "Mengaktifkan dan menjalankan ulang layanan vsftpd..."
systemctl restart vsftpd
systemctl enable vsftpd

echo "---------------------------------------------------"
echo "Instalasi dan Konfigurasi FTP (vsftpd) selesai!"
echo "Semua user lokal yang login via FTP sekarang akan langsung diarahkan ke direktori /var/www/html."
echo "Mereka memiliki hak akses penuh (read & write) pada direktori tersebut."
