##@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 cgicontent() { # Générer les en-têtes nécessaire avant de servir le contenu. # $1(=text/html) est le type de contenu. S'il faut servir le contenu avec # une disposition "attachment", $2 est le nom de fichier à proposer à # l'utilisateur. Si $3 est spécifié, c'est le chemin vers le fichier dont le # contenu doit être servi. # $4..* sont des en-têtes supplémentaires à rajouter local ctype="$1" filename="$2" contentfile="$3"; shift; shift; shift local header ctype_header "$ctype" [ -n "$filename" ] && cdisp_header "$filename" for header in "$@"; do echo "$header" done echo "" [ -f "$contentfile" ] && cat "$contentfile" } function cgicontent_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. # $1(=text/html) est le type de contenu. S'il faut servir le contenu avec # une disposition "attachment", $2 est le nom de fichier à proposer à # l'utilisateur. Si $3 est spécifié, c'est le chemin vers le fichier dont le # contenu doit être servi. # $4..* sont des en-têtes supplémentaires à rajouter local ctype="$1" filename="$2" contentfile="$3"; shift; shift; shift local header ctype_header "$ctype" [ -n "$filename" ] && cdisp_header "$filename" nocache_header for header in "$@"; do echo "$header" done echo "" [ -f "$contentfile" ] && cat "$contentfile" }