X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=index.cgi;h=194ac98e3477de31d5343fa2827eeac690392865;hb=70bea7862f084265e56d48948299df6363c2f8f7;hp=2daabd824e750495e42b0bf42f318fbd5b576476;hpb=1cd692ed9af229a0118fb77b77bcbd889a0adcbf;p=httpchat diff --git a/index.cgi b/index.cgi index 2daabd8..194ac98 100755 --- a/index.cgi +++ b/index.cgi @@ -2,6 +2,7 @@ _EXEC=. _DATA=. +SESSION_TIMEOUT=43200 . "$_EXEC/cgilite/logging.sh" . "$_EXEC/cgilite/cgilite.sh" . "$_EXEC/cgilite/session.sh" @@ -13,7 +14,9 @@ LOCATION="${LOCATION%%/*}" yield_page(){ page="$1" - printf 'Content-Type: text/html; charset=utf-8\r\n\r\n' + printf '%s\r\n' 'Content-Type: text/html; charset=utf-8' \ + "Content-Security-Policy: script-src 'none'" \ + '' { printf '[html [head [meta name="viewport" content="width=device-width"] @@ -21,6 +24,7 @@ yield_page(){ [title Webchat] ] [body class="%s" ' "$page" + [ "$QUERY_STRING" = settings ] && settings_menu cat printf '] ]' } |"$_EXEC/cgilite/html-sh.sed" -u @@ -28,48 +32,55 @@ yield_page(){ settings_menu(){ printf ' - [input #check_settings type="checkbox"][label for=check_settings Settings] - [div #settings - [h1 Settings][label for=check_settings Close] - [input #set_nick type=radio name="setting" value="nick" selected][label for=set_nick Nickname] - [div [input name="nickname" value="%s"][submit "action" "nick" Set Cookie]] - ] + [form #settings method="POST" action="?" + [h1 Settings][a .settings href="?" Close]' + printf ' + [a .section href="#nick" Nickname] + [div #nick [input name="nickname" value="%s"][submit "action" "nick" Set Cookie]] ' "$(HTML "${nickname#\?}")" + printf ' + [a .section href="#register" Register Nickname] + [div #register + [p Registration will set a permanent Cookie in your Browser. + Registration requires neither a password, nor an email address.] + [input name="regnick" value="%s"][submit "action" "register" Register] + ]' "$(HTML "${nickname#\?}")" + printf ']' } +. "$_EXEC/usernick.sh" + case ${LOCATION} in - \&?*) chatfile="$_DATA/${LOCATION}" - . $_EXEC/channel.sh - exit 0 - ;; - @?*) if [ -d "$_DATA/${LOCATION}" ]; then - chatfile="$_DATA/${LOCATION}/?${SESSION_ID}" - . $_EXEC/channel.sh - else - REDIRECT / - fi - exit 0 - ;; - ~?*) if [ -d "$_DATA/@${LOCATION#~}" ]; then - pubinfo="$_DATA/@${LOCATION#~}/pubinfo" - page=pubinfo - else - REDIRECT / - fi - ;; webchat.css) - . "$_EXEC/file.sh" + . "$_EXEC/cgilite/file.sh" FILE "$_EXEC/webchat.css" exit 0 ;; - '') page=front;; - *) REDIRECT /;; -esac - -case "$page $(POST action)" in - pubinfo\ *);; - front\ *) yield_page front <<-EOF + \&?*) + chatfile="$_DATA/${LOCATION}/channel" + . "$_EXEC/channel.sh" + exit 0 + ;; + @?*) + if [ -d "$_DATA/${LOCATION}" ]; then + chatfile="$_DATA/${LOCATION}/?${SESSION_ID}" + . "$_EXEC/channel.sh" + else + REDIRECT / + fi + exit 0 + ;; + ~?*) + if [ -d "$_DATA/@${LOCATION#~}" ]; then + pubinfo="$_DATA/@${LOCATION#~}/pubinfo" + else + REDIRECT / + fi + ;; + '') yield_page front <<-EOF Front EOF ;; + *) REDIRECT / + ;; esac