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"