add support for TXT records
authorRalf Jung <post@ralfj.de>
Thu, 1 Jan 2015 21:49:10 +0000 (22:49 +0100)
committerRalf Jung <post@ralfj.de>
Thu, 1 Jan 2015 21:49:10 +0000 (22:49 +0100)
zone.py

diff --git a/zone.py b/zone.py
index d7c23ff2506858d91b648a121c4b7321676a252b..473b79f829bdf2da85d7046449422bae2c041406 100644 (file)
--- a/zone.py
+++ b/zone.py
@@ -134,6 +134,21 @@ class MX:
         return zone.RR(owner, 'MX', '{0} {1}'.format(self._priority, zone.abs_hostname(self._name)))
 
 
+class TXT:
+    def __init__(self, name: str, text: str) -> None:
+        # test for bad characters
+        for c in ('\n', '\r', '\t'):
+            if c in text:
+                raise Exception("TXT record {0} containts invalid character")
+        # escape text
+        for c in ('\\', '\"'):
+            text = text.replace(c, '\\'+c)
+        self._text = text
+    
+    def generate_rr(self, owner:str, zone: 'Zone') -> 'Any':
+        return zone.RR(owner, 'TXT', '"{0}"'.format(self._text))
+
+
 class SRV:
     def __init__(self, protocol: str, service: str, name: str, port: int, prio: int, weight: int) -> None:
         self._service = check_label(service)