mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
RackSpace does not escape ;.
This commit is contained in:
@@ -7,6 +7,7 @@ from __future__ import absolute_import, division, print_function, \
|
||||
from requests import HTTPError, Session, post
|
||||
from collections import defaultdict
|
||||
import logging
|
||||
import string
|
||||
|
||||
from ..record import Create, Record
|
||||
from .base import BaseProvider
|
||||
@@ -39,6 +40,16 @@ def add_quotes(s):
|
||||
return '"{}"'.format(s)
|
||||
|
||||
|
||||
def escape_semicolon(s):
|
||||
assert s
|
||||
return string.replace(s, ';', '\;')
|
||||
|
||||
|
||||
def unescape_semicolon(s):
|
||||
assert s
|
||||
return string.replace(s, '\;', ';')
|
||||
|
||||
|
||||
class RackspaceProvider(BaseProvider):
|
||||
SUPPORTS_GEO = False
|
||||
TIMEOUT = 5
|
||||
@@ -162,15 +173,15 @@ class RackspaceProvider(BaseProvider):
|
||||
_data_for_CNAME = _data_for_single
|
||||
_data_for_PTR = _data_for_single
|
||||
|
||||
# def _data_for_quoted(self, rrset):
|
||||
# return {
|
||||
# 'type': rrset[0]['type'],
|
||||
# 'values': [strip_quotes(r['data']) for r in rrset],
|
||||
# 'ttl': rrset[0]['ttl']
|
||||
# }
|
||||
def _data_for_textual(self, rrset):
|
||||
return {
|
||||
'type': rrset[0]['type'],
|
||||
'values': [escape_semicolon(r['data']) for r in rrset],
|
||||
'ttl': rrset[0]['ttl']
|
||||
}
|
||||
|
||||
_data_for_SPF = _data_for_multiple
|
||||
_data_for_TXT = _data_for_multiple
|
||||
_data_for_SPF = _data_for_textual
|
||||
_data_for_TXT = _data_for_textual
|
||||
|
||||
def _data_for_MX(self, rrset):
|
||||
values = []
|
||||
@@ -304,17 +315,16 @@ class RackspaceProvider(BaseProvider):
|
||||
_record_for_CNAME = _record_for_named
|
||||
_record_for_PTR = _record_for_named
|
||||
|
||||
# @staticmethod
|
||||
# def _record_for_quoted(record, value):
|
||||
# return {
|
||||
# 'name': record.fqdn,
|
||||
# 'type': record._type,
|
||||
# 'data': add_quotes(value),
|
||||
# 'ttl': max(record.ttl, 300),
|
||||
# }
|
||||
|
||||
_record_for_SPF = _record_for_single
|
||||
_record_for_TXT = _record_for_single
|
||||
@staticmethod
|
||||
def _record_for_textual(record, value):
|
||||
return {
|
||||
'name': record.fqdn,
|
||||
'type': record._type,
|
||||
'data': unescape_semicolon(value),
|
||||
'ttl': max(record.ttl, 300),
|
||||
}
|
||||
_record_for_SPF = _record_for_textual
|
||||
_record_for_TXT = _record_for_textual
|
||||
|
||||
@staticmethod
|
||||
def _record_for_MX(record, value):
|
||||
|
||||
Reference in New Issue
Block a user