www/53676: [patch] Don't make people contact doc@ for 404 from non FreeBSD sites

Simon L. Nielsen simon at nitro.dk
Tue Jun 24 05:50:06 PDT 2003


>Number:         53676
>Category:       www
>Synopsis:       [patch] Don't make people contact doc@ for 404 from non FreeBSD sites
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-www
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 24 05:50:04 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Simon L. Nielsen
>Release:        FreeBSD 4.8-STABLE i386
>Organization:
>Environment:
>Description:
The missing-url.cgi script tell people to contact doc at freebsd.org /
www at freebsd.org even when coming from a non FreeBSD site.

This patch only writes the contact information, if the user is coming
from a *.FreeBSD.org site.  Not a perfect solution, but it should
catch the most cases with bad links to www.FreeBSD.org from sites,
which doc at freebsd.org has no control over.

This has been tested on 5.1-BETA with perl v5.6.1 and 4.8-STABLE with
perl v5.005_03.
>How-To-Repeat:
>Fix:
--- www-cgi-missing-referer.patch begins here ---
Index: missing_handler.cgi
===================================================================
RCS file: /home/ncvs/www/en/cgi/missing_handler.cgi,v
retrieving revision 1.14
diff -u -d -r1.14 missing_handler.cgi
--- missing_handler.cgi	18 May 2003 17:45:20 -0000	1.14
+++ missing_handler.cgi	24 Jun 2003 12:26:27 -0000
@@ -75,6 +75,7 @@
 
 # rfc1738 says that ";"|"/"|"?"|":"|"@"|"&"|"=" may be reserved.
 $http_referer_url = escape2($ENV{'HTTP_REFERER'});
+$freebsd_referer = $http_referer_url =~ m%^http://[^/]*FreeBSD\.org%i;
 $http_referer_url =~ s/([^a-zA-Z0-9;\/?:&=])/sprintf("%%%02x",ord($1))/eg;
 $redirect_url_save = escape2($ENV{'REDIRECT_URL'});
 $redirect_url_save =~ s/([^a-zA-Z0-9;\/?:&=])/sprintf("%%%02x",ord($1))/eg;
@@ -98,14 +99,22 @@
 <p>\n};
 }
 
+if($freebsd_referer) {
+    $contact = qq[
+Please contact the members of the
+FreeBSD Documentation Project &lt;<A HREF="mailto:freebsd-doc\@FreeBSD.ORG?subject=Document%20not%20found%20-%20http://$http_host$redirect_url_save&body=$http_referer_url">freebsd-doc\@FreeBSD.ORG</A>&gt; 
+or the server administrator
+<a href="mailto:$server_admin?subject=Document%20not%20found%20-%20http://$http_host$redirect_url_save&body=$http_referer_url">$server_admin</a>.
+];
+} else {
+    $contact = "";
+}
 print qq[
 The closest match to your request is 
 <a href="http://$server_name">http://$server_name</a>.
 
-Please contact the members of the
-FreeBSD Documentation Project &lt;<A HREF="mailto:freebsd-doc\@FreeBSD.ORG?subject=Document%20not%20found%20-%20http://$http_host$redirect_url_save&body=$http_referer_url">freebsd-doc\@FreeBSD.ORG</A>&gt; 
-or the server administrator
-<a href="mailto:$server_admin?subject=Document%20not%20found%20-%20http://$http_host$redirect_url_save&body=$http_referer_url">$server_admin</a>.<p>
+$contact
+<p>
 
 <center>
 Please try our 
--- www-cgi-missing-referer.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-www mailing list