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"
 | 
						|
}
 |