X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=index.cgi;h=ae9ac2a8325b96727ca8ce0fb6d8d11a8abeb17c;hp=9d74909e010eda7aaf914ffeb0ab5aba7a10cf51;hb=92a5321fb50469eeaab98028c8c3afcda24cdf42;hpb=5ab459e666f2526f671fe222cd1646a4e6798b27 diff --git a/index.cgi b/index.cgi index 9d74909..ae9ac2a 100755 --- a/index.cgi +++ b/index.cgi @@ -9,6 +9,8 @@ esac; done [ -z "${_EXEC%/}" ] && _EXEC="$(realpath "${0%/*}")" || _EXEC="${_EXEC%/}" [ -z "${_DATA%/}" ] && _DATA=. || _DATA="${_DATA%/}" +mkdir -p "${_DATA}/cache" "${_DATA}/mappings" "${_DATA}/export" "${_DATA}/lock" "${_DATA}/ical" "${_DATA}/vcard" + debug() { local dbg=/dev/stderr if [ ! "$DEBUG" ]; then @@ -23,6 +25,8 @@ debug() { . "$_EXEC/cgilite/cgilite.sh" . "$_EXEC/cgilite/session.sh" +. "$_EXEC/l10n.sh" + _PATH="$(PATH "/${PATH_INFO}")" ACTION="$(GET a)" @@ -55,8 +59,9 @@ yield_page() { printf ' ] [body #top class="%s" ' "$class" + printf '[ul .menu [li [a "/cards/" . %s]][li [a "/courses/" . %s]]]' "$(l10n cards)" "$(l10n courses)" + [ "$message" ] && printf '[p #message\n%s\n]' "$(l10n "$message")" cat - [ "$message" ] && printf '[p #message\n%s\n]' $(l10n "$message") printf '] ]' } \ | "${_EXEC}/cgilite/html-sh.sed" @@ -65,17 +70,27 @@ yield_page() { topdir="${_PATH#/}" topdir="/${topdir%%/*}" -if [ "${_PATH}" = / ]; then - REDIRECT /cards/ -elif [ -d "${_EXEC}/${_PATH}" -a -x "${_EXEC}/${_PATH}/index.cgi" ]; then - . "${_EXEC}/${_PATH}/index.cgi" -elif [ ! -d "${_EXEC}/${_PATH}" -a -x "${_EXEC}/${_PATH}" ]; then - . "${_EXEC}/${_PATH}" -elif [ ! -x "${_EXEC}/${_PATH}" -a -r "${_EXEC}/${_PATH}" ]; then - . "$_EXEC/cgilite/file.sh" - FILE "${_EXEC}/${_PATH}" -elif [ -d "${_EXEC}/${topdir}" -a -x "${_EXEC}/${topdir}/index.cgi" ]; then - . "${_EXEC}/${topdir}/index.cgi" -else - printf 'Status: 404 Not Found\r\nContent-Length: 0\r\n\r\n' -fi +case ${_PATH} in + /) REDIRECT /cards/ + ;; + /export/*.pdf) . "$_EXEC/cgilite/file.sh" + FILE "${_DATA}/${_PATH}" "application/pdf" + ;; + /export/*) . "$_EXEC/cgilite/file.sh" + FILE "${_DATA}/${_PATH}" + ;; + *) + if [ -d "${_EXEC}/${_PATH}" -a -x "${_EXEC}/${_PATH}/index.cgi" ]; then + . "${_EXEC}/${_PATH}/index.cgi" + elif [ -f "${_EXEC}/${_PATH}" -a -x "${_EXEC}/${_PATH}" ]; then + . "${_EXEC}/${_PATH}" + elif [ -f "${_EXEC}/${_PATH}" -a -r "${_EXEC}/${_PATH}" ]; then + . "$_EXEC/cgilite/file.sh" + FILE "${_EXEC}/${_PATH}" + elif [ -d "${_EXEC}/${topdir}" -a -x "${_EXEC}/${topdir}/index.cgi" ]; then + . "${_EXEC}/${topdir}/index.cgi" + else + printf '%s\r\n' 'Status: 404 Not Found' 'Content-Length: 0' '' + fi + ;; +esac