diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-03-16 01:53:33 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-03-16 01:55:22 +0100 |
| commit | f6fd20fdc4def2406614eebb958ef15f6085bb0e (patch) | |
| tree | 0c115b0458e24b51644b87b9187682f6d1e8eb15 | |
| parent | 27b8a6971861cb4ead0eb07965bb4873f591ad24 (diff) | |
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.
| -rw-r--r-- | README.md | 1 | ||||
| -rwxr-xr-x | usergen | 46 |
2 files changed, 40 insertions, 7 deletions
@@ -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 @@ -2,8 +2,29 @@ set -e +usage() +{ + echo "$0 <dir>" +} + +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" |
