#!/bin/sh USER_REGISTRATION=false USER_REQUIREEMAIL=false . "${_EXEC:-${0%/*}}"/cgilite/cgilite.sh . "$_EXEC"/cgilite/session.sh nocookie . "$_EXEC"/cgilite/users.sh export MD_HTML="false" if [ "$(which awk)" ]; then markdown() { awk -f "$_EXEC/cgilite/markdown.awk"; } 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' \ "Content-Security-Policy: script-src 'none'" \ '' { cat <<-EOF [!DOCTYPE HTML] [html [head [meta name="viewport" content="width=device-width"] [link rel="stylesheet" type="text/css" href="$_BASE/cgilite/common.css"] [link rel="stylesheet" type="text/css" href="$_BASE/rawnet.css"] [title . $(HTML "$title")] ] [body class="$page" [header [form method=POST action="$_BASE/search/" [input name=search placeholder="Search"] ] $(w_user_login) ][main EOF cat printf ']]]' } |"$_EXEC/cgilite/html-sh.sed" -u } case ${PATH_INFO} in /favicon.ico) printf '%s\r\n' 'Content-Length: 0' '';; *.css) . "${_EXEC}/cgilite/file.sh" FILE "${_EXEC}/${PATH_INFO}" ;; /login/) if [ "$USER_ID" ]; then REDIRECT "${_BASE}/" else yield_page 'RAW:NET Login' login <<-EOF $(w_user_login) EOF 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 ;; /recover/) yield_page 'RAW:NET Recover Account' recover <<-EOF $(w_user_recover) EOF ;; /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";; esac exit 0