Skip to content

Commit

Permalink
Refactored setup script
Browse files Browse the repository at this point in the history
- Put main logic into the main function
- Password prompting from user is isolated into the promptForPassword function
  • Loading branch information
jasonheecs committed Dec 6, 2016
1 parent 1e31d3f commit b1cddca
Showing 1 changed file with 52 additions and 44 deletions.
96 changes: 52 additions & 44 deletions setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,42 @@ current_dir=$(getCurrentDir)
includeDependencies
output_file="output.log"

function main() {
read -rp "Enter the username of the new user account:" username

promptForPassword

# Run setup functions
trap cleanup EXIT SIGHUP SIGINT SIGTERM

addUserAccount "${username}" "${password}"

read -rp $'Paste in the public SSH key for the new user:\n' sshKey
echo 'Running setup script...'
logTimestamp "${output_file}"

exec 3>&1 >>"${output_file}" 2>&1
disableSudoPassword "${username}"
addSSHKey "${username}" "${sshKey}"
changeSSHConfig
setupUfw

if ! hasSwap; then
setupSwap
fi

setupTimezone

echo "Installing Network Time Protocol... " >&3
configureNTP

sudo service ssh restart

cleanup

echo "Setup Done! Log file is located at ${output_file}" >&3
}

function setupSwap() {
createSwap
mountSwap
Expand Down Expand Up @@ -53,49 +89,21 @@ function setupTimezone() {
echo "Timezone is set to $(cat /etc/timezone)" >&3
}

read -rp "Enter the username of the new user account:" username

# Keep prompting for the password and password confirmation
PASSWORDS_MATCH=0
while [ "${PASSWORDS_MATCH}" -eq "0" ]; do
read -s -rp "Enter new UNIX password:" password
printf "\n"
read -s -rp "Retype new UNIX password:" password_confirmation
printf "\n"

if [[ "${password}" != "${password_confirmation}" ]]; then
echo "Passwords do not match! Please try again."
else
PASSWORDS_MATCH=1
fi
done

# Run setup functions
trap cleanup EXIT SIGHUP SIGINT SIGTERM

addUserAccount "${username}" "${password}"

read -rp $'Paste in the public SSH key for the new user:\n' sshKey
echo 'Running setup script...'
logTimestamp "${output_file}"

exec 3>&1 >>"${output_file}" 2>&1
disableSudoPassword "${username}"
addSSHKey "${username}" "${sshKey}"
changeSSHConfig
setupUfw

if ! hasSwap; then
setupSwap
fi

setupTimezone

echo "Installing Network Time Protocol... " >&3
configureNTP

sudo service ssh restart

cleanup
function promptForPassword() {
PASSWORDS_MATCH=0
while [ "${PASSWORDS_MATCH}" -eq "0" ]; do
read -s -rp "Enter new UNIX password:" password
printf "\n"
read -s -rp "Retype new UNIX password:" password_confirmation
printf "\n"

if [[ "${password}" != "${password_confirmation}" ]]; then
echo "Passwords do not match! Please try again."
else
PASSWORDS_MATCH=1
fi
done
}

echo "Setup Done! Log file is located at ${output_file}" >&3
main

0 comments on commit b1cddca

Please sign in to comment.