title="${page%/}"; title="${title##*/}"
if [ ! "$(mdfile "$page")" ]; then
- theme_404
+ theme_error 404
return 0
elif ! acl_read "$page"; then
- theme_403
+ theme_error 403
return 0
fi
local page="$1" title
title="${page%/}"; title="${title##*/}"
- if [ ! "$(mdfile "$page")" ]; then
- theme_404
- return 0
- elif ! acl_write "$page"; then
- theme_403
+ if ! acl_write "$page"; then
+ theme_error 403
return 0
fi
title="${page%/}"; title="${title##*/}"
if [ ! "$(mdfile "$page")" ]; then
- theme_404
+ theme_error 404
return 0
elif ! acl_read "$page"; then
- theme_403
+ theme_error 403
return 0
fi
fi
}
-theme_login(){
- theme_page '/[wiki]/login/'
-}
-
-theme_register(){
- theme_page '/[wiki]/register/'
-}
-
-theme_403(){
- printf "%s\r\n" "Status: 403 Forbidden"
-
- if [ "$(mdfile '/[wiki]/403/')" ]; then
- theme_page '/[wiki]/403/'
- else
- printf "Content-Length: 0\r\n\r\n"
- fi
-}
+theme_error(){
+ local errno="$1"
-theme_404(){
- printf "%s\r\n" "Status: 404 Not Found"
+ case $errno in
+ 400) printf "%s\r\n" "Status: 400 Bad Request";;
+ 403) printf "%s\r\n" "Status: 403 Forbidden";;
+ 404) printf "%s\r\n" "Status: 404 Not Found";;
+ 409) printf "%s\r\n" "Status: 409 Conflict";;
+ 500) printf "%s\r\n" "Status: 500 Internal Server Error";;
+ esac
- if [ "$(mdfile '/[wiki]/404/')" ]; then
- theme_page '/[wiki]/404/'
+ if [ "$(mdfile "/[wiki]/$errno/")" ]; then
+ theme_page "/[wiki]/$errno/"
else
printf "Content-Length: 0\r\n\r\n"
fi