74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.6 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 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"
 | |
| }
 | 
