예제 #1
0
        public ForwarderZone(string name, DnsTransportProtocol forwarderProtocol, string forwarder, bool dnssecValidation, NetProxyType proxyType, string proxyAddress, ushort proxyPort, string proxyUsername, string proxyPassword, string fwdRecordComments)
            : base(name)
        {
            _zoneTransfer = AuthZoneTransfer.Deny;
            _notify       = AuthZoneNotify.None;

            DnsResourceRecord fwdRecord = new DnsResourceRecord(name, DnsResourceRecordType.FWD, DnsClass.IN, 0, new DnsForwarderRecordData(forwarderProtocol, forwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword));

            if (!string.IsNullOrEmpty(fwdRecordComments))
            {
                fwdRecord.SetComments(fwdRecordComments);
            }

            _entries[DnsResourceRecordType.FWD] = new DnsResourceRecord[] { fwdRecord };
        }
예제 #2
0
        public override void SetRecords(DnsResourceRecordType type, IReadOnlyList <DnsResourceRecord> records)
        {
            switch (type)
            {
            case DnsResourceRecordType.SOA:
                if ((records.Count != 1) || !records[0].Name.Equals(_name, StringComparison.OrdinalIgnoreCase))
                {
                    throw new InvalidOperationException("Invalid SOA record.");
                }

                DnsResourceRecord existingSoaRR = _entries[DnsResourceRecordType.SOA][0];

                existingSoaRR.SetGlueRecords(records.GetGlueRecords());
                existingSoaRR.SetComments(records[0].GetComments());
                break;

            default:
                throw new InvalidOperationException("Cannot set records in stub zone.");
            }
        }