#!/bin/bash

base_home=/ftp_tree
userList="$@" #"user1 user2 user3" # or `cat list_of_users.txt`

# Check if users are provided
if [ $# -eq 0 ]; then
    echo "Usage: $0 user1 user2 ..."
    exit 1
fi

mkdir -p $base_home
cd $base_home

# Iterate all passed arguments
for uzer in $userList;
  do echo $uzer;

  # Random pass of 16 chars
  pass=$(openssl rand -base64 16 | tr -d "=+/" | cut -c1-16);

  # Create user
  mkdir $base_home/$uzer
  useradd --badname -s /usr/sbin/nologin -d $base_home/$uzer -G ftp_user,atrhub $uzer;

  # Check if user creation succeeded
  if [ $? -ne 0 ]; then
      echo "Failed to create user $uzer"
      continue
  fi

  echo -e "$pass\n$pass" | passwd $uzer

  # Prepare jail permissions for the home (needed for the sftp chroot)
  chown root:root $uzer;
  rm -rf $base_home/$uzer/.cache
  chmod 755 $uzer
  mkdir -p $uzer/{Entrada,Salida,01_Salida_FACT,02_Salida_VAL}
  chown $uzer:atrhub $uzer/{Entrada,Salida,01_Salida_FACT,02_Salida_VAL};

  # Propagate grup to new files
  chmod g+s $uzer/{Entrada,Salida,01_Salida_FACT,02_Salida_VAL};
  chmod u+s  $uzer/{Entrada,Salida,01_Salida_FACT,02_Salida_VAL};

  # Enforce new perms for this forlders
  setfacl -d -m g::rwx,o::0 $uzer/{Entrada,Salida,01_Salida_FACT,02_Salida_VAL};
  chmod g+w $uzer/{Entrada,Salida,01_Salida_FACT,02_Salida_VAL};

  # Dump creation status
  echo "User created properly: $uzer : $pass";
  echo " - Remember to test it using $ sftp $uzer@localhost"
  echo
done;
