#!/bin/sh
-CACHE_AGE=${CACHE_AGE:-1800}
+. "$_EXEC/cgilite/file.sh"
+
+CACHE_AGE=${CACHE_AGE:-300}
export MD_MACROS="$_EXEC/macros"
export MD_HTML="${MD_HTML:-false}"
-export WIKI_THEME=${WIKI_THEME:-default}
-
-. "$_EXEC/themes/${WIKI_THEME}.sh"
-
-if [ "$(which awk)" ]; then
- md() { awk -f "$_EXEC/md_macros.awk" -f "$_EXEC/cgilite/markdown.awk"; }
-elif [ "$(which busybox)" ]; then
- md() { busybox awk -f "$_EXEC/md_macros.awk" -f "$_EXEC/cgilite/markdown.awk"; }
-else
- md() { cat; }
-fi
wiki() {
# Print content of a wiki page
mkdir -p -- "$_DATA/pages/$page/"
# Macros expect to find page directory as working dir
( cd -- "$_DATA/pages/$page/";
- sed -E '1,20{ /^%[a-z]+/d; }' "$mdfile" \
- | md |tee -- "${cache}.$$"
+ md <"$mdfile" \
+ | tee -- "${cache}.$$"
)
grep -q '^%nocache' "$mdfile" \
&& rm -- "${cache}.$$" \
FILE "${_EXEC}/${PATH_INFO#/\[.\]}"
return 0
;;
- */\[*\]/*/)
- return 1
- ;;
- */"#"*/*)
- export ERROR_MSG="This page name is not allowed"
+ *${BR}*)
+ export ERROR_MSG='Page names containing newline character are not allowed'
theme_error 400
return 0
;;
- */"[login]")
- theme_page "/[wiki]/login/"
- return 0
- ;;
- */"[register]")
- theme_page "/[wiki]/register/"
+ */\#*)
+ export ERROR_MSG='Page names starting with "#" are not allowed'
+ theme_error 400
return 0
;;
- */"[invite]")
- theme_page "/[wiki]/invite/"
- return 0
+ */\[*\]/*)
+ return 1
;;
*/)
- theme_page "${PATH_INFO}"
+ if [ ! "$(mdfile "$page")" ]; then
+ theme_error 404
+ elif ! acl_read "$page"; then
+ theme_error 403
+ else
+ theme_page "${PATH_INFO}"
+ fi
return 0
;;
esac