From f6fd20fdc4def2406614eebb958ef15f6085bb0e Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Thu, 16 Mar 2023 01:53:33 +0100 Subject: [PATCH] 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. --- README.md | 1 + usergen | 46 +++++++++++++++++++++++++++++++++++++++------- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 241dd8b..255453c 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ to `slcl`. If required, encryption should be done before uploading e.g.: using - [`dynstr`](https://gitea.privatedns.org/xavi92/dynstr) (provided as a `git` submodule). - `xxd` (for [`usergen`](usergen) only). +- `jq` (for [`usergen`](usergen) only). - CMake (optional). ### Ubuntu / Debian diff --git a/usergen b/usergen index ec63fd3..42c18fe 100755 --- a/usergen +++ b/usergen @@ -2,8 +2,29 @@ set -e +usage() +{ + echo "$0 " +} + +if [ $# != 1 ]; then + usage >&2 + exit 1 +fi + +DIR=$1 + echo Username: >&2 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 read -r PWD echo "Quota, in MiB (leave empty for unlimited quota):" >&2 @@ -23,12 +44,23 @@ do done echo >&2 -cat <<-EOF +TMP=$(mktemp) + +cleanup() { - "name": "$USER", - "password": "$PWD", - "salt": "$SALT", - "key": "$KEY", - "quota": "$QUOTA" + rm -f $TMP } -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"