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 (#43386)
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 #43380
This commit is contained in:
parent
e07352b9de
commit
4e895c10ba
1 changed files with 14 additions and 4 deletions
|
@ -212,8 +212,18 @@ class RecordManager(object):
|
||||||
else:
|
else:
|
||||||
self.algorithm = module.params['key_algorithm']
|
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
|
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):
|
def __do_update(self, update):
|
||||||
response = None
|
response = None
|
||||||
try:
|
try:
|
||||||
|
@ -254,7 +264,7 @@ class RecordManager(object):
|
||||||
|
|
||||||
def create_record(self):
|
def create_record(self):
|
||||||
update = dns.update.Update(self.zone, keyring=self.keyring, keyalgorithm=self.algorithm)
|
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:
|
try:
|
||||||
update.add(self.module.params['record'],
|
update.add(self.module.params['record'],
|
||||||
self.module.params['ttl'],
|
self.module.params['ttl'],
|
||||||
|
@ -271,7 +281,7 @@ class RecordManager(object):
|
||||||
def modify_record(self):
|
def modify_record(self):
|
||||||
update = dns.update.Update(self.zone, keyring=self.keyring, keyalgorithm=self.algorithm)
|
update = dns.update.Update(self.zone, keyring=self.keyring, keyalgorithm=self.algorithm)
|
||||||
update.delete(self.module.params['record'], self.module.params['type'])
|
update.delete(self.module.params['record'], self.module.params['type'])
|
||||||
for entry in self.module.params['value']:
|
for entry in self.value:
|
||||||
try:
|
try:
|
||||||
update.add(self.module.params['record'],
|
update.add(self.module.params['record'],
|
||||||
self.module.params['ttl'],
|
self.module.params['ttl'],
|
||||||
|
@ -321,7 +331,7 @@ class RecordManager(object):
|
||||||
if self.dns_rc == 0:
|
if self.dns_rc == 0:
|
||||||
if self.module.params['state'] == 'absent':
|
if self.module.params['state'] == 'absent':
|
||||||
return 1
|
return 1
|
||||||
for entry in self.module.params['value']:
|
for entry in self.value:
|
||||||
try:
|
try:
|
||||||
update.present(self.module.params['record'], self.module.params['type'], entry)
|
update.present(self.module.params['record'], self.module.params['type'], entry)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
@ -395,7 +405,7 @@ def main():
|
||||||
record=module.params['record'],
|
record=module.params['record'],
|
||||||
type=module.params['type'],
|
type=module.params['type'],
|
||||||
ttl=module.params['ttl'],
|
ttl=module.params['ttl'],
|
||||||
value=module.params['value'])
|
value=record.value)
|
||||||
|
|
||||||
module.exit_json(**result)
|
module.exit_json(**result)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue