#!/bin/bash

# Fix CRLF if exists
sed -i 's/\r$//' "$0" 2>/dev/null

echo "==============================="
echo "   Samba Auto Setup Script"
echo "==============================="

# ===== USER INPUT =====
read -p "Set username [default: sambasikon]: " SMB_USER
SMB_USER=${SMB_USER:-sambasikon}

read -s -p "Set password [default: sambasikon]: " SMB_PASS
echo ""
SMB_PASS=${SMB_PASS:-sambasikon}

read -p "Set folder name [default: sharedfolder]: " SMB_FOLDER
SMB_FOLDER=${SMB_FOLDER:-sharedfolder}

# ===== PATH SET =====
SHARE_PATH="/home/$SMB_USER/$SMB_FOLDER"

echo ""
echo "Using configuration:"
echo "Username : $SMB_USER"
echo "Password : $SMB_PASS"
echo "Folder   : $SMB_FOLDER"
echo "Path     : $SHARE_PATH"
echo "-------------------------------"

# ===== INSTALL =====
echo "Updating system..."
apt update -y

echo "Installing Samba..."
apt install -y samba curl

# ===== USER CREATE =====
echo "Creating system user (if not exists)..."
id -u $SMB_USER &>/dev/null || useradd -m $SMB_USER

# ===== FOLDER CREATE =====
echo "Creating shared folder..."
mkdir -p $SHARE_PATH
chmod 770 $SHARE_PATH

# ===== PASSWORD SET =====
echo "Setting Samba password..."
(echo "$SMB_PASS"; echo "$SMB_PASS") | smbpasswd -a $SMB_USER

# ===== CONFIG WRITE =====
echo "Configuring Samba..."
cat > /etc/samba/smb.conf <<EOF
[global]
workgroup = WORKGROUP
security = user
map to guest = never

[$SMB_FOLDER]
path = $SHARE_PATH
browseable = yes
read only = no
valid users = $SMB_USER
EOF

# ===== PERMISSION =====
echo "Fixing permissions..."
chown -R $SMB_USER:$SMB_USER $SHARE_PATH

# ===== SERVICE =====
echo "Restarting Samba service..."
systemctl enable smbd
systemctl restart smbd

# ===== FIREWALL =====
echo "Allowing Samba through firewall..."
ufw allow samba 2>/dev/null || true

# ===== PUBLIC IP =====
PUBLIC_IP=$(curl -s ifconfig.me)

# ===== OUTPUT =====
echo "===================================="
echo "✅ Samba setup complete!"
echo ""
echo "Access from Windows:"
echo "\\\\$PUBLIC_IP\\$SMB_FOLDER"
echo ""
echo "Access from Linux:"
echo "smb://$PUBLIC_IP/$SMB_FOLDER"
echo ""
echo "Username: $SMB_USER"
echo "Password: $SMB_PASS"
echo "===================================="