#!/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"; } 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/) 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 ;; /|/channel/*) . "${_EXEC}/page_channel.sh";; /playlist/*) . "${_EXEC}/page_playlist.sh";; /search/*) . "${_EXEC}/page_search.sh";; *) . "${_EXEC}/page_404.sh";; esac exit 0