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