#!/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 Samba server..."
apt-get install samba smbclient cifs-utils -y

# Direktori yang akan dibagikan (share)
SHARE_DIR="/srv/samba/public"

echo "Membuat direktori sharing di $SHARE_DIR..."
mkdir -p "$SHARE_DIR"
# Memberikan izin penuh agar bisa diakses oleh siapa saja (Guest/Public)
chmod -R 0777 "$SHARE_DIR"
chown -R nobody:nogroup "$SHARE_DIR"

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

echo "Menambahkan konfigurasi share publik ke /etc/samba/smb.conf..."
cat <<EOF >> /etc/samba/smb.conf

# Konfigurasi Share Publik dari Script
[PublicShare]
   comment = Publik Share Samba
   path = $SHARE_DIR
   browseable = yes
   read only = no
   guest ok = yes
   force user = nobody
   force group = nogroup
   create mask = 0666
   directory mask = 0777
   # Mencegah pengguna mengunggah/membuat file .txt
   veto files = /*.txt/
EOF

echo "Membuat user sistem dan user Samba (samba1 & samba2)..."
# Password default untuk user baru
DEFAULT_PASSWORD="password123"

# Buat direktori private terlebih dahulu
mkdir -p /srv/samba/samba1
mkdir -p /srv/samba/samba2

# Buat user sistem (jadikan folder private sebagai home) jika belum ada
id -u samba1 &>/dev/null || useradd -d /srv/samba/samba1 -s /usr/sbin/nologin samba1
id -u samba2 &>/dev/null || useradd -d /srv/samba/samba2 -s /usr/sbin/nologin samba2

# Pastikan kepemilikan dan hak akses foldernya mutlak milik user terkait
chown samba1:samba1 /srv/samba/samba1
chown samba2:samba2 /srv/samba/samba2
chmod 0700 /srv/samba/samba1
chmod 0700 /srv/samba/samba2

# Tambahkan ke Samba dan set password tanpa prompt interaktif
(echo "$DEFAULT_PASSWORD"; echo "$DEFAULT_PASSWORD") | smbpasswd -s -a samba1
(echo "$DEFAULT_PASSWORD"; echo "$DEFAULT_PASSWORD") | smbpasswd -s -a samba2

# Pastikan user samba aktif
smbpasswd -e samba1
smbpasswd -e samba2

echo "Menambahkan konfigurasi folder private ke /etc/samba/smb.conf..."
cat <<EOF >> /etc/samba/smb.conf

# Folder Private Khusus Samba1
[samba1]
   comment = Private Folder Samba1
   path = /srv/samba/samba1
   browseable = yes
   read only = no
   valid users = samba1
   create mask = 0700
   directory mask = 0700
   # Mencegah pengguna mengunggah file .txt
   veto files = /*.txt/

# Folder Private Khusus Samba2
[samba2]
   comment = Private Folder Samba2
   path = /srv/samba/samba2
   browseable = yes
   read only = no
   valid users = samba2
   create mask = 0700
   directory mask = 0700
   # Mencegah pengguna mengunggah file .txt
   veto files = /*.txt/
EOF

echo "Mengaktifkan dan menjalankan ulang layanan Samba..."
systemctl restart smbd nmbd
systemctl enable smbd nmbd

echo "---------------------------------------------------"
echo "Instalasi dan Konfigurasi Samba selesai!"
echo "Folder publik: \\\\<ip_server_anda>\\PublicShare"
echo "Telah dibuat 2 user Samba:"
echo " - Username: samba1 | Password: $DEFAULT_PASSWORD"
echo " - Username: samba2 | Password: $DEFAULT_PASSWORD"
echo "(Anda dapat mengubah password tersebut nantinya menggunakan perintah 'smbpasswd namauser')"
