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:
@@ -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': [{
|
||||
|
@@ -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'])
|
||||
))
|
||||
|
Reference in New Issue
Block a user