Added HttpProxy URL Pattern Filter

This commit is contained in:
Frank Dillon 2007-06-28 14:26:39 +00:00
parent 3f3fc5dd8f
commit 6047b341be
4 changed files with 63 additions and 11 deletions

View file

@ -29,10 +29,10 @@ addMetaDataPostsToCS($session);
addUserInvitations($session);
addPrivateMessaging($session);
addNewsletter($session);
addHttpProxyUrlPatternFilter($session);
finish($session); # this line required
#-------------------------------------------------
sub addNewsletter {
my $session = shift;
@ -314,6 +314,15 @@ sub addPrivateMessaging {
print "OK!\n" unless $quiet;
}
#-------------------------------------------------
sub addHttpProxyUrlPatternFilter {
my $session = shift;
print "\tAdding HttpProxy Url Pattern Filter..." unless ($quiet);
$session->db->write("alter table HttpProxy add urlPatternFilter mediumtext default NULL");
print "OK!\n" unless ($quiet);
}
# ---- DO NOT EDIT BELOW THIS LINE ----

View file

@ -118,7 +118,15 @@ sub definition {
label => $i18n->get(418, 'WebGUI'),
hoverHelp => $i18n->get('418 description', 'WebGUI'),
},
urlPatternFilter=>{
fieldType => "textarea",
defaultValue => "",
tab => "display",
label => $i18n->get("url pattern filter label"),
hoverHelp => $i18n->get("url pattern filter hover help"),
},
followExternal => {
fieldType => "yesNo",
defaultValue => 1,
@ -127,13 +135,13 @@ sub definition {
hoverHelp => $i18n->get('5 description'),
},
rewriteUrls => {
rewriteUrls => {
fieldType => "yesNo",
defaultValue => 1,
defaultValue => 1,
tab => 'properties',
label => $i18n->get(12),
hoverHelp => $i18n->get('12 description'),
},
},
followRedirect => {
fieldType => "yesNo",
@ -382,7 +390,7 @@ sub view {
$var{content} = $1 || $var{content};
$var{"content.trailing"} = $2;
}
my $p = WebGUI::Asset::Wobject::HttpProxy::Parse->new($self->session, $proxiedUrl, $var{content}, $self->getId,$self->get("rewriteUrls"),$self->getUrl);
my $p = WebGUI::Asset::Wobject::HttpProxy::Parse->new($self->session, $proxiedUrl, $var{content}, $self->getId,$self->get("rewriteUrls"),$self->getUrl,$self->get("urlPatternFilter"));
$var{content} = $p->filter; # Rewrite content. (let forms/links return to us).
$p->DESTROY;

View file

@ -68,7 +68,13 @@ sub new {
$self->{assetId} = shift;
$self->{rewriteUrls} = shift;
$self->{assetUrl} = shift;
$self->{Filtered} ="";
my $pfilter = shift;
$pfiler =~ s/\r//g;
my @patterns = split(/\n/,$pfilter);
$self->{patternFilter} = \@patterns;
$self->{Filtered} ="";
$self->{FormAction} = "";
$self->{FormActionIsDefined} = 0;
$self->{recurseCheck} = 0;
@ -118,7 +124,8 @@ sub session {
sub start {
my $self = shift;
my ($tag, $attr, $attrseq, $origtext) = @_;
# Check on the div class and div id attributes to see if we're proxying ourself.
# Check on the div class and div id attributes to see if we're proxying ourself.
if($tag eq "div" && $attr->{'class'} eq 'wobjectHttpProxy' && $attr->{'id'} eq ('assetId'.$self->{assetId})) {
$self->{recurseCheck} = 1;
}
@ -156,9 +163,23 @@ sub start {
$self->{FormAction} = $val; # set FormAction to include hidden field later
$val = $self->{assetUrl}; # Form Action returns to us
} else {
$val =~ s/\n//g; # Bugfix 757068
$val = $self->session->url->append($self->{assetUrl},'proxiedUrl='.$self->session->url->escape($val).';func=view'); # return to us
}
$val =~ s/\n//g; # Bugfix 757068
#Determine if pattern should not be rewritten
$rewritePattern = 0;
foreach my $pattern (@{$self->{patternFilter}}) {
if($val =~ m/$pattern/i) {
$rewritePattern = 1;
}
}
if($rewritePattern) {
$val = URI::URL::url($val)->abs($self->{Url},1); # make absolute
}
else {
$val = $self->session->url->append($self->{assetUrl},'proxiedUrl='.$self->session->url->escape($val).';func=view'); # return to us
}
}
}
}
}

View file

@ -279,6 +279,20 @@ be useful, others may not.|,
context => q|Translator note: the "%s" tokens in the message should not be translated.|,
lastUpdated => 1168994613
},
'url pattern filter label' => {
message => q|Url Pattern Filter|,
lastUpdated => 1168994613,
},
'url pattern filter hover help' => {
message => q|Enter patterns one per line (Perl regular expressions are valid) that should be filtered when re-writing urls
<br /><br />
Ex: /bms/documents<br />
/bms/documents/document_\\d+\\.pdf
|,
lastUpdated => 1168994613,
}
};