[pve-devel] [Patch V3 acme 08/13] Refactor extract_callenge for code reuse.

Wolfgang Link w.link at proxmox.com
Thu Apr 16 07:18:35 CEST 2020


Signed-off-by: Wolfgang Link <w.link at proxmox.com>
---
 src/PVE/ACME/Challenge.pm | 47 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/src/PVE/ACME/Challenge.pm b/src/PVE/ACME/Challenge.pm
index 40d32b6..649c228 100644
--- a/src/PVE/ACME/Challenge.pm
+++ b/src/PVE/ACME/Challenge.pm
@@ -3,10 +3,57 @@ package PVE::ACME::Challenge;
 use strict;
 use warnings;
 
+use PVE::JSONSchema qw(get_standard_option);
+
+use base qw(PVE::SectionConfig);
+
+my $defaultData = {
+    additionalProperties => 0,
+    propertyList => {
+	id => {
+	    description => "ACME Plugin ID name",
+	    type => 'string',
+	},
+	type => {
+	    description => "ACME challenge type.",
+	    type => 'string',
+	},
+	disable => {
+	    description => "Flag to disable the config.",
+	    type => 'boolean',
+	    optional => 1,
+	},
+	nodes => get_standard_option('pve-node-list', { optional => 1 }),
+    },
+};
+
+sub private {
+    return $defaultData;
+}
+
 sub supported_challenge_types {
     return {};
 }
 
+sub extract_challenge {
+    my ($self, $challenges, $c_type) = @_;
+
+    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 $challenge = $tmp_challenges->[0];
+
+    return $challenge;
+}
+
+sub get_subplugins {
+    return [];
+}
+
 sub setup {
     my ($class, $acme, $authorization) = @_;
 
-- 
2.20.1





More information about the pve-devel mailing list