plugins: unify extract_challenge

we have a list of supported challenge types per plugin, so we only need
one generic implementation.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2020-04-17 14:27:42 +02:00
parent f00829fd60
commit 122626b3d5
3 changed files with 14 additions and 22 deletions

View File

@ -48,22 +48,26 @@ sub parse_config {
}
sub supported_challenge_types {
return {};
return [];
}
sub extract_challenge {
my ($self, $challenges, $c_type) = @_;
my ($self, $challenges) = @_;
die "no challenges defined\n" if !$challenges;
die "no challenge type is defined \n" if !$c_type;
my $tmp_challenges = [ grep {$_->{type} eq $c_type} @$challenges ];
die "no $c_type challenge defined in authorization\n"
if ! scalar $tmp_challenges;
my $supported_types = $self->supported_challenge_types();
my $challenge = $tmp_challenges->[0];
# preference returned by plugin!
foreach my $supported_type (@$supported_types) {
foreach my $challenge (@$challenges) {
next if $challenge->{type} ne $supported_type;
return $challenge;
return $challenge;
}
}
die "plugin does not support any of the requested challenge types\n";
}
sub get_subplugins {

View File

@ -11,7 +11,7 @@ use base qw(PVE::ACME::Challenge);
my $ACME_PATH = '/usr/share/proxmox-acme/proxmox-acme';
sub supported_challenge_types {
return { 'dns-01' => 1 };
return ["dns-01"];
}
sub type {
@ -143,12 +143,6 @@ sub options {
};
}
sub extract_challenge {
my ($self, $challenge) = @_;
return PVE::ACME::Challenge->extract_challenge($challenge, 'dns-01');
}
sub get_subplugins {
return $api_name_list;
}

View File

@ -9,7 +9,7 @@ use HTTP::Response;
use base qw(PVE::ACME::Challenge);
sub supported_challenge_types {
return { 'http-01' => 1 };
return ['http-01'];
}
sub type {
@ -27,12 +27,6 @@ sub options {
};
}
sub extract_challenge {
my ($self, $challenge) = @_;
return PVE::ACME::Challenge->extract_challenge($challenge, 'http-01');
}
sub get_subplugins {
return [];
}