Compare commits
No commits in common. "str_to_dns_name" and "master" have entirely different histories.
str_to_dns
...
master
1 changed files with 7 additions and 17 deletions
24
main.py
24
main.py
|
@ -1,8 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import dns
|
from dns import name, rdata, rdataclass, rdatatype
|
||||||
|
|
||||||
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
|
||||||
|
@ -15,7 +13,7 @@ SOA_EXPIRE_TIME = 3600000
|
||||||
SOA_TIME_TO_LIVE = 10800
|
SOA_TIME_TO_LIVE = 10800
|
||||||
|
|
||||||
|
|
||||||
def format_rname(mail: str) -> dns.name.Name:
|
def format_rname(mail: str) -> 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
|
||||||
|
@ -29,7 +27,7 @@ def format_rname(mail: str) -> dns.name.Name:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
local, domain = mail.split("@")
|
local, domain = mail.split("@")
|
||||||
rname = dns.name.Name((local, *dns.name.from_text(domain)))
|
rname = name.Name((local, *name.from_text(domain)))
|
||||||
|
|
||||||
return rname
|
return rname
|
||||||
|
|
||||||
|
@ -54,25 +52,17 @@ 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__(
|
super().__init__(name, CNAME.CNAME(rdataclass.IN, rdatatype.CNAME, address))
|
||||||
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__(
|
super().__init__(name, MX.MX(rdataclass.IN, rdatatype.MX, priority, exchange))
|
||||||
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__(
|
super().__init__(name, NS.NS(rdataclass.IN, rdatatype.NS, address))
|
||||||
name, NS.NS(rdataclass.IN, rdatatype.NS, dns.name.from_text(address))
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TextRecord(Record):
|
class TextRecord(Record):
|
||||||
|
@ -97,7 +87,7 @@ class StartOfAuthorityRecord(Record):
|
||||||
SOA.SOA(
|
SOA.SOA(
|
||||||
rdataclass.IN,
|
rdataclass.IN,
|
||||||
rdatatype.SOA,
|
rdatatype.SOA,
|
||||||
dns.name.from_text(address),
|
address,
|
||||||
format_rname(rname),
|
format_rname(rname),
|
||||||
serial,
|
serial,
|
||||||
refresh,
|
refresh,
|
||||||
|
|
Loading…
Reference in a new issue