nutools/ulib/cgi

50 lines
1.5 KiB
Bash

##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonction de support pour CGI
##@cooked nocomments
uprovide cgi
function is_cgi() {
# Tester si on est lancé comme un script CGI
[ -n "$GATEWAY_INTERFACE" ]
}
function ctype_header() {
# Générer une en-tête Content-Type: avec la valeur $1[=text/html]
local ctype="$1"
[ -n "$ctype" ] || ctype="text/html"
if [[ "$ctype" == text/* ]]; then
[[ "$ctype" == *\;* ]] || ctype="$ctype; charset=utf-8"
fi
echo "Content-Type: $ctype"
}
function cdisp_header() {
# Générer une en-tête Content-Disposition: avec le type $2[=attachment] et
# le nom de fichier $1[=result]
local filename="${1:-result}" disp="${2:-attachment}"
echo "Content-Disposition: $disp; filename=$filename"
}
function nocache_header() {
# Générer des en-têtes qui désactivent la mise en cache du contenu
echo "Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0"
echo "Pragma: no-cache"
echo "Expires: Thu, 01 Jan 1970 00:00:00 GMT"
}
function startcgi() {
# Générer les en-têtes nécessaire avant de servir le contenu
ctype_header "$1"
[ -n "$2" ] && cdisp_header "$2"
echo ""
}
function startcgi_nocache() {
# Générer les en-têtes nécessaire avant de servir le contenu. Rajouter les
# entêtes pour désactiver la mise en cache.
ctype_header "$1"
[ -n "$2" ] && cdisp_header "$2"
nocache_header
echo ""
}