. "$_EXEC/cgilite/storage.sh"
. "$_EXEC/cgilite/session.sh"
+SESSION_COOKIE
+
yield_page(){
printf 'Content-Type: text/html; charset=utf-8\r\n\r\n'
"$_EXEC/cgilite/html-sh.sed" <<EOF
EOF
}
-tid(){
- # transaction ID to modify a given file
- local file="$1"
- { stat -c %F%i%n%N%s%Y "$file" 2>&-
- printf %s "$SESSION_ID"
- server_key
- } | sha256sum | cut -d\ -f1
-}
+info="$(PATH "${PATH_INFO#http://*/}")"
-info="$(PATH "${PATH_INFO}")"
+which git && [ ! -d .git ] && {
+ git init
+ mkdir -p clients/ invoices/ senders/
+ printf 'export/
+serverkey' >.gitignore
+ git add clients/ invoices/ senders/ .gitignore
+ git commit -m 'initialisation of invoice repo'
+} >&2
case $info in
/invoices.css)
. "$_EXEC/cgilite/file.sh"
FILE "$_EXEC/invoices.css"
;;
- /clients)
+ /clients|/clients/)
. "$_EXEC/clients.sh"
{ list_clients
printf '[a .new href="/clients/%s" New]' "$(timeid)"
. "$_EXEC/clients.sh"
update_client
;;
- /senders)
+ /senders|/senders/)
. "$_EXEC/senders.sh"
{ list_senders
printf '[a .new href="/senders/%s" New]' "$(timeid)"
. "$_EXEC/senders.sh"
update_sender
;;
- /invoices)
+ /invoices|/invoices/)
. "$_EXEC/invoices.sh"
- { list_invoices
- printf '[a .new href="/invoices/%s" New]' "$(timeid)"
+ { printf '[a .new href="/invoices/%s" New]' "$(timeid)"
+ list_invoices
} | yield_page invoices
;;
/invoices/*)
. "$_EXEC/invoices.sh"
update_invoice
;;
- /export/*.pdf)
+ /export/*.pdf/*)
. "$_EXEC/cgilite/file.sh"
- FILE "${info#/}" application/pdf
+ file="${info%/*}"
+ FILE "${file#/}" application/pdf
;;
*) REDIRECT /invoices
;;