slcl/usergen

35 lines
610 B
Bash
Executable File

#! /bin/sh
set -e
echo Username: >&2
read -r USER
echo Password: >&2
read -r PWD
echo "Quota, in MiB (leave empty for unlimited quota):" >&2
read -r QUOTA
PWD=$(printf '%s' $PWD | xxd -p | tr -d '\n')
SALT=$(openssl rand 32 | xxd -p | tr -d '\n')
KEY=$(openssl rand 32 | xxd -p | tr -d '\n')
PWD=$(printf '%s%s' $SALT $PWD)
ROUNDS=1000
for i in $(seq $ROUNDS)
do
printf "\r%d/$ROUNDS" $i >&2
PWD=$(printf '%s' $PWD | xxd -p -r | sha256sum | cut -d' ' -f1)
done
echo >&2
cat <<-EOF
{
"name": "$USER",
"password": "$PWD",
"salt": "$SALT",
"key": "$KEY",
"quota": "$QUOTA"
}
EOF