[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/\[/[/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"