[interchange-cvs] interchange - heins modified 5 files

interchange-core@interchange.redhat.com interchange-core@interchange.redhat.com
Thu Oct 18 20:33:01 2001


User:      heins
Date:      2001-10-19 00:32:37 GMT
Modified:  scripts  interchange.PL
Modified:  lib/Vend Config.pm Interpolate.pm Parser.pm Server.pm
Log:
	* Add path_adjust Pragma to change all root-based (without protocol)
	  paths to add StaticPath in front of them, i.e.

	  	<A HREF="/something/somepage.html">

		becomes

		<A HREF="/foundation/something/somepage.html">
	  Same for <IMG>, <INPUT TYPE=IMAGE>, <BODY BACKGROUND>,
	  <T* BACKGROUND>, etc.

	  Not yet tested, but should work.

	* Pragma now called often enough that efficiency demands remapping
	  to $::Pragma (to save the hash key lookups).

Revision  Changes    Path
2.13      +2 -1      interchange/scripts/interchange.PL


rev 2.13, prev_rev 2.12
Index: interchange.PL
===================================================================
RCS file: /anon_cvs/repository/interchange/scripts/interchange.PL,v
retrieving revision 2.12
retrieving revision 2.13
diff -u -r2.12 -r2.13
--- interchange.PL	2001/10/18 16:31:49	2.12
+++ interchange.PL	2001/10/19 00:32:37	2.13
@@ -50,7 +50,7 @@
 #
 # Interchange version 4.9.0
 #
