Rewrite the source/.htaccess hack
authorRichard Levitte <levitte@openssl.org>
Thu, 9 Jul 2015 21:34:17 +0000 (23:34 +0200)
committerRichard Levitte <levitte@openssl.org>
Thu, 9 Jul 2015 21:34:17 +0000 (23:34 +0200)
source/.htaccess only had a redirection for latest.tar.gz, we then had
series specific URLs via symlinks.  This changes does away with all
that places all of those redirects in source/.htaccess.

This is, btw, some cool use of wml.

Makefile
source/.htaccess.wml [moved from source/.htaccess.in with 52% similarity]

index 3f2f4d58022ce1833d4df08bc6fb0f9f33009b1e..ddb961996c4e27e77719097d05be9a81d5e78e42 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -27,10 +27,7 @@ simple: rebuild hack-source_htaccess
 rebuild:
        wmk $(FORCE) -I $(SNAP) -a $(DIRS) index.wml
 hack-source_htaccess:
-       latest=`grep '<span class="latest">' < source/index.html | \
-               sed -e 's|^.*<span class="latest">||' -e 's|</span>.*$$||'`; \
-           sed -e "s|%%LATEST%%|$$latest|" \
-               < source/.htaccess.in > source/.htaccess
+       ( cd source && wml -o .htaccess .htaccess.wml )
 
 manpages:
        sh ./run-pod2html.sh $(PODSHOME)
similarity index 52%
rename from source/.htaccess.in
rename to source/.htaccess.wml
index ee5c94e2c86897790b910d8a895e976fe0ae9e64..9b79140014cfcbbfec7c2bc5008ee94c9925a72c 100644 (file)
@@ -1,4 +1,4 @@
-##
+<protect>##
 ##  .htaccess -- Apache per-dir config
 ##
 
@@ -30,5 +30,22 @@ RewriteRule openssl-(fips.*)  old/fips/openssl-$1 [L]
     RemoveEncoding .gz
 </Files>
 
-RewriteBase /source
-RewriteRule ^latest\.tar\.gz$ %%LATEST%% [R=302,NC]
+</protect>RewriteBase /source
+<:{
+    my @tarballs =
+        sort grep /openssl-\d+\.\d+\.\d+[a-z]*\.tar\.gz$/, glob("openssl-*.tar.gz");
+    my %series = ();
+    foreach(@tarballs) {
+        my ($version, $serie) = /^openssl-((\d+\.\d+\.\d+)[a-z]*)\./;
+       $series{$serie} = $_;
+    }
+
+    my $latest = $series{ (reverse sort keys %series)[0] };
+    print "RewriteRule ^latest\\.tar\\.gz\$ $latest [R=302,NC]\n";
+
+    foreach (sort keys %series) {
+        my $rule = "openssl-$_-latest.tar.gz"; $rule =~ s|\.|\\.|g;
+       my $target = $series{$_};
+        print "RewriteRule ^$rule\$ $target [R=302,NC]\n";
+    }
+}:>