#!/bin/bash

# 2019-08-23T00:36Z; baltakatei> 

# This bash script should prompt the user for a URL, email address,
# user name, text notes, and then generate a password, push this
# password into the x clipboard, and then save a text file containing
# the prompted details. This script should be run by Debian-based
# GNU/Linux machines owned by baltakatei.

# This file by Steven Baltakatei Sandoval is licensed under CC BY-SA 4.0.

# Ask user for registration fields
echo "What is the URL for whose website you are registering? (omit https://)"
read input_URL
echo "input_URL is:"$input_URL

echo "What is your email address?"
read input_EMAIL
echo "input_EMAIL is:"$input_EMAIL

echo "What is your user name (if any)?"
read input_USERNAME
echo "input_USERNAME is:"$input_USERNAME

echo "Notes?"
read input_NOTE
echo "input_NOTE is:"$input_NOTE

# Determine long date
LONGDATE=$(date +%Y%m%dT%H%M%S.%N%z)
echo "Current time is:"$LONGDATE

# Determine hostname
HOSTNAME=$(hostname)
echo "HOSTNAME is:"$HOSTNAME

# Perform superstitious PRNG spells
echo $LONGDATE$HOSTNAME > /dev/random
echo $(cat /proc/sys/kernel/random/entropy_avail)" bits of entropy in /dev/random"

# Determine random 128-bit entropy password
PASS1=$(LC_ALL=C tr -dc "[:graph:]" < /dev/urandom | head -c ${1:-8})
PASS2=$(LC_ALL=C tr -dc "[:graph:]" < /dev/urandom | head -c ${1:-8})
PASS3=$(LC_ALL=C tr -dc "[:graph:]" < /dev/urandom | head -c ${1:-4})
PASSPHRASE=$PASS1" "$PASS2" "$PASS3
echo "PASSPHRASE is:"$PASSPHRASE

# Print fields to temporary file
#echo "PASSPHRASE="$PASSPHRASE >> $PATHFILENAME
#echo "URL="$input_URL >> $PATHFILENAME
#echo "EMAIL="$input_EMAIL >> $PATHFILENAME
#echo "USERNAME="$input_USERNAME >> $PATHFILENAME
#echo "NOTE="$input_NOTE >> $PATHFILENAME
#echo "DATE="$LONGDATE >> $PATHFILE

# Push passphrase to clipboard
echo -n $PASSPHRASE | xclip -selection clipboard

echo "Passphrase copied to clipboard via xclip."

# Push passphrase to `pass`
#printf "$PASSPHRASE\nURL=$input_URL\nEMAIL=$input_EMAIL\nUSERNAME=$input_USERNAME\nNOTE=$input_NOTE\nDATE=$LONGDATE\n" | pass insert -m 01\ Online\ Services/$input_URL

echo "$PASSPHRASE
URL=$input_URL
EMAIL=$input_EMAIL
USERNAME=$input_USERNAME
NOTE=$input_NOTE
DATE=$LONGDATE
" | pass insert -m 01\ Online\ Services/$input_URL