Added HttpProxy URL Pattern Filter
This commit is contained in:
parent
3f3fc5dd8f
commit
6047b341be
4 changed files with 63 additions and 11 deletions
|
|
@ -29,10 +29,10 @@ addMetaDataPostsToCS($session);
|
||||||
addUserInvitations($session);
|
addUserInvitations($session);
|
||||||
addPrivateMessaging($session);
|
addPrivateMessaging($session);
|
||||||
addNewsletter($session);
|
addNewsletter($session);
|
||||||
|
addHttpProxyUrlPatternFilter($session);
|
||||||
|
|
||||||
finish($session); # this line required
|
finish($session); # this line required
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------
|
#-------------------------------------------------
|
||||||
sub addNewsletter {
|
sub addNewsletter {
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
|
|
@ -314,6 +314,15 @@ sub addPrivateMessaging {
|
||||||
print "OK!\n" unless $quiet;
|
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 ----
|
# ---- DO NOT EDIT BELOW THIS LINE ----
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,15 @@ sub definition {
|
||||||
label => $i18n->get(418, 'WebGUI'),
|
label => $i18n->get(418, 'WebGUI'),
|
||||||
hoverHelp => $i18n->get('418 description', '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 => {
|
followExternal => {
|
||||||
fieldType => "yesNo",
|
fieldType => "yesNo",
|
||||||
defaultValue => 1,
|
defaultValue => 1,
|
||||||
|
|
@ -127,13 +135,13 @@ sub definition {
|
||||||
hoverHelp => $i18n->get('5 description'),
|
hoverHelp => $i18n->get('5 description'),
|
||||||
},
|
},
|
||||||
|
|
||||||
rewriteUrls => {
|
rewriteUrls => {
|
||||||
fieldType => "yesNo",
|
fieldType => "yesNo",
|
||||||
defaultValue => 1,
|
defaultValue => 1,
|
||||||
tab => 'properties',
|
tab => 'properties',
|
||||||
label => $i18n->get(12),
|
label => $i18n->get(12),
|
||||||
hoverHelp => $i18n->get('12 description'),
|
hoverHelp => $i18n->get('12 description'),
|
||||||
},
|
},
|
||||||
|
|
||||||
followRedirect => {
|
followRedirect => {
|
||||||
fieldType => "yesNo",
|
fieldType => "yesNo",
|
||||||
|
|
@ -382,7 +390,7 @@ sub view {
|
||||||
$var{content} = $1 || $var{content};
|
$var{content} = $1 || $var{content};
|
||||||
$var{"content.trailing"} = $2;
|
$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).
|
$var{content} = $p->filter; # Rewrite content. (let forms/links return to us).
|
||||||
$p->DESTROY;
|
$p->DESTROY;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,13 @@ sub new {
|
||||||
$self->{assetId} = shift;
|
$self->{assetId} = shift;
|
||||||
$self->{rewriteUrls} = shift;
|
$self->{rewriteUrls} = shift;
|
||||||
$self->{assetUrl} = 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->{FormAction} = "";
|
||||||
$self->{FormActionIsDefined} = 0;
|
$self->{FormActionIsDefined} = 0;
|
||||||
$self->{recurseCheck} = 0;
|
$self->{recurseCheck} = 0;
|
||||||
|
|
@ -118,7 +124,8 @@ sub session {
|
||||||
sub start {
|
sub start {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($tag, $attr, $attrseq, $origtext) = @_;
|
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})) {
|
if($tag eq "div" && $attr->{'class'} eq 'wobjectHttpProxy' && $attr->{'id'} eq ('assetId'.$self->{assetId})) {
|
||||||
$self->{recurseCheck} = 1;
|
$self->{recurseCheck} = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -156,9 +163,23 @@ sub start {
|
||||||
$self->{FormAction} = $val; # set FormAction to include hidden field later
|
$self->{FormAction} = $val; # set FormAction to include hidden field later
|
||||||
$val = $self->{assetUrl}; # Form Action returns to us
|
$val = $self->{assetUrl}; # Form Action returns to us
|
||||||
} else {
|
} else {
|
||||||
$val =~ s/\n//g; # Bugfix 757068
|
$val =~ s/\n//g; # Bugfix 757068
|
||||||
$val = $self->session->url->append($self->{assetUrl},'proxiedUrl='.$self->session->url->escape($val).';func=view'); # return to us
|
|
||||||
}
|
#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
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -279,6 +279,20 @@ be useful, others may not.|,
|
||||||
context => q|Translator note: the "%s" tokens in the message should not be translated.|,
|
context => q|Translator note: the "%s" tokens in the message should not be translated.|,
|
||||||
lastUpdated => 1168994613
|
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,
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue