]> git.proxmox.com Git - pmg-docs.git/blobdiff - gen-pmg.conf.5-opts.pl
bump version to 5.0-16
[pmg-docs.git] / gen-pmg.conf.5-opts.pl
index 601d14f18975f60fda173cd5418fd30a85103889..f689ec001ad0bdd3d2525eacfeec5ad10446bf5b 100755 (executable)
@@ -11,14 +11,114 @@ use PMG::Config;
 
 my $types = PMG::Config::Base->lookup_types;
 
+my $single_section = shift;
+my $found = 0;
+
+my $skiped_keys = {
+    'delete' => 1,
+    digest => 1,
+};
+
+my $key_groups = {
+    'mail-options' => [
+       'mail' , {
+           maxsize => 1,
+           rejectunknown => 1,
+           rejectunknownsender => 1,
+           helotests => 1,
+           dnsbl_sites => 1,
+           dnsbl_threshold => 1,
+           verifyreceivers => 1,
+           greylist => 1,
+           spf => 1,
+           hide_received => 1,
+           dwarning => 1,
+           conn_count_limit => 1,
+           conn_rate_limit => 1,
+           message_rate_limit => 1,
+           banner => 1,
+       }],
+    'mail-tls' => [
+       'mail' , {
+           tls => 1,
+           tlsheader => 1,
+           tlslog => 1,
+       }],
+    'mail-ports' => [
+       'mail' , {
+           int_port => 1,
+           ext_port => 1,
+       }],
+    'mail-relaying' => [
+       'mail' , {
+           relay => 1,
+           relaynomx => 1,
+           relayport => 1,
+           smarthost => 1,
+           smarthostport => 1,
+       }],
+};
+
+if (1) {
+    # verify if we document all mail settings
+    my $plugin = PMG::Config::Base->lookup('mail');
+    my $schema = $plugin->updateSchema(1);
+    my $properties = $schema->{properties};
+
+    my $found_mail_keys = {};
+    foreach my $group (keys %$key_groups) {
+       my ($sec, $hash) = @{$key_groups->{$group}};
+       next if $sec ne 'mail';
+       foreach my $k (keys %$hash) {
+           die "unknown key '$k'" if !defined($properties->{$k});
+           $found_mail_keys->{$k} = 1;
+       }
+    }
+    foreach my $k (keys %$properties) {
+       next if $skiped_keys->{$k};
+       next if $k =~ m/^max_(filters|policy|smtpd_in|smtpd_out)$/;
+       die "undocumented key '$k'" if !defined($found_mail_keys->{$k});
+    }
+}
+
+
+my $select_keys;
+
+if ($single_section) {
+    if (my $a =  $key_groups->{$single_section}) {
+       my ($sec, $hash) = @$a;
+       $single_section = $sec;
+       $select_keys = $hash;
+    }
+}
+
+
 foreach my $section (@$types) {
     my $plugin = PMG::Config::Base->lookup($section);
     my $schema = $plugin->updateSchema(1);
     my $properties = $schema->{properties};
+
+    if (defined($single_section)) {
+       next if $section ne $single_section;
+    } else {
+       print ".Section '$section'\n\n";
+    }
+
+    $found = 1;
+
+    my $filter = sub {
+       my ($key, $phash) = @_;
+       return 1 if $skiped_keys->{$key};
+       return 1 if $select_keys && !$select_keys->{$key};
+       return 0;
+    };
     
-    print ".Section '$section'\n\n";
-    
-    print PVE::RESTHandler::dump_properties($properties);
+    print PVE::RESTHandler::dump_properties(
+       $properties, 'asciidoc', 'config', $filter);
+}
+
+if (defined($single_section)) {
+    die "no such section '$single_section'" if !$found;
 }
  
 exit(0);