X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=index.cgi;h=8975ccaa0cc1b2b6e76d4f8d13474648ca0d1311;hb=5cf6de21a08325c9952aa2ed16ff2c69979d0599;hp=b1b2c2dd2ab11cc4a0c7b8e7cc332503579ad41b;hpb=f9cfcde441afed9d6db96e201935b6208903046d;p=shellwiki diff --git a/index.cgi b/index.cgi index b1b2c2d..8975cca 100755 --- a/index.cgi +++ b/index.cgi @@ -4,34 +4,9 @@ . "${_EXEC}/cgilite/session.sh" . "${_EXEC}/cgilite/file.sh" . "${_EXEC}/cgilite/users.sh" +. "${_EXEC}/tools.sh" . "${_EXEC}/acl.sh" -. "${_EXEC}/themes/default.sh" - -CACHE_AGE=${CACHE_AGE:-1800} -export MD_MACROS="$_EXEC/macros" -export MD_HTML="${MD_HTML:-false}" - -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 - -mdfile(){ - local page="$(PATH "$1")" - - if [ -f "$_DATA/pages/$page/#page.md" ]; then - printf %s\\n "$_DATA/pages/$page/#page.md" - elif [ -f "$_EXEC/pages/$page/#page.md" ]; then - printf %s\\n "$_EXEC/pages/$page/#page.md" - else - return 1 - fi -} - wiki_text() { # Print source text of a wiki page # Get page from data or underlay dir @@ -42,50 +17,11 @@ wiki_text() { cat -- "$mdfile" } -wiki() { - # Print content of a wiki page - # Get page from data or underlay dir, handle caching - local page="$(PATH "$1")" mdfile cache cachetime - - cache="$_DATA/pages/$page/#page.${USER_ID}.cache" - - mdfile="$(mdfile "$page")" || return 4 - acl_read "$page" || return 3 - - cachetime="$(stat -c %Y -- "$mdfile" "$cache" 2>/dev/null)" - - if [ "${cachetime#*${BR}}" -gt "${cachetime%${BR}*}" \ - -a "${cachetime#*${BR}}" -gt "$((_DATE - CACHE_AGE))" ]; then - cat "${cache}" - else - mkdir -p -- "$_DATA/pages/$page/" - # Macros expect to find page directory as working dir - ( cd -- "$_DATA/pages/$page/"; - md <"$mdfile" |tee -- "${cache}.$$" - ) - mv -- "${cache}.$$" "${cache}" - fi -} - -case "${PATH_INFO}" in - /"[.]"/*) - FILE "${_EXEC}/${PATH_INFO#/\[.\]}" - ;; - */) - theme_page "${PATH_INFO}" - ;; - */"[login]") - [ "$USER_NAME" ] \ - && REDIRECT "./" \ - || theme_login - ;; - */"[register]") - theme_register - ;; - */"#"*) - : # TODO: Invalid page name - ;; -esac +for handler in "$_EXEC"/handlers/*; do + . "$handler" && break +done -. "$_EXEC/page_edit.sh" -. "$_EXEC/attachment.sh" +if [ $? != 0 ]; then + export ERROR_MSG="The presented URL schema cannot be handled" + theme_error 400 +fi