X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=channel.sh;h=408899445bbedbe436bcc6469b733575d34eb8eb;hb=70bea7862f084265e56d48948299df6363c2f8f7;hp=1f86e5214c061525e5e6486c9db93f03f6367c00;hpb=1b78a6c60a0c44a164dcf12f1e7683008f2cf402;p=httpchat diff --git a/channel.sh b/channel.sh index 1f86e52..4088994 100755 --- a/channel.sh +++ b/channel.sh @@ -7,13 +7,21 @@ fi case $(POST action) in create) - if [ ! -f "$chatfile" ]; then + if mkdir "${_DATA}/${LOCATION}"; then { randomid; printf ' '; STRING "$nickname"; echo; } >"$chatfile" fi REDIRECT "$(URL "/$LOCATION")" ;; submit) - if [ -f "$chatfile" -a "$channelkey" = "$(POST channelkey)" ]; then + read lasttime x <<-EOFread + $(tail -n 50 "$chatfile" |grep -F " $(STRING "$nickname"): " |tail -n1) + EOFread + if [ "$lasttime" ]; then + lasttime="$(date -d "${lasttime%_*} ${lasttime#*_}" +%s)" + else + lasttime=0 + fi + if [ -f "$chatfile" -a "$channelkey" = "$(POST channelkey)" -a "$(POST timenonce)" -gt "$lasttime" ]; then printf "%s %s: %s\n" "$(date +%F_%T)" "$(STRING "$nickname")" "$(POST message |STRING)" >>"$chatfile" fi REDIRECT "$(URL "/$LOCATION")" @@ -32,10 +40,10 @@ else { printf ' [form #channel method="POST" [submit "action" "submit" style="display: none;"] - [input type=hidden name=channelkey value="%s"] + [input type=hidden name=channelkey value="%s"][input type=hidden name=timenonce value="%s"] [a .settings href="?settings#nick" Settings][input autocomplete="off" name="message" autofocus=true][submit "action" "submit" Send!] ] - ' "$channelkey" + ' "$channelkey" "$_DATE" SHESCAPE='s;[]&<>#."[];\\&;g;' while sleep 10; do printf '\n'; done &