Improve wildcard system in virtualhosts (#2188)

Moo
Xavier Guimard 5 years ago
parent 89c6a400a0
commit 411a7de8e7
  1. 11
      lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Reload.pm
  2. 8
      lemonldap-ng-handler/lib/Lemonldap/NG/Handler/Main/Run.pm

@ -276,9 +276,20 @@ sub locationRulesInit {
my ( $class, $conf, $orules ) = @_;
$orules ||= $conf->{locationRules};
$class->tsv->{vhostReg} = [];
foreach my $vhost ( keys %$orules ) {
my $rules = $orules->{$vhost};
if ( $vhost =~ /\*/ ) {
my @elts = map { quotemeta $_ } split /\*/, $vhost;
if (@elts) {
my $expr = '^' . join( '.*', @elts ) . '$';
push @{ $class->tsv->{vhostReg} }, [ qr/$expr/, $vhost ];
}
else {
push @{ $class->tsv->{vhostReg} }, [ qr/.+/, $vhost ];
}
}
$class->tsv->{locationCount}->{$vhost} = 0;
$class->tsv->{locationCondition}->{$vhost} = [];
$class->tsv->{locationProtection}->{$vhost} = [];

@ -451,7 +451,7 @@ sub fetchId {
my $value =
$lookForHttpCookie
? ( $t =~ /${cn}http=([^,; ]+)/o ? $1 : 0 )
: ( $t =~ /$cn=([^,; ]+)/o ? $1 : 0 );
: ( $t =~ /$cn=([^,; ]+)/o ? $1 : 0 );
if ( $value && $lookForHttpCookie && $class->tsv->{securedCookie} == 3 ) {
$value = $class->tsv->{cipher}->decryptHex( $value, "http" );
@ -730,10 +730,8 @@ sub resolveAlias {
return $class->tsv->{vhostAlias}->{$vhost}
if ( $class->tsv->{vhostAlias}->{$vhost} );
return $vhost if ( $class->tsv->{defaultCondition}->{$vhost} );
my $v = $vhost;
while ( $v =~ s/[\w\-]+/\*/ ) {
return $v if ( $class->tsv->{defaultCondition}->{$v} );
$v =~ s/^\*\.*//;
foreach ( @{ $class->tsv->{vhostReg} } ) {
return $_->[1] if $vhost =~ $_->[0];
}
return $vhost;
}

Loading…
Cancel
Save