check for valid mirror URLs

This commit is contained in:
Wolfram Schneider 2010-08-28 18:54:09 +00:00
parent 68382b9370
commit 3ded040939
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=36332

View file

@ -1,18 +1,31 @@
#!/usr/bin/perl -T
# (c) Wolfram Schneider, Berlin. June 1996. Public domain.
# (c) 1996-2010 Wolfram Schneider. Public domain.
#
# FreeBSD WWW mirror redirect
#
# $FreeBSD: www/en/cgi/mirror.cgi,v 1.3 1999/09/06 07:02:40 peter Exp $
$_ = $ENV{'QUERY_STRING'};
use CGI;
use strict;
use warnings;
s/^[^=]+=//; # 'variable=value' -> 'value'
s/\+/ /g; # '+' -> space
s/%(..)/pack("c",hex($1))/ge; # '%ab' -> char ab
my $debug = 1;
my $master_url = 'http://www.freebsd.org/';
print "Window-target: _top\n";
print "Location: $_\n";
print "Content-type: text/plain\n\n";
my $q = new CGI;
my $url = $q->param('goto') || "";
if ( $url =~ m,^http://[a-z0-9\.]+\.freebsd\.org/?$,i
|| $url =~ m,^http://[a-z0-9\.]+\.freebsd\.org/www\.FreeBSD\.org/(data)?$,i
|| $url =~ m,^http://(freebsd\.unixtech\.be|www\.gufi\.org/mirrors/www.freebsd.org/data)/$,i
)
{
# ok
}
else {
warn "Ignore illegal redirect URL: $url\n" if $debug;
$url = $master_url;
}
print $q->redirect($url);
exit 0;