]> git.proxmox.com Git - pmg-docs.git/blame - gen-pmg.conf.5-opts.pl
d/control: define compat level via build-depends and raise to 13
[pmg-docs.git] / gen-pmg.conf.5-opts.pl
CommitLineData
f872534d
DM
1#!/usr/bin/perl
2
3use lib '.';
2b6070e7 4
f872534d
DM
5use strict;
6use warnings;
2b6070e7 7
f872534d
DM
8use PVE::RESTHandler;
9
f872534d
DM
10use PMG::Config;
11
12my $types = PMG::Config::Base->lookup_types;
13
7608b70c
DM
14my $single_section = shift;
15my $found = 0;
16
cbb2b879
DM
17my $skiped_keys = {
18 'delete' => 1,
19 digest => 1,
20};
21
e09057ab 22my $key_groups = {
e3d778e0
DM
23 'mail-options' => [
24 'mail' , {
25 maxsize => 1,
26 rejectunknown => 1,
27 rejectunknownsender => 1,
28 helotests => 1,
29 dnsbl_sites => 1,
f7bc1420 30 dnsbl_threshold => 1,
e3d778e0
DM
31 verifyreceivers => 1,
32 greylist => 1,
47f7e1d6
SI
33 greylistmask4 => 1,
34 greylist6 => 1,
35 greylistmask6 => 1,
e3d778e0
DM
36 spf => 1,
37 hide_received => 1,
38 dwarning => 1,
39 conn_count_limit => 1,
40 conn_rate_limit => 1,
41 message_rate_limit => 1,
42 banner => 1,
4ea3a203
SI
43 before_queue_filtering => 1,
44 ndr_on_block => 1,
8682cc57 45 smtputf8 => 1,
e3d778e0 46 }],
cbb2b879
DM
47 'mail-tls' => [
48 'mail' , {
49 tls => 1,
50 tlsheader => 1,
51 tlslog => 1,
52 }],
d9c56b22
DM
53 'mail-ports' => [
54 'mail' , {
55 int_port => 1,
56 ext_port => 1,
57 }],
e09057ab
DM
58 'mail-relaying' => [
59 'mail' , {
60 relay => 1,
61 relaynomx => 1,
62 relayport => 1,
2b6070e7 63 relayprotocol => 1,
e09057ab 64 smarthost => 1,
851283b1 65 smarthostport => 1,
e09057ab 66 }],
20522d96
SI
67 'admin-dkim' => [
68 'admin' , {
69 dkim_selector => 1,
70 dkim_sign => 1,
71 dkim_sign_all_mail => 1,
72 }],
e09057ab
DM
73};
74
cbb2b879
DM
75if (1) {
76 # verify if we document all mail settings
77 my $plugin = PMG::Config::Base->lookup('mail');
78 my $schema = $plugin->updateSchema(1);
79 my $properties = $schema->{properties};
80
81 my $found_mail_keys = {};
82 foreach my $group (keys %$key_groups) {
83 my ($sec, $hash) = @{$key_groups->{$group}};
84 next if $sec ne 'mail';
85 foreach my $k (keys %$hash) {
f475c3fa
TL
86 if (!defined($properties->{$k})) {
87 warn "\n WARNING: unknown key '$k'";
88 next;
89 }
cbb2b879
DM
90 $found_mail_keys->{$k} = 1;
91 }
92 }
93 foreach my $k (keys %$properties) {
94 next if $skiped_keys->{$k};
95 next if $k =~ m/^max_(filters|policy|smtpd_in|smtpd_out)$/;
f475c3fa
TL
96
97 if (!defined($found_mail_keys->{$k})) {
98 die "undocumented key '$k'" if !$ENV{PMG_DOCS_IGNORE_MISSING_KEY};
99 warn "WARNING: undocumented key '$k'\n";
100 }
cbb2b879
DM
101 }
102}
103
104
e09057ab
DM
105my $select_keys;
106
107if ($single_section) {
108 if (my $a = $key_groups->{$single_section}) {
109 my ($sec, $hash) = @$a;
110 $single_section = $sec;
111 $select_keys = $hash;
112 }
113}
114
115
f872534d
DM
116foreach my $section (@$types) {
117 my $plugin = PMG::Config::Base->lookup($section);
118 my $schema = $plugin->updateSchema(1);
119 my $properties = $schema->{properties};
7608b70c
DM
120
121 if (defined($single_section)) {
122 next if $section ne $single_section;
123 } else {
124 print ".Section '$section'\n\n";
125 }
126
127 $found = 1;
a18c67c0
DM
128
129 my $filter = sub {
130 my ($key, $phash) = @_;
cbb2b879 131 return 1 if $skiped_keys->{$key};
e09057ab 132 return 1 if $select_keys && !$select_keys->{$key};
a18c67c0
DM
133 return 0;
134 };
2b6070e7 135
a18c67c0
DM
136 print PVE::RESTHandler::dump_properties(
137 $properties, 'asciidoc', 'config', $filter);
f872534d 138}
7608b70c
DM
139
140if (defined($single_section)) {
141 die "no such section '$single_section'" if !$found;
142}
2b6070e7 143
f872534d 144exit(0);