-#!/bin/sh -xe
+#!/bin/sh -e
-login=$1
+. ./env.sh
+
+email=$1
password=$2
+quota=$3
-if [ -z "$login" -o -z "$password" ]; then
- echo "Usage: $0 login password"
+if [ -z "$email" -o -z "$password" ]; then
+ echo "Usage: $0 email password [quota]"
exit 1
fi
-mkdir -p users/$login/blob
-echo "$login:$password" > users/$login/secrets
+test -z "$quota" && quota=200k
+
+if passwd=`grep ":$email:" /var/lib/extrausers/passwd` ; then
+ echo "## $passwd" 1>&2
+ uid=`echo $passwd | cut -d: -f3`
+else
+ uid=`tail -1 /var/lib/extrausers/passwd | cut -d: -f3`
+ echo "## last uid: $uid" 1>&2
+ uid=`expr $uid + 1`
+ echo "u$uid:$password:$uid:$PORT:$email:$SLICE/$uid:/bin/false" \
+ >> /var/lib/extrausers/passwd
+fi
+
+if [ ! -e $SLICE/$uid ] ; then
+ mkdir $SLICE/$uid
+ chown $uid:$PORT $SLICE/$uid
+ zfs set userquota@u$uid=$quota $ZSLICE
+fi
+
+secrets="$SLICE/$uid/.secrets"
+grep "^u$uid:" $secrets 1>&2 || echo "u$uid:$password" >> $secrets
+md5mail=`echo -n $email | md5sum | cut -d" " -f1`
+md5passwd=`echo -n $password | md5sum | cut -d" " -f1`
+grep "^$md5mail:" $secrets 1>&2 || echo "$md5mail:$md5passwd" >> $secrets
+
+id u$uid 1>&2
+zfs get userquota@u$uid $ZSLICE 1>&2
+zfs get userused@u$uid $ZSLICE 1>&2
+cat $secrets 1>&2
+
+echo "u$uid"