#!/bin/sh
+for n in "$@"; do case ${n%%=*} in
+ data) _DATA="${n#data=}";;
+ exec) _exec="${n#exec=}";;
+ noerr) exec 2>&-;;
+esac; done
+
[ -z "${_EXEC%/}" ] && _EXEC="$(realpath "${0%/*}")" || _EXEC="${_EXEC%/}"
[ -z "${_DATA%/}" ] && _DATA=. || _DATA="${_DATA%/}"
ORDER="$(GET o |grep -m1 -axE 'Date|Name|Length' || printf Name)"
LISTSIZE="$(COOKIE pagesize |grep -m1 -axE '[1-9][0-9]*' || printf 50)"
ITEM="$(PATH "${PATH_INFO#/}")"
+ACTION="$(GET a)"
-case $(GET a) in
+case $ACTION in
setprefs)
SET_COOKIE +$((86400 * 90)) pagesize="$(POST pagesize |grep -m1 -axE '[1-9][0-9]*' || printf 50)"
SET_COOKIE +$((86400 * 90)) mode="$(POST mode |grep -m1 -axE 'browse|index' || printf browse)"
s="$(POST search |STRING)"; f="$(POST filter |STRING)"
if LOCK "$bm"; then
- grep -m1 -avF " search=$s filter=$f${CR}" "$bm" >"$bm.tmp"
+ grep -avF " search=$s filter=$f${CR}" "$bm" >"$bm.tmp"
[ ! "$(POST delete)" ] \
&& printf '%s search=%s filter=%s\r\n' \
"$(POST name |STRING)" "$s" "$f" >>"$bm.tmp"
[ -r "$_DATA/$ITEM" ] && FILE "$_DATA/$ITEM" \
|| FILE "$_EXEC/style.css"
elif [ -f "$_DATA/$ITEM" ]; then
- case $(GET a) in
+ case $ACTION in
tag)
;;
thumbnail)
delete)
;;
*) . "$_EXEC/cgilite/file.sh"
- FILE "$_DATA/$ITEM"
+ fakemp4="$(COOKIE fakemp4)"
+ FILE "$_DATA/$ITEM" "$([ "$fakemp4" = yes ] && printf 'video/mp4')"
;;
esac
elif [ -d "$_DATA/$ITEM" ]; then
- case $(GET a) in
+ case $ACTION in
advsearch)
. "$_EXEC/advsearch.sh"
;;
- spawnindex)
- if [ "$(POST recursive)" = yes ]; then
- find "$_DATA/$ITEM" -depth -type d \! -name .index \
- -exec mkdir -p '{}'/.index \;
- else
- mkdir -p "$_DATA/$ITEM/.index"
- fi
- REDIRECT "$(POST ref)"
- ;;
multitag)
+ if [ "$(POST spawn)" = spawn ]; then
+ case "$(POST recursive)" in
+ yes) find "$_DATA/$ITEM" \
+ -depth -type d \! -name .index \
+ -exec mkdir -p '{}'/.index \;
+ ;;
+ *) mkdir -p "$_DATA/$ITEM/.index";;
+ esac
+ else
. "$_EXEC/multitag.sh"
+ fi
REDIRECT "$(POST ref)"
;;
*) . "$_EXEC/list.sh"