Convert some 'str' arguments to 'dns.name.Name' #1
1 changed files with 17 additions and 7 deletions
24
main.py
24
main.py
|
@ -1,6 +1,8 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from dns import name, rdata, rdataclass, rdatatype
|
import dns
|
||||||
|
|
||||||
|
from dns import rdata, rdataclass, rdatatype
|
||||||
from dns.zone import Zone
|
from dns.zone import Zone
|
||||||
from dns.rdtypes.ANY import CNAME, MX, NS, SOA, TXT
|
from dns.rdtypes.ANY import CNAME, MX, NS, SOA, TXT
|
||||||
from dns.rdtypes.IN import A, AAAA
|
from dns.rdtypes.IN import A, AAAA
|
||||||
|
@ -13,7 +15,7 @@ SOA_EXPIRE_TIME = 3600000
|
||||||
SOA_TIME_TO_LIVE = 10800
|
SOA_TIME_TO_LIVE = 10800
|
||||||
|
|
||||||
|
|
||||||
def format_rname(mail: str) -> name.Name:
|
def format_rname(mail: str) -> dns.name.Name:
|
||||||
"""
|
"""
|
||||||
Given an email address in the standard string format `mail@example.tld`
|
Given an email address in the standard string format `mail@example.tld`
|
||||||
return an email address in the format required by RFC 1035
|
return an email address in the format required by RFC 1035
|
||||||
|
@ -27,7 +29,7 @@ def format_rname(mail: str) -> name.Name:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
local, domain = mail.split("@")
|
local, domain = mail.split("@")
|
||||||
rname = name.Name((local, *name.from_text(domain)))
|
rname = dns.name.Name((local, *dns.name.from_text(domain)))
|
||||||
|
|
||||||
return rname
|
return rname
|
||||||
|
|
||||||
|
@ -52,17 +54,25 @@ class IPv6Record(Record):
|
||||||
|
|
||||||
class CanonicalNameRecord(Record):
|
class CanonicalNameRecord(Record):
|
||||||
def __init__(self, name: str, address: str):
|
def __init__(self, name: str, address: str):
|
||||||
super().__init__(name, CNAME.CNAME(rdataclass.IN, rdatatype.CNAME, address))
|
super().__init__(
|
||||||
|
name,
|
||||||
|
CNAME.CNAME(rdataclass.IN, rdatatype.CNAME, dns.name.from_text(address)),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class MailExchangeRecord(Record):
|
class MailExchangeRecord(Record):
|
||||||
def __init__(self, name: str, priority: int, exchange: str):
|
def __init__(self, name: str, priority: int, exchange: str):
|
||||||
super().__init__(name, MX.MX(rdataclass.IN, rdatatype.MX, priority, exchange))
|
super().__init__(
|
||||||
|
name,
|
||||||
|
MX.MX(rdataclass.IN, rdatatype.MX, priority, dns.name.from_text(exchange)),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NameServerRecord(Record):
|
class NameServerRecord(Record):
|
||||||
def __init__(self, name: str, address: str):
|
def __init__(self, name: str, address: str):
|
||||||
super().__init__(name, NS.NS(rdataclass.IN, rdatatype.NS, address))
|
super().__init__(
|
||||||
|
name, NS.NS(rdataclass.IN, rdatatype.NS, dns.name.from_text(address))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class TextRecord(Record):
|
class TextRecord(Record):
|
||||||
|
@ -87,7 +97,7 @@ class StartOfAuthorityRecord(Record):
|
||||||
SOA.SOA(
|
SOA.SOA(
|
||||||
rdataclass.IN,
|
rdataclass.IN,
|
||||||
rdatatype.SOA,
|
rdatatype.SOA,
|
||||||
address,
|
dns.name.from_text(address),
|
||||||
format_rname(rname),
|
format_rname(rname),
|
||||||
serial,
|
serial,
|
||||||
refresh,
|
refresh,
|
||||||
|
|
Loading…
Reference in a new issue