1
0
mirror of https://github.com/github/octodns.git synced 2024-05-11 05:55:00 +00:00

Escape unescaped semicolons coming out of Google Cloud DNS

This commit is contained in:
Masaki Tagawa
2018-02-13 23:43:30 +09:00
parent 5138d06162
commit f62f824966
2 changed files with 16 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ import shlex
import time
from logging import getLogger
from uuid import uuid4
import re
from google.cloud import dns
@@ -269,12 +270,15 @@ class GoogleCloudProvider(BaseProvider):
_data_for_PTR = _data_for_CNAME
_fix_semicolons = re.compile(r'(?<!\\);')
def _data_for_SPF(self, gcloud_record):
if len(gcloud_record.rrdatas) > 1:
return {
'values': gcloud_record.rrdatas}
'values': [self._fix_semicolons.sub('\;', rr)
for rr in gcloud_record.rrdatas]}
return {
'value': gcloud_record.rrdatas[0]}
'value': self._fix_semicolons.sub('\;', gcloud_record.rrdatas[0])}
def _data_for_SRV(self, gcloud_record):
return {'values': [{

View File

@@ -427,3 +427,13 @@ class TestGoogleCloudProvider(TestCase):
mock_zone.create.assert_called()
provider.gcloud_client.zone.assert_called()
def test_semicolon_fixup(self):
provider = self._get_provider()
self.assertEquals({
'values': ['abcd\\; ef\\;g', 'hij\\; klm\\;n']
}, provider._data_for_TXT(
DummyResourceRecordSet(
'unit.tests.', 'TXT', 0, ['abcd; ef;g', 'hij\\; klm\\;n'])
))