Make usergen a bit more useful

So far, usergen printed a JSON object over standard output that had to
be manually copied into db.json. Now, this step is done automatically,
thanks to jq(1). OTOH, user directory is now also created by usergen.
This commit is contained in:
Xavier Del Campo Romero 2023-03-16 01:53:33 +01:00
parent 27b8a69718
commit f6fd20fdc4
Signed by: xavi
GPG Key ID: 84FF3612A9BF43F2
2 changed files with 40 additions and 7 deletions

View File

@ -43,6 +43,7 @@ to `slcl`. If required, encryption should be done before uploading e.g.: using
- [`dynstr`](https://gitea.privatedns.org/xavi92/dynstr) - [`dynstr`](https://gitea.privatedns.org/xavi92/dynstr)
(provided as a `git` submodule). (provided as a `git` submodule).
- `xxd` (for [`usergen`](usergen) only). - `xxd` (for [`usergen`](usergen) only).
- `jq` (for [`usergen`](usergen) only).
- CMake (optional). - CMake (optional).
### Ubuntu / Debian ### Ubuntu / Debian

46
usergen
View File

@ -2,8 +2,29 @@
set -e set -e
usage()
{
echo "$0 <dir>"
}
if [ $# != 1 ]; then
usage >&2
exit 1
fi
DIR=$1
echo Username: >&2 echo Username: >&2
read -r USER read -r USER
DB="$DIR/db.json"
if jq '.users[].name' "$DB" | grep -q $USER
then
echo User $USER already in $DB >&2
exit 1
fi
echo Password: >&2 echo Password: >&2
read -r PWD read -r PWD
echo "Quota, in MiB (leave empty for unlimited quota):" >&2 echo "Quota, in MiB (leave empty for unlimited quota):" >&2
@ -23,12 +44,23 @@ do
done done
echo >&2 echo >&2
cat <<-EOF TMP=$(mktemp)
cleanup()
{ {
"name": "$USER", rm -f $TMP
"password": "$PWD",
"salt": "$SALT",
"key": "$KEY",
"quota": "$QUOTA"
} }
EOF
trap cleanup EXIT
jq ".users += [
{
\"name\": \"$USER\",
\"password\": \"$PWD\",
\"salt\": \"$SALT\",
\"key\": \"$KEY\",
\"quota\": \"$QUOTA\"
}]" "$DB" > $TMP
mv $TMP "$DB"
mkdir "$DIR/user/$USER"