#!/bin/bash # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 source "$(dirname -- "$0")/lib/ulib/auto" || exit 1 urequire apache.tools function display_help() { uecho "$scriptname: Créer un fichier de redirections pour Apache à partir d'un certain nombre de règles USAGE $scriptname -f rewrite.rules [-o RewriteRules.conf] [-w RewriteRules.html] host OPTIONS -p Générer les directives et tenir compte de proxy_acls Par défaut, le champ proxy_acls est ignoré FORMAT des règles de mapping"' ============================ Les commentaires commencent par le signe "#" Les règles sont de la forme: src:dest:host:suffix:OPTS:prot:proxy_acls ^prefix =literal prot vaut par défaut http. Il peut valoir aussi https Si dest ou suffix se terminent par $, on est en mode NO_SLASH En mode NO_SLASH, si src se termine par $, on est en mode NO_TRAIL * Si dest est de la forme Application.woa En mode NO_SLASH, on génère RewriteRule ^/src(.*) [prot://host]/cgi-bin/WebObjects/dest[/suffix]$1 [L,OPTS] En mode NO_SLASH+NO_TRAIL, on génère RewriteRule ^/src [prot://host]/cgi-bin/WebObjects/dest[/suffix] [L,OPTS] En mode normal, on génère RewriteRule ^/src$ /src/ RewriteRule ^/src/(.*) [prot://host]/cgi-bin/WebObjects/dest[/suffix]/$1 [L,OPTS] * Si dest n'\''est pas de la forme Application.woa En mode NO_SLASH, on génère RewriteRule ^/src(.*) [prot://host]/dest[/suffix]$1 [L,OPTS] En mode NO_SLASH+NO_TRAIL, on génère RewriteRule ^/src [prot://host]/dest[/suffix] [L,OPTS] En mode normal, on génère RewriteRule ^/src$ /src/ RewriteRule ^/src/(.*) /dest[/suffix]/$1 [L,OPTS] Si une règle est précédée d'\''une ou plusieurs lignes de la forme "^prefix", ces lignes sont copiées avant chacune des commandes RewriteRule générées pour une règle. Ceci permet d'\''ajouter des conditions avec RewriteCond pour une règle. e.g. ^RewriteCond %{REMOTE_ADDR} 10\..* src:dest.woa qui génère: RewriteCond %{REMOTE_ADDR} 10\..* RewriteRule ^/src$ /src/ RewriteCond %{REMOTE_ADDR} 10\..* RewriteRule ^/src/(.*) /cgi-bin/WebObjects/dest.woa/$1 [L] Une ligne de la forme "=literal" est recopiée sans modifications (sans le "=") dans le fichier de sortie. proxy_acls est utilisé si l'\''option -p est spécifiée et OPTS contient P (comme proxy), ou si le mode de réécriture requière l'\''utilisation d'\''un proxy. * Avec la valeur "None", aucune directive n'\''est générée * Si aucune valeur n'\''est spécifiée, la directive suivante est générée: AddDefaultCharset off Order Deny,Allow Allow from all * Si une valeur est spécifiée, la directive suivante est générée: AddDefaultCharset off Order Allow,Deny Allow from $proxy_acls Dans les exemples donnés ci-dessus, $URL est l'\''url générée par la réécriture, et $proxy_acls la valeur du champ proxy_acls spécifiée ci-dessus.' } proxy_enabled= infile= outfile= htmlfile= host= parse_opts "${PRETTYOPTS[@]}" \ --help '$exit_with display_help' \ -p proxy_enabled \ -f: infile= \ -o: outfile= \ -w: htmlfile= \ @ args -- "$@" && set -- "${args[@]}" || die "$args" thishost="$1" if [ -n "$infile" ]; then infiles=("$infile") else array_lsfiles infiles . "*rewrite*.rules" fi [ ${#infiles[*]} -gt 0 ] || die "Il faut spécifier le fichier de règles avec -f" for infile in "${infiles[@]}"; do if [ -f "$infile" ]; then estep "$(ppath "$infile")" legacy_mkRewriteRules "$infile" "$thishost" "$outfile" "$htmlfile" "$proxy_enabled" else eerror "$(ppath "$infile"): fichier introuvable" fi # réinitialiser pour ne pas écraser un fichier existant outfile= htmlfile= done