#!/usr/local/bin/perl

#print "Content-Type: text/html\n\n<HTML>\n" ;
if($ENV{'REQUEST_METHOD'} eq 'POST') {
  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}) ;
} else {
  $buffer=$ENV{'QUERY_STRING'} ;
}

@paires= split(/&/, $buffer) ;
foreach $pair (@paires) {
  ($name, $value)= split(/=/, $pair) ;
  $$name=$value ;
}

$c=~s/CRURALA0/CRURALNL/;
$c=~s/CROUTEEL/CROUTENL/;
if($c=~/CPENALLL/) { # un L en trop au debut des numeros de certains articles
    $a=~s/^L// ;
}

# Le refresh ne fonctionne pas avec IE7 et a du etre abandonne au profit du "Location"

print "Location: http://www.legifrance.gouv.fr/WAspad/UnArticleDeCode?code=$c.rcv&art=$a\n\n";

#print "<head><meta http-equiv=\"refresh\" content=\"1;http://www.legifrance.gouv.fr/WAspad/UnArticleDeCode?code=$c.rcv&art=$a\">" ;

print "<title>";
print "Redirection vers Legifrance Attendez</title>" ;
print "</head>";
print "<body>Vous allez être redirigé vers le site legifrance.gouv.fr :<p>";
print "<a href=\"http://www.legifrance.gouv.fr/WAspad/UnArticleDeCode?code=$c.rcv&art=$a\">URL de redirection</a>" ;
print "<p>Veuillez attendre ...<p>";

# ------------ Ce qui suit est la version du CGI anterieure au 29/1/2008 ---------------------

