| @ -0,0 +1,26 @@ | |||
| # | |||
| # | |||
| # | |||
| from ipaddress import IPv4Address as _IPv4Address | |||
| from .base import Record | |||
| from .dynamic import _DynamicMixin | |||
| from .geo import _GeoMixin | |||
| from .ip import _IpValue | |||
| class Ipv4Value(_IpValue): | |||
| _address_type = _IPv4Address | |||
| _address_name = 'IPv4' | |||
| Ipv4Address = Ipv4Value | |||
| class ARecord(_DynamicMixin, _GeoMixin, Record): | |||
| _type = 'A' | |||
| _value_type = Ipv4Value | |||
| Record.register_type(ARecord) | |||
| @ -0,0 +1,26 @@ | |||
| # | |||
| # | |||
| # | |||
| from ipaddress import IPv6Address as _IPv6Address | |||
| from .base import Record | |||
| from .dynamic import _DynamicMixin | |||
| from .geo import _GeoMixin | |||
| from .ip import _IpValue | |||
| class Ipv6Value(_IpValue): | |||
| _address_type = _IPv6Address | |||
| _address_name = 'IPv6' | |||
| Ipv6Address = Ipv6Value | |||
| class AaaaRecord(_DynamicMixin, _GeoMixin, Record): | |||
| _type = 'AAAA' | |||
| _value_type = Ipv6Address | |||
| Record.register_type(AaaaRecord) | |||
| @ -0,0 +1,26 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record, ValueMixin | |||
| from .target import _TargetValue | |||
| class AliasValue(_TargetValue): | |||
| pass | |||
| class AliasRecord(ValueMixin, Record): | |||
| _type = 'ALIAS' | |||
| _value_type = AliasValue | |||
| @classmethod | |||
| def validate(cls, name, fqdn, data): | |||
| reasons = [] | |||
| if name != '': | |||
| reasons.append('non-root ALIAS not allowed') | |||
| reasons.extend(super().validate(name, fqdn, data)) | |||
| return reasons | |||
| Record.register_type(AliasRecord) | |||
| @ -0,0 +1,27 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record, ValueMixin | |||
| from .dynamic import _DynamicMixin | |||
| from .target import _TargetValue | |||
| class CnameValue(_TargetValue): | |||
| pass | |||
| class CnameRecord(_DynamicMixin, ValueMixin, Record): | |||
| _type = 'CNAME' | |||
| _value_type = CnameValue | |||
| @classmethod | |||
| def validate(cls, name, fqdn, data): | |||
| reasons = [] | |||
| if name == '': | |||
| reasons.append('root CNAME not allowed') | |||
| reasons.extend(super().validate(name, fqdn, data)) | |||
| return reasons | |||
| Record.register_type(CnameRecord) | |||
| @ -0,0 +1,19 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record, ValueMixin | |||
| from .dynamic import _DynamicMixin | |||
| from .target import _TargetValue | |||
| class DnameValue(_TargetValue): | |||
| pass | |||
| class DnameRecord(_DynamicMixin, ValueMixin, Record): | |||
| _type = 'DNAME' | |||
| _value_type = DnameValue | |||
| Record.register_type(DnameRecord) | |||
| @ -0,0 +1,18 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record, ValuesMixin | |||
| from .target import _TargetsValue | |||
| class NsValue(_TargetsValue): | |||
| pass | |||
| class NsRecord(ValuesMixin, Record): | |||
| _type = 'NS' | |||
| _value_type = NsValue | |||
| Record.register_type(NsRecord) | |||
| @ -0,0 +1,24 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record, ValuesMixin | |||
| from .target import _TargetsValue | |||
| class PtrValue(_TargetsValue): | |||
| pass | |||
| class PtrRecord(ValuesMixin, Record): | |||
| _type = 'PTR' | |||
| _value_type = PtrValue | |||
| # This is for backward compatibility with providers that don't support | |||
| # multi-value PTR records. | |||
| @property | |||
| def value(self): | |||
| return self.values[0] | |||
| Record.register_type(PtrRecord) | |||
| @ -0,0 +1,14 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record | |||
| from .chunked import _ChunkedValue, _ChunkedValuesMixin | |||
| class SpfRecord(_ChunkedValuesMixin, Record): | |||
| _type = 'SPF' | |||
| _value_type = _ChunkedValue | |||
| Record.register_type(SpfRecord) | |||
| @ -0,0 +1,18 @@ | |||
| # | |||
| # | |||
| # | |||
| from .base import Record | |||
| from .chunked import _ChunkedValue, _ChunkedValuesMixin | |||
| class TxtValue(_ChunkedValue): | |||
| pass | |||
| class TxtRecord(_ChunkedValuesMixin, Record): | |||
| _type = 'TXT' | |||
| _value_type = TxtValue | |||
| Record.register_type(TxtRecord) | |||