1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Have nsupdate add expected quotation to TXT records ()

This prevents the accidental creation of TXT records where every
single word gets split into its own string, such as TXT record values
in the format of `"foo" "bar" "baz"`. That being an implicit behavior
I have very hard to see anyone purposely relying on.

TXT record values can still explicitly be defined as one or more
strings, without any change in syntax.

Resolves 
This commit is contained in:
Andreas Olsson 2018-08-23 08:40:50 +02:00 committed by ansibot
parent e07352b9de
commit 4e895c10ba

View file

@ -212,8 +212,18 @@ class RecordManager(object):
else:
self.algorithm = module.params['key_algorithm']
if self.module.params['type'].lower() == 'txt':
self.value = list(map(self.txt_helper, self.module.params['value']))
else:
self.value = self.module.params['value']
self.dns_rc = 0
def txt_helper(self, entry):
if entry[0] == '"' and entry[-1] == '"':
return entry
return '"{text}"'.format(text=entry)
def __do_update(self, update):
response = None
try:
@ -254,7 +264,7 @@ class RecordManager(object):
def create_record(self):
update = dns.update.Update(self.zone, keyring=self.keyring, keyalgorithm=self.algorithm)
for entry in self.module.params['value']:
for entry in self.value:
try:
update.add(self.module.params['record'],
self.module.params['ttl'],
@ -271,7 +281,7 @@ class RecordManager(object):
def modify_record(self):
update = dns.update.Update(self.zone, keyring=self.keyring, keyalgorithm=self.algorithm)
update.delete(self.module.params['record'], self.module.params['type'])
for entry in self.module.params['value']:
for entry in self.value:
try:
update.add(self.module.params['record'],
self.module.params['ttl'],
@ -321,7 +331,7 @@ class RecordManager(object):
if self.dns_rc == 0:
if self.module.params['state'] == 'absent':
return 1
for entry in self.module.params['value']:
for entry in self.value:
try:
update.present(self.module.params['record'], self.module.params['type'], entry)
except AttributeError:
@ -395,7 +405,7 @@ def main():
record=module.params['record'],
type=module.params['type'],
ttl=module.params['ttl'],
value=module.params['value'])
value=record.value)
module.exit_json(**result)