#use File::Copy ;
#
#$debug=0 ;
#umask 0 ;
#
#$z{'CASSURAL'}='des assurances (lois)' ;
#$z{'CASSURAD'}='des assurances (d&eacute;crets CE)' ;
#$z{'CASSURAA'}='des assurances (arr&ecirc;t&eacute;s)' ;
#$z{'CAVIACIL'}='de l\'aviation civile (lois)' ;
#$z{'CAVIACIR'}='de l\'aviation civile (d&eacute;crets CE)' ;
#$z{'CAVIACID'}='de l\'aviation civile (d&eacute;crets simples)' ;
#$z{'CCIVILL0'}='civil' ;
#$z{'CCOMMER0'}='de commerce' ;
#$z{'CCOMMUNL'}='des communes (lois)' ;
#$z{'CCOMMUNR'}='des communes (d&eacute;crets CE)' ;
#$z{'CCONSTRL'}='de la construction (lois)' ;
#$z{'CCONSTRR'}='de la construction (d&eacute;crets CE)' ;
#$z{'CCONSOML'}='de la consommation (lois)' ;
#$z{'CCONSOMR'}='de la consommation (d&eacute;crets CE)' ;
#$z{'CDARCHI0'}='de deontologie des architectes' ;
#$z{'CDCHIRD0'}='de deontologie des chirurgiens-dentistes' ;
#$z{'CDEBBOIL'}='des d&eacute;bits de boissons (lois)' ;
#$z{'CDEBBOIR'}='des d&eacute;bits de boissons (d&eacute;crets CE)' ;
#$z{'CDPOLIC0'}='de deontologie de la police nationale' ;
#$z{'CDSAGES0'}='de deontologie des sages-femmes' ;
#$z{'CDVETER0'}='de deontologie v&eacute;t&eacute;rinaire' ;
#$z{'CELECTOL'}='electoral (lois)' ;
#$z{'CELECTOR'}='electoral (d&eacute;crets CE)' ;
#$z{'CEXPROPL'}='de l\'expropriation (lois)' ;
#$z{'CEXPROPR'}='de l\'expropriation (d&eacute;crets CE)' ;
#$z{'CFAMILL0'}='de la famille et de l\'aide sociale' ;
#$z{'CFORESTL'}='forestier' ;
#$z{'CFORESTR'}='forestier' ;
#$z{'CGCTERRL'}='g&eacute;n&eacute;ral des collectivit&eacute;s territoriales (lois)' ;
#$z{'CJURFINL'}='des juridictions financi&egrave;res (lois)' ;
#$z{'CMARPUB0'}='des march&eacute;s publics' ;
#$z{'CMARPUN0'}='des march&eacute;s publics (nouveau)' ;
#$z{'CMINIER0'}='minier' ;
#$z{'CMUTUALL'}='de la mutualit&eacute; (lois)' ;
#$z{'CMUTUALR'}='de la mutualit&eacute; (d&eacute;crets CE)' ;
#$z{'CPENALLL'}='p&eacute;nal (lois)' ;
#$z{'CPENALLR'}='p&eacute;nal (d&eacute;crets CE)' ;
#$z{'CPENSICL'}='des pensions civiles et militaires de retraite (lois)' ;
#$z{'CPENSICR'}='des pensions civiles et militaires de retraite (d&eacute;crets CE)' ;
#$z{'CPENSICD'}='des pensions civiles et militaires de retraite (d&eacute;crets simples)' ;
#$z{'CPOSTESL'}='des postes et t&eacute;l&eacute;communications (lois)' ;
#$z{'CPOSTESR'}='des postes et t&eacute;l&eacute;communications (d&eacute;crets CE)' ;
#$z{'CPOSTESD'}='des postes et t&eacute;l&eacute;communications (d&eacute;crets simples)' ;
#$z{'CPROCIV0'}='de proc&eacute;dure civile (Nouveau)' ;
#$z{'CPROCPEL'}='de procedure p&eacute;nale (lois)' ;
#$z{'CPROCPER'}='de procedure p&eacute;nale (d&eacute;crets CE)' ;
#$z{'CPROCPED'}='de procedure p&eacute;nale (d&eacute;crets simples)' ;
#$z{'CPROCPEA'}='de procedure p&eacute;nale (arr&ecirc;t&eacute;s)' ;
#$z{'CPROINTL'}='de la propri&eacute;t&eacute; intellectuelle (lois)' ;
#$z{'CPROINTR'}='de la propri&eacute;t&eacute; intellectuelle (d&eacute;crets CE)' ;
#$z{'CROUTEEL'}='de la route (lois)' ;
#$z{'CROUTEER'}='de la route (d&eacute;crets CE)' ;
#$z{'CRURALA0'}='rural (lois)' ;
#$z{'CRURALNL'}='rural (lois)' ;
#$z{'CRURALNR'}='rural (d&eacute;crets CE)' ;
#$z{'CSANPUNL'}= 'de la sant&eacute; publique (nouveau)' ;
#$z{'CSANPUNR'}= 'de la sant&eacute; publique (nouveau) (d&eacute;crets CE)' ;
#$z{'CSANPUND'}= 'de la sant&eacute; publique (nouveau) (d&eacute;crets simples)' ;
#$z{'CSANPUBL'}='de la sant&eacute; publique' ;
#$z{'CSANPUBR'}='de la sant&eacute; publique' ;
#$z{'CSECSOCL'}='de la s&eacute;curit&eacute; sociale' ;
#$z{'CSECSOCR'}='de la s&eacute;curit&eacute; sociale' ;
#$z{'CSECSOCD'}='de la s&eacute;curit&eacute; sociale' ;
#$z{'CSERVNAL'}='du service national' ;
#$z{'CSERVNAR'}='du service national' ;
#$z{'CTRAVAIL'}='du travail (lois)' ;
#$z{'CTRAVAIR'}='du travail (d&eacute;crets CE)' ;
#$z{'CTRAVAID'}='du travail (d&eacute;crets simples)' ;
#$z{'CTRAVMA0'}='du travail maritime' ;
#$z{'CTRIBUNL'}='des tribunaux administratifs et cours administratives d\'appel (lois)' ;
#$z{'CTRIBUNR'}='des tribunaux administratifs et cours administratives d\'appel (d&eacute;crets CE)' ;
#$z{'CURBANIL'}='de l\'urbanisme (lois)' ;
#$z{'CURBANIR'}='de l\'urbanisme (d&eacute;crets CE)' ;
#$z{'CURBANIA'}='de l\'urbanisme (arr&ecirc;t&eacute;s)' ;
#$z{'CVOIRIEL'}='de la voirie routi&egrave;re (lois)' ;
#$z{'CVOIRIER'}='de la voirie routi&egrave;re (d&eacute;crets CE)' ;
#
#chdir("/projects/fim/work_test/ok/") ;
#
#if($ENV{'REQUEST_METHOD'} eq 'POST') {
#  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}) ;
#} else {
#  $buffer=$ENV{'QUERY_STRING'} ;
#}
#
#@paires= split(/&/, $buffer) ;
#foreach $pair (@paires) {
#  ($name, $value)= split(/=/, $pair) ;
#  $$name=$value ;
## print "$name $c<br>\n" ;
#}
#
#if($a=~/^[0-9]/ && $c=~/CPENAL/) { $c="CPENALLL" ; }
#if($a=~/^[0-9]/ && $c=~/CPROCPE/) { $c="CPROCPEL" ; }
#if($a=~/^L/) { $c=~s/[ARD]$/L/ ; }
#if($a=~/^R/) { $c=~s/[ALD]$/R/ ; 
#  if($z{$c}!~/[a-z]/) { $c=~s/R$/D/ ; }
#}
#if($a=~/^D/) { $c=~s/[ALR]$/D/ ; }
#if($a=~/^A/) { $c=~s/[DLR]$/A/ ; }
#if($c=~/0$/ && $a=~/^L/ && $c !~/CCOMMER0/) { $c=~s/0$/L/ ; }
#if($c=~/0$/ && $a=~/^R/) { $c=~s/0$/R/ ; }
#if($c=~/0$/ && $a=~/^D/) { $c=~s/0$/D/ ; }
#if($c=~/0$/ && $a=~/^A/) { $c=~s/0$/A/ ; }
#if($c=~/CRURAL/ && $a=~/^[0-9]/) { $c="CRURALA0";}
#if(($c=~/CPENALLL/ || $c=~/CPROCPEL/) && $a=~/^L/) { $a=~s/^L// ; }
#if($c=~/CTRAVMA/) { $c='CTRAVMA0' ; $a=~s/^L// ; }
#
#if( $z{$c} !~ /./) {
#  print "Content-Type: text/html\n\n<HTML>\n<BODY bgcolor=\"#ffffff\">" ;
#  print "<center><h3>Code non disponible</h3></center>\n" ; exit 0 ; 
#}
#
#print "Content-Type: text/html\n\n<HTML>\n<BODY bgcolor=\"#ffffff\">" ;
#
##$ggg="/home/moret/gros/WWW/ADMINET/jo/codes/$c$a.html" ;
##
## Modification le 5/06/03 : passage sur imperia
##
#$ggg="/projects/adminet/www/jo/codes/$c$a.html" ;
#
#if($debug!=1) {
#  if(-f $ggg) {
#    print `cat $ggg` ;
##   print "Location: http://admi.net/jo/codes/$c$a.html\n\n";
# #  open GGG,$ggg ;
# #  while(<GGG>) { print ; }
#    exit 0 ;
#  }
#  open GGG,">$ggg" ;
#}
#
#open(NUM, "cat ld.autres references loisetdecrets|") ;
#while(<NUM>) { chop ;
#  ($x,$y)=split /\|/, $_ ;
#  $ld{$x}="$y" ;
##print "LOIS ET DECRETS et ORDONN et DC : $x $ld{y}\n";
#}
#close NUM;
#
##$gg="/home/moret/gros/WWW/ADMINET/jo/codes/$c$a" ;
##
## Modification le 5/06/03 : passage sur imperia
##
#$gg="/projects/adminet/www/jo/codes/$c$a" ;
#
#if(-f $gg) { $ff=$gg; }
#else {
#  chdir("/projects/fim/work_test/ok/") ;
#  system "cd /projects/fim/work_test/ok/;rm codeh.ow rm uncode.ow* code04.cgi*;./wget http://www.legifrance.gouv.fr/citoyen/uncode.ow?code=$c.rcv >log" ;
#
#  open A, "/projects/fim/work_test/ok/uncode.ow?code=$c.rcv" ;
#  while(<A>){chop ; if ($_ =~ /heure[0-9]?=/) { ($h=$_)=~s/^.*(heure[0-9]?=[0-9]+)".*$/$1/ ; 
#    }
#  }
#  close A ;
#
#  system "cd /projects/fim/work_test/ok/;./wget \"http://www.legifrance.gouv.fr/citoyen/code04.ow?f3_article=$a&$h\" >log" ;
#  $ff="/projects/fim/work_test/ok/code04.ow?f3_article=$a&$h" ;
## print "cp $ff $gg\n";
#  copy($ff,$gg) ;
## system("cp $ff $gg") ;
#}
#
#print "<table border=0>\n" ;
#if(!($debug==1)) {print GGG "<table border=0>\n" ; }
#print "<tr><td width=25%><a href=\"http://www.legifrance.gouv.fr/\"><center>Site Legifrance</a>\n" ;
#if(!($debug==1)) {print GGG "<tr><td width=25%><a href=\"http://www.legifrance.gouv.fr/\"><center>Site Legifrance</a>\n" ; }
#print "<td width=25%><a href=\"http://www.legifrance.gouv.fr/citoyen/uncode.ow?code=$c.rcv\"><center>Le code $z{$c} sur Legifrance</a>\n" ;
#if(!($debug==1)) {print GGG "<td width=25%><a href=\"http://www.legifrance.gouv.fr/citoyen/uncode.ow?code=$c.rcv\"><center>Le code $z{$c} sur Legifrance</a>\n" ; }
#print "<td width=25%><a href=\"http://droit.org/jo/codes.html\"><center>droit.org : tous les codes gratuits sur Web</a>\n" ;
#if(!($debug==1)) {print GGG "<td width=25%><a href=\"http://droit.org/jo/codes.html\"><center>droit.org : tous les codes gratuits sur Web</a>\n" ; }
#print "<td width=25%><a href=\"http://droit.org/jo/\"><center>Le J.O. sur Admi.net</a>\n" ;
#if(!($debug==1)) {print GGG "<td width=25%><a href=\"http://droit.org/jo/\"><center>Le J.O. sur droit.org</a>\n" ; }
#print "</table><BR><center><h3>Code $z{$c}</h3></center>\n" ;
#if(!($debug==1)) {print GGG "</table><BR><center><h3>Code $z{$c}</h3></center>\n" ; }
#
#chdir "/projects/fim/work_test/ok/" ; 
#open B,"$gg" ;
#
#open(SU,"substit") ;
#while(<SU>) { chop ;
#  ($a,$b)=split/\|/,$_ ;
#  $substit{$a}=$b ;
#}
#
#$etat='debut';
#while(<B>) { chop ;
#  if($etat eq 'debut' && $_ !~ /<TABLE>/) {next ;}
#  if($etat eq 'debut') {$etat='ok' ;}
#  $_=~s/> *(Aide *\/|Retour) *</> </g ;
#  $_=~s/(&nbsp;|&#160;)/ /g ;
#  $_=~s/<\/?(TABLE|TR|TD|FONT|IMG|A|CENTER|HTML|BODY)[^>]*>//g ;
#  $_=~s/^ +// ; $_=~s/ +$// ;
#  if($_=~/^ *$/) {next ;}
#  $_=~ s/$/   / ;
##if($_=~/Article/) {print "ART $_<BR><BR>\n\n\n";}
#  $_=~s/^(<BR>)?(Article [^\r\n]*)(<BR>)?[\n\r]?/<center><h3>$2<\/h3><\/center>\n/ ;
#  $_=~s/$/<BR>/ ;
#  $ligne=$_ ;
#
#  if($_=~/([lL]oi +(n[^ ]+)|[Dd]&eacute;cret +(n[^ ]+))/ || $_=~/[Oo]rdonnance +(n[^ ]+)/) { 
#     $x=$_ ;
#     while($x=~/([lL]oi|[Dd]&eacute;cret|[Oo]rdonnance)/) {
#        if($x!~/([lL]oi|[Dd]&eacute;cret|[Oo]rdonnance) +(n[^ ]+) *[0-9]+-[0-9]+/) {last ; }
#        $z=$' ;
#        ($y=$x)=~s/^.*?([lL]oi|[Dd]&eacute;cret|[Oo]rdonnance) +n([^&][^0-9 ]+|&[^ ]+;) *([0-9]+-[0-9]+)[^0-9].*$/$3/ ;
#        $x=$z ;
##       print "$y\n" ;
#        $remplacer{$y}=1 ;
#     }
#
#     foreach $a (keys %ld) {
#       if($a=~/^[LOD]/) {
#         ($aa=$a)=~s/^.// ;
#         if($remplacer{$aa} != 1 ) {next ; }
#         if($_=~/([lL]oi +(n[^ ]+) *|[Dd]&eacute;cret +(n[^ ]+) *)$aa / || $_=~/[Oo]rdonnance +(n[^ ]+) *$aa /) {
##          print "MATCH $aa\n" ;
#           $matches++ ;
#           if($a=~/^L/) {
#             $_=~s/([lL]oi +(n[^ ]+) *$aa)/<a href=\"$ld{$a}\">$1<\/a>/g ;
#           }elsif($a=~/^D/) {
#             $_=~s/([Dd]&eacute;cret +(n[^ ]+) *$aa)/<a href=\"$ld{$a}\">$1<\/a>/g ;
#           }elsif($a=~/^O/) {
#             $_=~s/([Oo]rdonnance +(n[^ ]+) *$aa)/<a href=\"$ld{$a}\">$1<\/a>/g ;
#           }
#         }
#       }
#     }
#  }
#
#     foreach $a (keys %substit) {
#       $b=$substit{$a} ;
#       if($_=~/$a/) {
#         ($bb=$b)=~s/\//\\\//g ;
#         $aevaluer="\$_=~s/$a/$bb/g" ;
#         $kk=eval($aevaluer) ;
#       }
#     }
#     $ligne=$_ ;
#
#     open PA,"/projects/fim/work_test/ok/patterns" ;
#     while(<PA>) { chop ;
#        $pattern=$_ ;
#        ($pattern2=$pattern)=~ s/CODE/.*/ ;
#        $pattern2=~ s/ARTICLE/([LRD]?\\.? ?)?[0-9]+(-[0-9]+)?(-[0-9]+)?/g ;
#        $_=$ligne ;
#        eval "\$resul=(/$pattern2/)" ;
##print "$pattern2=======$resul<BR>\n" ;
#        if($resul !~/1/) {next ; }
##print "EXAMEN APPR<BR>\n";
#
#        ($pattern2=$pattern)=~ s/ARTICLE/([LRD]?\\.? ?)?[0-9]+(-[0-9]+)?(-[0-9]+)?/g ;
##       print "$pattern2<BR>\n" ;
#
#        $_=$ligne ;
#        if($pattern =~ /CODE/) {
#          for $CODE(keys %z) { 
#            ($zz=$z{$CODE})=~s/ *\([^)]*\)// ;
#            ($pattern3=$pattern2)=~s/CODE/$zz/ ;
##print "$pattern------$pattern2====$pattern3---------------<BR>\n" ;
#            while( eval "\$resul=(/$pattern3/)" ) {
##print "\nMATCH<BR>\n";
#              $av=$_ ;
#              eval "\$av=~s/(^.*)($pattern3)/\$1 [ \$2 ]/g" ;
#              $av=~s/(\[[^]]*articles?) ?([0-9LRD])/$1|$2/g ;
#              while($av=~/[LRD]?\.? ?[0-9]+(-[0-9]+)?(-[0-9]+)?[^-0-9"><][^["]*\]/) {
#                  $av=~s/([LRD])?\.? ?([0-9]+(-[0-9]+)?(-[0-9]+)?)([^-0-9"><][^["]*\])/<a href="http:\/\/droit.org\/cgi-bin\/adminet\/article.pl?c=$CODE\&a=$1$2">$1 $2<\/a>$5/g ;
#              }
##print "<br><br>$av<br><br>\n";
#              $_=$av ;
##print "<font color=green>$pattern3</font><font color=red>\n<hr>$av</font><BR>\n" ;
#            }
#          }
#        }
#        else {
#          while(eval "\$resul=(/$pattern2/)") {
#            $av=$_ ;
#            eval "\$av=~s/(^.*)($pattern2)/\$1 [ \$2 ]/g" ;
##print "<BR><BR>$pattern2<BR><BR><HR>\n";
#            $av=~s/(\[[^]]*articles?) ?([0-9LRD])/$1|$2/g ;
#            while($av=~/([LRD])?\.? ?([0-9]+(-[0-9]+)?(-[0-9]+)?)([^-0-9"><][^["]*\])/) {
##print "<BR>PATTERN AVANT SUBST<BR>\n$av<BR><BR>\n";
#              $av=~s/([LRD])?\.? ?([0-9]+(-[0-9]+)?(-[0-9]+)?)([^-0-9"><][^["]*\])/<a href="http:\/\/droit.org\/cgi-bin\/adminet\/article.pl?c=$c\&a=$1$2">$1 $2<\/a>$5/g ;
#            }
#            $_=$av ;
##print "<font color=green>$pattern2</font><font color=red>\n<hr>$av</font><BR>\n" ;
#          }
#        }
#
#        $ligne=$_ ;
#     }
#
#  $ligne=~tr /|/ /;
#  $ligne=~s/\[ *//g;
#  $ligne=~s/ *\]//g;
#  print $ligne ;
#  if(!($debug==1)) {print GGG $ligne ;}
#}
#
#print "<BR><hr><BR><font size=-1 color=\"#ff4400\">Cette page du code $z{$c} est extraite du site officiel http://www.legifrance.gouv.fr dont seul le contenu fait foi, et que nous remercions. Certains hyperliens ont &eacute;t&eacute; rajout&eacute;s afin de faciliter la navigation. Cette r&eacute;alisation se situe dans le cadre d'un projet de recherche sur l'informatique juridique de l'<a href=\"http://www.ensmp.fr\">Ecole des mines de Paris</a>. Tout commentaire doit etre adress&eacute; &agrave; <a href=\"mailto:mahl\@ensmp.fr\">mahl\@ensmp.fr</a></font><br>\n" ;
#if(!($debug==1)) {print GGG "<BR><hr><BR><font size=-1 color=\"#ff4400\">Cette page du code $z{$c} est extraite du site officiel http://www.legifrance.gouv.fr dont seul le contenu fait foi, et que nous remercions. Certains hyperliens ont &eacute;t&eacute; rajout&eacute;s afin de faciliter la navigation. Cette r&eacute;alisation se situe dans le cadre d'un projet de recherche sur l'informatique juridique de l'<a href=\"http://www.ensmp.fr\">Ecole des mines de Paris</a>. Tout commentaire doit etre adress&eacute; &agrave; <a href=\"mailto:mahl\@ensmp.fr\">mahl\@ensmp.fr</a></font><br>\n" ;}
#exit 0 ;
