]> git.plutz.net Git - rawnet/blobdiff - index.cgi
For progress frame use chunked encoding instead of long poll
[rawnet] / index.cgi
index f540aedc7e3156bceb0113af0a4ee70ef4361051..76e3592a236f63bafe9d9171eae4cbe2db5373ed 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -1,13 +1,12 @@
 #!/bin/sh
 
+USER_REGISTRATION=false
 USER_REQUIREEMAIL=false
 
 . "${_EXEC:-${0%/*}}"/cgilite/cgilite.sh
 . "$_EXEC"/cgilite/session.sh nocookie
 . "$_EXEC"/cgilite/users.sh
 
-PATH_INFO="$(PATH "/${PATH_INFO#${_BASE}}")"
-
 export MD_HTML="false"
 if [ "$(which awk)" ]; then
   markdown() { awk -f "$_EXEC/cgilite/markdown.awk"; }
@@ -15,6 +14,47 @@ else
   markdown() { busybox awk -f "$_EXEC/cgilite/markdown.awk"; }
 fi
 
+checked(){
+  local check="$1"; shift 1;
+  for comp in "$@"; do
+    if [ "$check" = "$comp" ] || [ "$check" -eq "$comp" ]; then
+      printf 'checked="checked"'
+      break;
+    fi 2>/dev/null
+  done
+}
+selected(){
+  local check="$1"; shift 1;
+  for comp in "$@"; do
+    if [ "$check" = "$comp" ] || [ "$check" -eq "$comp" ]; then
+      printf 'selected="selected"'
+      break;
+    fi 2>/dev/null
+  done
+}
+
+w_user_login(){
+  if [ ! "$USER_ID" ]; then
+    cat <<-EOF
+       [form #user_login .login method=POST
+         [label Login]
+         [input name=uname placeholder="Username or Email" autocomplete=off]
+         [input type=password name=pw placeholder="Passphrase"]
+         [submit "action" "user_login" Login]
+         $([ "$USER_REGISTRATION" = true ] && printf '[a href="%s/register/" Register]' "$_BASE")
+       ]
+       EOF
+  elif [ "$USER_ID" ]; then
+    cat <<-EOF
+       [form #user_login .logout method=POST
+         [p Logged in as [span . $(HTML ${USER_NAME})]]
+         $([ "$USER_REGISTRATION" != true ] && printf '[a href="%s/invite/" Invite Friend]' "$_BASE")
+         [submit "action" "user_logout" Logout]
+       ]
+       EOF
+  fi
+}
+
 yield_page(){
   title="${1:-RAW:NET}" page="$2"
   printf '%s\r\n' 'Content-Type: text/html; charset=utf-8' \
@@ -56,6 +96,13 @@ case ${PATH_INFO} in
     fi
     ;;
   /register/)
+    if [ "$USER_ID" -a "$(GET user_register)" = confirm ]; then
+      printf 'Refresh: 2; url=%s\r\n' "/${_BASE#/}"
+      yield_page "RAW:NET Register confirm" "message register_confirm" <<-EOF
+       User registration successful!
+       EOF
+      exit 0
+    fi
     yield_page 'RAW:NET Register User' register <<-EOF
        $(w_user_register)
        EOF
@@ -65,7 +112,50 @@ case ${PATH_INFO} in
        $(w_user_recover)
        EOF
     ;;
-  /|/channel/*) . "${_EXEC}/page_channel.sh";;
+  /invite/)
+    if [ "$USER_ID" -a "$(GET user_register)" = confirm ]; then
+      printf 'Refresh: 2; url=%s\r\n' "/${_BASE#/}"
+      yield_page "RAW:NET Account activation" "message invite_confirm" <<-EOF
+       Account activation successful!
+       EOF
+      exit 0
+    fi
+    yield_page 'RAW:NET Invite User' invite <<-EOF
+       [nav [a href="../" Channels] - [span Invite]]
+       $(w_user_invite)
+       EOF
+    ;;
+  /video/*/*.mp4|/video/*/*.webm|/video/*/*.jpg)
+    . "${_EXEC}/cgilite/file.sh"
+    FILE "${_DATA}/${PATH_INFO#/video/}"
+    ;;
+  /channel/*/*/*)
+    action="${PATH_INFO##*/}"
+    video="${PATH_INFO%/*}" video="${video##*/}"
+    channel="${PATH_INFO#/channel/}" channel="${channel%%/*}"
+    . "$_EXEC/page_video.sh"
+    ;;
+  /channel/*/*/)
+    action=""
+    video="${PATH_INFO%/}" video="${video##*/}"
+    channel="${PATH_INFO#/channel/}" channel="${channel%%/*}"
+    . "$_EXEC/page_video.sh"
+    ;;
+  /channel/*/*)
+    action="${PATH_INFO##*/}"
+    video=""
+    channel="${PATH_INFO#/channel/}" channel="${channel%%/*}"
+    . "$_EXEC/page_channel.sh"
+    ;;
+  /channel/*/)
+    action=""
+    video=""
+    channel="${PATH_INFO#/channel/}" channel="${channel%%/*}"
+    . "$_EXEC/page_channel.sh"
+    ;;
+  /|/channel/)
+    . "${_EXEC}/page_channel.sh"
+    ;;
   /playlist/*) . "${_EXEC}/page_playlist.sh";;
   /search/*) . "${_EXEC}/page_search.sh";;
   *) . "${_EXEC}/page_404.sh";;