X-Git-Url: http://git.plutz.net/?p=httpchat;a=blobdiff_plain;f=usernick.sh;fp=usernick.sh;h=13759eee48fb57169a599e8b2a1bc2ed339cac81;hp=3880fbe61972c6331b038ac3211b8ffbfa8ed925;hb=b0674d5fc925ab90c4bea072b0986a43be2471ef;hpb=a543d528437524c012ddafdd441ae967309287dd diff --git a/usernick.sh b/usernick.sh index 3880fbe..13759ee 100755 --- a/usernick.sh +++ b/usernick.sh @@ -36,6 +36,8 @@ else SET_COOKIE +"$((86400 * 365))" "user_client=${clientid}" HttpOnly SET_COOKIE +"$((86400 * 365))" "nick=$(URL "${nickname}")" else + export ERROR=".nick Your current nickname has been registered elsewhere." + QUERY_STRING=settings nickname='?Guest' fi fi @@ -43,17 +45,30 @@ fi case $(POST action) in nick) nick="$(POST nickname |username)" - if [ ! -d "$_DATA/@$nick" ]; then - SET_COOKIE +1209600 "nick=$(POST nickname |URL)" + if [ -d "$_DATA/@$nick" ]; then + export ERROR=".nick This nickname has already been registered elsewhere." + elif [ -z "$(POST nickname)" ]; then + SET_COOKIE +1209600 "nick=$(URL "${nickname#\?}")" REDIRECT "$(URL "/$LOCATION")" + elif [ -z "$nick" ]; then + export ERROR='.nick Nicknames must be between 3 and 24 characters long. They may not start with "&", "#", "?", "@", or "+" and they must not contain a "/".' else - export ERROR=".nick This nickname has already been registered elsewhere" + SET_COOKIE +1209600 "nick=$(URL $nick)" + REDIRECT "$(URL "/$LOCATION")" fi ;; register) regnick="$(POST regnick |username)" userdir="$_DATA/@${regnick}" - if [ "$regnick" ] && mkdir "$userdir"; then + if [ "$NICK_REGISTRATION" != on ]; then + export ERROR='.register Nickname registration is disabled on this server.' + elif [ "$regnick" = Guest ]; then + export ERROR='.register The name "Guest" may not be registered as a permanent nickname.' + elif [ -z "$regnick" ]; then + export ERROR='.register Nicknames must be between 3 and 24 characters long. They may not start with "&", "#", "?", "@", or "+" and they must not contain a "/".' + elif [ -d "$userdir" ]; then + export ERROR=".register This nickname has already been registered elsewhere." + elif mkdir "$userdir"; then secuid="$(randomid)"; clientid="$(randomid)" printf %s\\n "$secuid" >"${userdir}/secuid" clientid="${clientid}-$(printf '%s%s' "${clientid}" "${secuid}" |sha256sum |cut -d\ -f1)" @@ -61,7 +76,7 @@ case $(POST action) in SET_COOKIE +"$((86400 * 365))" "nick=$(URL "${regnick}")" REDIRECT "$(URL "/$LOCATION")" else - export ERROR=".register This nickname has already been registered elsewhere" + export ERROR=".register Registration failed, possibly due to faulty server configuration." fi ;; esac