knotd: fix TTL
This commit is contained in:
parent
c7baba441f
commit
8e8bf490b9
1 changed files with 15 additions and 0 deletions
|
@ -53,6 +53,7 @@ class MultiRecords:
|
|||
class A:
|
||||
address: str
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.IN.A.A(
|
||||
|
@ -64,6 +65,7 @@ class A:
|
|||
class AAAA:
|
||||
address: str
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.IN.AAAA.AAAA(
|
||||
|
@ -75,6 +77,7 @@ class AAAA:
|
|||
class PTR:
|
||||
target: dns.name.Name
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.PTR.PTR(
|
||||
|
@ -86,6 +89,7 @@ class PTR:
|
|||
class CNAME:
|
||||
target: dns.name.Name
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.CNAME.CNAME(
|
||||
|
@ -98,6 +102,7 @@ class MX:
|
|||
exchange: Annotated[dns.name.Name, MultiRecords]
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
preference: int = 10
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.MX.MX(
|
||||
|
@ -112,6 +117,7 @@ class MX:
|
|||
class NS:
|
||||
target: Annotated[dns.name.Name, MultiRecords]
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.NS.NS(
|
||||
|
@ -123,6 +129,7 @@ class NS:
|
|||
class SPF:
|
||||
data: str
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.SPF.SPF(
|
||||
|
@ -134,6 +141,7 @@ class SPF:
|
|||
class TXT:
|
||||
data: str
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.TXT.TXT(
|
||||
|
@ -148,6 +156,7 @@ class SRV:
|
|||
port: int
|
||||
priority: int = 10
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.IN.SRV.SRV(
|
||||
|
@ -170,6 +179,7 @@ class SOA:
|
|||
minimum: int
|
||||
serial: int = 1
|
||||
name: Annotated[dns.name.Name, MultiRecords] = dns.name.empty
|
||||
ttl: int = 0
|
||||
|
||||
def rdata(self) -> dns.rdata.Rdata:
|
||||
return dns.rdtypes.ANY.SOA.SOA(
|
||||
|
@ -364,6 +374,10 @@ def main() -> int:
|
|||
"required": True,
|
||||
"options": spec_options_of_type(SOA),
|
||||
},
|
||||
"default_ttl": {
|
||||
"type": "int",
|
||||
"default": 3600,
|
||||
},
|
||||
"hosts": {"type": "dict", "default": {}},
|
||||
"reverse_hosts": {"type": "dict", "default": {}},
|
||||
}
|
||||
|
@ -403,6 +417,7 @@ def main() -> int:
|
|||
node = zone.get_node(record.name, create=True)
|
||||
rdata = record.rdata()
|
||||
dataset = node.get_rdataset(rdata.rdclass, rdata.rdtype, create=True)
|
||||
dataset.ttl = record.ttl if record.ttl > 0 else module.params["default_ttl"]
|
||||
dataset.add(rdata)
|
||||
|
||||
zone_text = zone.to_text(relativize=False, sorted=True)
|
||||
|
|
Loading…
Reference in a new issue