my $filter_domains = sub {
my ($acme_config, $type) = @_;
- my $domains = $acme_config->{domains};
- foreach my $domain (sort keys %$domains) {
- my $entry = $domains->{$domain};
- if (!(grep { $_ eq $type } PVE::Tools::split_list($entry->{usage}))) {
- delete $domains->{$domain};
- }
- }
+ my $domains = PMG::NodeConfig::filter_domains_by_type($acme_config->{domains}, $type);
- if (!%$domains) {
+ if (!$domains) {
raise("No domains configured for type '$type'\n", 400);
}
+
+ $acme_config->{domains} = $domains;
};
__PACKAGE__->register_method ({
return $res;
}
+# Helper to filter the domains hash. Returns `undef` if the list is empty.
+sub filter_domains_by_type : prototype($$) {
+ my ($domains, $type) = @_;
+
+ return undef if !$domains || !%$domains;
+
+ my $out = {};
+
+ foreach my $domain (keys %$domains) {
+ my $entry = $domains->{$domain};
+ if (grep { $_ eq $type } PVE::Tools::split_list($entry->{usage})) {
+ $out->{$domain} = $entry;
+ }
+ }
+
+ return undef if !%$out;
+ return $out;
+}
+
1;