#!/bin/bash


read -p "Username to create: " username


if id "$username" >/dev/null 2>&1; then
    echo "This username already exists, aborting..."
	exit
fi


echo "Downloading the ssh public key..."
URL="https://raw.githubusercontent.com/ffrgw/ssh-public-keys/refs/heads/master/${username}.ssh.pub"
if wget -q "${URL}" >/dev/null 2>&1; then
	echo " - Download successfully completed"
else
	echo " - Failed to download, aborting..."
	exit
fi


echo "Checking the ssh public key..."
if ssh-keygen -l -f "${username}.ssh.pub" >/dev/null 2>&1; then
	echo " - The ssh public key is valid"
else
    echo " - The ssh public key is not valid, aborting..."
	rm -f "${username}.ssh.pub"
	exit
fi


echo "Creating user ${username}..."
/usr/sbin/useradd -m -d /home/$username -s /bin/bash $username


echo "Deleting password..."
passwd -d $username


echo "Require user to set password at first login..."
chage -d0 $username


echo "Add user to sudoers group.."
/usr/sbin/adduser $username sudo


echo "Restrict user directory access..."
chmod 700 /home/$username


echo "Creating SSH dir..."
mkdir /home/$username/.ssh


echo "Moving SSH key..."
mv ${username}.ssh.pub /home/$username/.ssh/authorized_keys


echo "Changing home dir owner..."
chown -R $username:$username /home/$username/.ssh


echo "Fixing SSH dir permissions..."
chmod 700 /home/$username/.ssh


echo "Fixing authorized_keys permissions..."
chmod 600 /home/$username/.ssh/authorized_keys