-# $Id: interchange.PL,v 2.12 2001/10/18 16:31:49 mheins Exp $
+# $Id: interchange.PL,v 2.13 2001/10/19 00:32:37 mheins Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -1545,6 +1545,7 @@
 	eval {
 		$Vend::Cfg = $c;	
 		$::Variable = $Vend::Cfg->{Variable};
+		$::Pragma   = $Vend::Cfg->{Pragma};
 		Vend::Data::read_salestax();
 		Vend::Data::read_shipping();
 		open_database(1);



2.12      +5 -2      interchange/lib/Vend/Config.pm


rev 2.12, prev_rev 2.11
Index: Config.pm
===================================================================
RCS file: /anon_cvs/repository/interchange/lib/Vend/Config.pm,v
retrieving revision 2.11
retrieving revision 2.12
diff -u -r2.11 -r2.12
--- Config.pm	2001/10/16 21:36:45	2.11
+++ Config.pm	2001/10/19 00:32:37	2.12
@@ -1,6 +1,6 @@
 # Vend::Config - Configure Interchange
 #
-# $Id: Config.pm,v 2.11 2001/10/16 21:36:45 racke Exp $
+# $Id: Config.pm,v 2.12 2001/10/19 00:32:37 mheins Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -95,7 +95,7 @@
 use Vend::Parse;
 use Vend::Util;
 
-$VERSION = substr(q$Revision: 2.11 $, 10);
+$VERSION = substr(q$Revision: 2.12 $, 10);
 
 my %CDname;
 
@@ -325,6 +325,7 @@
 	['PIDcheck',		 'integer',          '0'],
 	['LockoutCommand',    undef,             ''],
 	['SafeUntrap',       'array',            'ftfile sort'],
+	['SafeTrap',         'array',            ':base_io'],
 	['NoAbsolute',		 'yesno',			 'No'],
 	['AllowGlobal',		 'boolean',			 ''],
 	['AddDirective',	 'directive',		 ''],
@@ -451,6 +452,7 @@
 	['ExtraSecure',		 'yesno',     	     'No'],
 	['FallbackIP',		 'yesno',     	     'No'],
 	['WideOpen',		 'yesno',     	     'No'],
+	['Promiscuous',		 'yesno',     	     'No'],
 	['Cookies',			 'yesno',     	     'Yes'],
 	['CookieName',		 undef,     	     ''],
 	['CookiePattern',	 'regex',     	     '[-\w:.]+'],
@@ -3011,6 +3013,7 @@
 			my $code = $val;
 			$code =~ s'$Vend::Session->'$foo'g;
 			$code =~ s'$Vend::Cfg->'$bar'g;
+			$safe->trap(@{$Global::SafeTrap});
 			$safe->untrap(@{$Global::SafeUntrap});
 			$sub = $safe->reval($code);
 			if($@) {



2.23      +22 -7     interchange/lib/Vend/Interpolate.pm


rev 2.23, prev_rev 2.22
Index: Interpolate.pm
===================================================================
RCS file: /anon_cvs/repository/interchange/lib/Vend/Interpolate.pm,v
retrieving revision 2.22
retrieving revision 2.23
diff -u -r2.22 -r2.23
--- Interpolate.pm	2001/10/18 16:31:49	2.22
+++ Interpolate.pm	2001/10/19 00:32:37	2.23
@@ -1,6 +1,6 @@
 # Vend::Interpolate - Interpret Interchange tags
 # 
-# $Id: Interpolate.pm,v 2.22 2001/10/18 16:31:49 mheins Exp $
+# $Id: Interpolate.pm,v 2.23 2001/10/19 00:32:37 mheins Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -27,7 +27,7 @@
 require Exporter;
 @ISA = qw(Exporter);
 
-$VERSION = substr(q$Revision: 2.22 $, 10);
+$VERSION = substr(q$Revision: 2.23 $, 10);
 
 @EXPORT = qw (
 
@@ -458,7 +458,7 @@
 sub substitute_image {
 	my ($text) = @_;
 
-	unless ( $Vend::Cfg->{Pragma}{no_image_rewrite} ) {
+	unless ( $::Pragma->{no_image_rewrite} ) {
 		my $dir = $CGI::secure											?
 			($Vend::Cfg->{ImageDirSecure} || $Vend::Cfg->{ImageDir})	:
 			$Vend::Cfg->{ImageDir};
@@ -473,6 +473,21 @@
 		}
 	}
 
+	if ( $::Pragma->{path_adjust} ) {
+		my $dir = $Vend::Cfg->{StaticPath};
+
+		if ($dir) {
+			$$text =~ s#(<a\s+[^>]*?href=")(/[^"]+)#
+						$1 . $dir . $2#ige;
+			$$text =~ s#(<i\w+\s+[^>]*?src=")(/[^"]*)#
+						$1 . $dir . $2#ige;
+	        $$text =~ s#(<body\s+[^>]*?background=")(/[^"]+)#
+						$1 . $dir . $2#ige;
+	        $$text =~ s#(<t(?:[dhr]|able)\s+[^>]*?background=")(/[^"]+)#
+						$1 . $dir . $2#ige;
+		}
+	}
+
     if($Vend::Cfg->{ImageAlias}) {
 		for (keys %{$Vend::Cfg->{ImageAlias}} ) {
         	$$text =~ s#(<i\w+\s+[^>]*?src=")($_)#
@@ -551,7 +566,7 @@
 			and defined $Vend::Cfg->{DirConfig}{Variable}{$varname};
 
 	VARDB: {
-		last VARDB if $Vend::Cfg->{Pragma}{dynamic_variables_file_only};
+		last VARDB if $::Pragma->{dynamic_variables_file_only};
 		last VARDB unless $Vend::Cfg->{VariableDatabase};
 		if($Vend::VarDatabase) {
 			last VARDB unless $Vend::VarDatabase->record_exists($varname);
@@ -575,11 +590,11 @@
 
 	# Set whole-page pragmas from [pragma] tags
 	1 while $$html =~ s/\[pragma\s+(\w+)(?:\s+(\w+))?\]/
-		$Vend::Cfg->{Pragma}{$1} = (length($2) ? $2 : 1), ''/ige;
+		$::Pragma->{$1} = (length($2) ? $2 : 1), ''/ige;
 
 	# Substitute in Variable values
 	$$html =~ s/$Gvar/$Global::Variable->{$1}/g;
-	if($Vend::Cfg->{Pragma}{dynamic_variables}) {
+	if($::Pragma->{dynamic_variables}) {
 		$$html =~ s/$Evar/dynamic_var($1) || $Global::Variable->{$1}/ge
 			and
 		$$html =~ s/$Evar/dynamic_var($1) || $Global::Variable->{$1}/ge;
@@ -1291,7 +1306,7 @@
 				if defined $comp;
 	}
 	elsif($base eq 'pragma') {
-		$op =	qq%$Vend::Cfg->{Pragma}{$term}%;
+		$op =	qq%$::Pragma->{$term}%;
 		$op = "q{$op}" unless defined $noop;
 		$op .=	qq%	$operator $comp%
 				if defined $comp;
@@ -2608,7 +2623,7 @@
 }
 
 sub ed {
-	return $_[0] if $Safe_data or $Vend::Cfg->{Pragma}{safe_data};
+	return $_[0] if $Safe_data or $::Pragma->{safe_data};
 	$_[0] =~ s/\[/&#91;/g;
 	return $_[0];
 }
@@ -2637,7 +2652,7 @@
 		$value = $text;
 	}
 
-	$Vend::Cfg->{Pragma}{$pragma} = $value;
+	$::Pragma->{$pragma} = $value;
 	if($pragma eq 'no_html_parse') {
 		$Vend::Parse::find_tag	= $value
 									?  qr{^([^[]+)}



2.1       +4 -4      interchange/lib/Vend/Parser.pm


rev 2.1, prev_rev 2.0
Index: Parser.pm
===================================================================
RCS file: /anon_cvs/repository/interchange/lib/Vend/Parser.pm,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- Parser.pm	2001/07/18 02:23:14	2.0
+++ Parser.pm	2001/10/19 00:32:37	2.1
@@ -1,6 +1,6 @@
 # Vend::Parser - Interchange parser class
 #
-# $Id: Parser.pm,v 2.0 2001/07/18 02:23:14 jon Exp $
+# $Id: Parser.pm,v 2.1 2001/10/19 00:32:37 mheins Exp $
 #
 # Copyright (C) 1997-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -66,7 +66,7 @@
 
 use HTML::Entities ();
 use vars qw($VERSION);
-$VERSION = substr(q$Revision: 2.0 $, 10);
+$VERSION = substr(q$Revision: 2.1 $, 10);
 
 
 sub new
@@ -96,11 +96,11 @@
 		return $self;
 	}
 	$$buf .= $_[0];
-	$Find_tag	= $Vend::Cfg->{Pragma}{no_html_parse}
+	$Find_tag	= $::Pragma->{no_html_parse}
 				?  qr{^([^[]+)}
 				:  qr{^([^[<]+)}
 				;
-#::logDebug("no_html_parse=$Vend::Cfg->{Pragma}{no_html_parse} Find_tag=$Find_tag");
+#::logDebug("no_html_parse=$::Pragma->{no_html_parse} Find_tag=$Find_tag");
 
 	my $eaten;
 	# Parse html text in $$buf.  The strategy is to remove complete



2.1       +3 -3      interchange/lib/Vend/Server.pm


rev 2.1, prev_rev 2.0
Index: Server.pm
===================================================================
RCS file: /anon_cvs/repository/interchange/lib/Vend/Server.pm,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- Server.pm	2001/07/18 02:23:14	2.0
+++ Server.pm	2001/10/19 00:32:37	2.1
@@ -1,6 +1,6 @@
 # Vend::Server - Listen for Interchange CGI requests as a background server
 #
-# $Id: Server.pm,v 2.0 2001/07/18 02:23:14 jon Exp $
+# $Id: Server.pm,v 2.1 2001/10/19 00:32:37 mheins Exp $
 #
 # Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
 #
@@ -25,7 +25,7 @@
 package Vend::Server;
 
 use vars qw($VERSION);
-$VERSION = substr(q$Revision: 2.0 $, 10);
+$VERSION = substr(q$Revision: 2.1 $, 10);
 
 use POSIX qw(setsid strftime);
 use Vend::Util;
@@ -411,7 +411,7 @@
 	}
 
 	$$body =~ s/^\s+//
-		if ! $Vend::ResponseMade and $Vend::Cfg->{Pragma}{strip_white};
+		if ! $Vend::ResponseMade and $::Pragma->{strip_white};
 
 	if(! $s and $Vend::StatusLine) {
 		$Vend::StatusLine = "HTTP/1.0 $status\r\n$Vend::StatusLine"