Skip to content

Commit 148f5c9

Browse files
SOA parameters for pdns 4.4 (#32)
* SOA parameters for pdns 4.4 * Re-order Serial ID before Refresh --------- Co-authored-by: Jonathan <[email protected]>
1 parent 5715992 commit 148f5c9

File tree

7 files changed

+47
-24
lines changed

7 files changed

+47
-24
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,14 @@ environment variables override those:
3030

3131
`NIPIO_SOA_NS`: SOA name server.
3232

33+
`NIPIO_SOA_REFRESH`: SOA refresh.
34+
35+
`NIPIO_SOA_RETRY`: SOA retry.
36+
37+
`NIPIO_SOA_EXPIRY`: SOA expiry.
38+
39+
`NIPIO_SOA_MINIMUM_TTL`: SOA minimum time-to-live (TTL).
40+
3341
`NIPIO_NAMESERVERS`: A space-separated list of domain=ip nameserver pairs. Example: `ns1.nip.io=127.0.0.1 ns2.nip.io=127.0.0.1`.
3442

3543
`NIPIO_WHITELIST`: A space-separated list of description=range pairs for whitelisted ranges in CIDR format.

nipio/backend.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ id=1
2323
2424
# Name server
2525
ns=ns1.nip.io.example
26+
# Refresh
27+
refresh=10800
28+
# Retry
29+
retry=3600
30+
# Expiry
31+
expiry=604600
32+
# Minimum TTL
33+
minimum=3600
2634

2735

2836
# nameservers

nipio/backend.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ class DynamicBackend:
121121
NIPIO_SOA_ID -- SOA serial number.
122122
NIPIO_SOA_HOSTMASTER -- SOA hostmaster email address.
123123
NIPIO_SOA_NS -- SOA name server.
124+
NIPIO_SOA_REFRESH -- SOA refresh.
125+
NIPIO_SOA_RETRY -- SOA retry.
126+
NIPIO_SOA_EXPIRY -- SOA expiry.
127+
NIPIO_SOA_MINIMUM_TTL -- SOA minimum time-to-live (TTL).
124128
NIPIO_NAMESERVERS -- A space-separated list of domain=ip nameserver pairs.
125129
NIPIO_WHITELIST -- A space-separated list of description=range pairs to whitelist.
126130
The range should be in CIDR format.
@@ -163,10 +167,14 @@ def configure(self, config_filename: str = _get_default_config_file()) -> None:
163167
config.read_file(fp)
164168

165169
self.id = os.getenv("NIPIO_SOA_ID", config.get("soa", "id"))
166-
self.soa = "%s %s %s" % (
170+
self.soa = "%s %s %s %s %s %s %s" % (
167171
_resolve_configuration("NIPIO_SOA_NS", config, "soa", "ns"),
168172
_resolve_configuration("NIPIO_SOA_HOSTMASTER", config, "soa", "hostmaster"),
169173
self.id,
174+
_resolve_configuration("NIPIO_SOA_REFRESH", config, "soa", "refresh"),
175+
_resolve_configuration("NIPIO_SOA_RETRY", config, "soa", "retry"),
176+
_resolve_configuration("NIPIO_SOA_EXPIRY", config, "soa", "expiry"),
177+
_resolve_configuration("NIPIO_SOA_MINIMUM_TTL", config, "soa", "minimum"),
170178
)
171179
self.domain = os.getenv("NIPIO_DOMAIN", config.get("main", "domain"))
172180
self.ip_address = os.getenv(

nipio_tests/backend_test.conf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,14 @@ id=55
2323
2424
# Name server
2525
ns=ns1.nip.io.test
26-
26+
# Refresh
27+
refresh=56
28+
# Retry
29+
retry=57
30+
# Expiry
31+
expiry=58
32+
# Minimum TTL
33+
minimum=59
2734

2835
# nameservers
2936
[nameservers]

nipio_tests/backend_test.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -767,7 +767,7 @@ def test_configure_with_full_config(self) -> None:
767767
)
768768
assert_that(backend.blacklisted_ips).is_equal_to(["10.0.0.100"])
769769
assert_that(backend.soa).is_equal_to(
770-
"ns1.nip.io.test [email protected] 55"
770+
"ns1.nip.io.test [email protected] 55 56 57 58 59"
771771
)
772772

773773
def test_configure_with_environment_variables_set(self) -> None:
@@ -777,6 +777,10 @@ def test_configure_with_environment_variables_set(self) -> None:
777777
os.environ["NIPIO_SOA_ID"] = "99"
778778
os.environ["NIPIO_SOA_HOSTMASTER"] = "[email protected]"
779779
os.environ["NIPIO_SOA_NS"] = "ns1.example.com"
780+
os.environ["NIPIO_SOA_REFRESH"] = "40"
781+
os.environ["NIPIO_SOA_RETRY"] = "41"
782+
os.environ["NIPIO_SOA_EXPIRY"] = "42"
783+
os.environ["NIPIO_SOA_MINIMUM_TTL"] = "43"
780784
os.environ[
781785
"NIPIO_NAMESERVERS"
782786
] = "ns1.example.com=127.0.0.31 ns2.example.com=127.0.0.32"
@@ -800,7 +804,7 @@ def test_configure_with_environment_variables_set(self) -> None:
800804
)
801805
assert_that(backend.blacklisted_ips).is_equal_to(["10.0.0.111", "10.0.0.112"])
802806
assert_that(backend.soa).is_equal_to(
803-
"ns1.example.com [email protected] 99"
807+
"ns1.example.com [email protected] 99 40 41 42 43"
804808
)
805809

806810
def test_configure_with_env_lists_config(self) -> None:

nipio_tests/backend_test_no_lists.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ id=55
2323
2424
# Name server
2525
ns=ns1.nip.io.test
26+
# Refresh
27+
refresh=56
28+
# Retry
29+
retry=57
30+
# Expiry
31+
expiry=58
32+
# Minimum TTL
33+
minimum=59
2634

2735

2836
# nameservers

pdns/pdns.conf

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -245,26 +245,6 @@ setuid=pdns
245245
#
246246
# smtpredirector=a.misconfigured.powerdns.smtp.server
247247

248-
#################################
249-
# soa-expire-default Default SOA expire
250-
#
251-
# soa-expire-default=604800
252-
253-
#################################
254-
# soa-minimum-ttl Default SOA mininum ttl
255-
#
256-
# soa-minimum-ttl=3600
257-
258-
#################################
259-
# soa-refresh-default Default SOA refresh
260-
#
261-
# soa-refresh-default=10800
262-
263-
#################################
264-
# soa-retry-default Default SOA retry
265-
#
266-
# soa-retry-default=3600
267-
268248
#################################
269249
# soa-serial-offset Make sure that no SOA serial is less than this number
270250
#

0 commit comments

Comments
 (0)