X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cgi-auth-flexible.pm;h=ccce71c66d3d3f2f7d3657ed051d20a9cb7202ca;hb=f2a46989c638ca8dbf60c63c227f91ae43697e8c;hp=00d3faec2f0dde3c611064077eb263e72b9c6228;hpb=f295190455e64b3f74111e6d60a77068bb5a0692;p=cgi-auth-flexible.git diff --git a/cgi-auth-flexible.pm b/cgi-auth-flexible.pm index 00d3fae..ccce71c 100644 --- a/cgi-auth-flexible.pm +++ b/cgi-auth-flexible.pm @@ -77,10 +77,11 @@ sub has_a_param ($$) { sub get_params ($) { my ($r) = @_; - my %p; my $c = $r->{Cgi}; - foreach my $name ($c->param()) { - $p{$name} = [ $c->param($name) ]; + my $vars = $c->Vars(); + my %p; + foreach my $name (keys %$vars) { + $p{$name} = [ split "\0", $vars->{$name} ]; } return \%p; } @@ -446,7 +447,7 @@ sub new_verifier { get_path_info => sub { $_[0]->path_info() }, get_cookie => sub { $_[0]->cookie($_[1]->{S}{cookie_name}) }, get_method => sub { $_[0]->request_method() }, - check_https => sub { !!$_[0]->https() }, + is_https => sub { !!$_[0]->https() }, get_url => sub { $_[0]->url(); }, is_login => sub { defined $_[1]->_rp('password_param_name') }, login_ok => \&login_ok_password, @@ -789,7 +790,7 @@ sub _check_divert_core ($) { my $cooks = $r->_ch('get_cookie'); - if ($r->{S}{encrypted_only} && !$r->_ch('check_https')) { + if ($r->{S}{encrypted_only} && !$r->_ch('is_https')) { return ({ Kind => 'REDIRECT-HTTPS', Message => $r->_gt("Redirecting to secure server..."), CookieSecret => undef, @@ -1289,19 +1290,24 @@ our %_resource_get_needs_secret_hidden = (map { $_ => 0 } qw(PAGE FRAME IFRAME SRCDUMP STYLESHEET FAVICON ROBOTS), map { $_ => 1 } qw(IMAGE SCRIPT AJAX-XML AJAX-JSON AJAX-OTHER)); -sub update_get_need_add_hidden ($$) { - my ($r, $reqtype, $value) = @_; +sub update_get_need_add_hidden ($$;$) { + my ($r, $reqtype, $value, $force) = @_; my $hash = ref $r ? ($r->{GetNeedsSecretHidden} ||= { }) : \%_resource_get_needs_secret_hidden; + return if !$force && + (exists $_resource_get_needs_secret_hidden{$reqtype} || + exists $hash->{$reqtype}); $hash->{$reqtype} = $value; } sub need_add_hidden ($$) { my ($r, $method, $reqtype) = @_; return 1 if $method ne 'GET'; - my $ent = $r->{GetNeedsSecretHidden}{$reqtype}; - return $ent if defined $ent; + if (ref $r) { + my $ent = $r->{GetNeedsSecretHidden}{$reqtype}; + return $ent if defined $ent; + } my $ent = $_resource_get_needs_secret_hidden{$reqtype}; return $ent if defined $ent; die "unsupported nonpage GET type $reqtype";