Browse Source

Merge pull request #194 from sukiyaki/googledns-semicolon-escapes

Escape unescaped semicolons coming out of Google Cloud DNS
pull/216/head
Ross McFarland 8 years ago
committed by GitHub
parent
commit
8b78f9093a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 2 deletions
  1. +6
    -2
      octodns/provider/googlecloud.py
  2. +10
    -0
      tests/test_octodns_provider_googlecloud.py

+ 6
- 2
octodns/provider/googlecloud.py View File

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


+ 10
- 0
tests/test_octodns_provider_googlecloud.py View File

@ -446,3 +446,13 @@ class TestGoogleCloudProvider(TestCase):
self.assertRegexpMatches(mock_zone.name, '^[a-z][a-z0-9-]*[a-z0-9]$') self.assertRegexpMatches(mock_zone.name, '^[a-z][a-z0-9-]*[a-z0-9]$')
self.assertEqual(len(mock_zone.name), 63) self.assertEqual(len(mock_zone.name), 63)
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'])
))

Loading…
Cancel
Save