///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:BFFE923AC1A74C33749D31F3CABB1EA2 protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (Inner.ARecords != null && Inner.ARecords.Count > 0) { if (resource.ARecords == null) { resource.ARecords = new List <ARecord>(); } foreach (var record in Inner.ARecords) { resource.ARecords.Add(record); } Inner.ARecords.Clear(); } if (this.recordSetRemoveInfo.ARecords.Count > 0) { if (resource.ARecords != null) { foreach (var recordToRemove in this.recordSetRemoveInfo.ARecords) { foreach (var record in resource.ARecords) { if (record.Ipv4Address.Equals(recordToRemove.Ipv4Address, System.StringComparison.OrdinalIgnoreCase)) { resource.ARecords.Remove(record); break; } } } } this.recordSetRemoveInfo.ARecords.Clear(); } return(resource); }
private PrivateDnsRecordSetImpl WrapModel(RecordSetInner inner) { var recordSet = new PrivateDnsRecordSetImpl(inner.Name, inner.Type, this, inner); switch (recordSet.RecordType()) { case RecordType.A: return(new ARecordSetImpl(inner.Name, this, inner)); case RecordType.AAAA: return(new AaaaRecordSetImpl(inner.Name, this, inner)); case RecordType.CNAME: return(new CnameRecordSetImpl(inner.Name, this, inner)); case RecordType.MX: return(new MxRecordSetImpl(inner.Name, this, inner)); case RecordType.PTR: return(new PtrRecordSetImpl(inner.Name, this, inner)); case RecordType.SOA: return(new SoaRecordSetImpl(inner.Name, this, inner)); case RecordType.SRV: return(new SrvRecordSetImpl(inner.Name, this, inner)); case RecordType.TXT: return(new TxtRecordSetImpl(inner.Name, this, inner)); default: return(recordSet); } }
///GENMHASH:A65D7F670CB73E56248FA5B252060BCD:0B3E2A2CA99FEE8D024AAE98E6686F31 protected override IAaaaRecordSet WrapModel(RecordSetInner inner) { if (inner == null) { return(null); } return(new AaaaRecordSetImpl(inner.Name, dnsZone, inner)); }
///GENMHASH:3F0A6CC3DBBB3330F47E8737215D7ECE:17D906D49BFF77D8768FB115CC63703F public ISoaRecordSet GetSoaRecordSet() { RecordSetInner inner = Extensions.Synchronize(() => Manager.Inner.RecordSets.GetAsync(ResourceGroupName, Name, "@", RecordType.SOA)); if (inner == null) { return(null); } return(new SoaRecordSetImpl(inner.Name, this, inner)); }
///GENMHASH:5C58E472AE184041661005E7B2D7EE30:2CAFCB69FA35BE2592639975C84B12D6 public async override Task <IARecordSet> GetByNameAsync(string name, CancellationToken cancellationToken = default(CancellationToken)) { RecordSetInner inner = await dnsZone.Manager.Inner.RecordSets.GetAsync( dnsZone.ResourceGroupName, dnsZone.Name, name, recordType, cancellationToken); return(new ARecordSetImpl(dnsZone, inner)); }
public async Task <RecordSetT> GetByNameAsync(string name, CancellationToken cancellationToken = default(CancellationToken)) { RecordSetInner inner = await parent.Manager.Inner.RecordSets.GetAsync( parent.ResourceGroupName, parent.Name, recordType, name, cancellationToken); return(WrapModel(inner)); }
public async Task <RecordSetT> GetByIdAsync(string id, CancellationToken cancellationToken = default(CancellationToken)) { RecordSetInner inner = await parent.Manager.Inner.RecordSets.GetAsync( parent.ResourceGroupName, parent.Name, recordType, ResourceUtils.NameFromResourceId(id), cancellationToken); return(WrapModel(inner)); }
///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:AF11C8A7E2B299112E3CED7714F622A7 protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (resource.CnameRecord == null) { resource.CnameRecord = new CnameRecord(); } if (Inner.CnameRecord.Cname != null) { resource.CnameRecord.Cname = Inner.CnameRecord.Cname; } return(resource); }
///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:352DEB81080973F0DD8A640958597C6B protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (resource.SoaRecord == null) { resource.SoaRecord = new SoaRecord(); } if (Inner.SoaRecord.Email != null) { resource.SoaRecord.Email = Inner.SoaRecord.Email; } if (Inner.SoaRecord.ExpireTime != null) { resource.SoaRecord.ExpireTime = Inner.SoaRecord.ExpireTime; } if (Inner.SoaRecord.MinimumTtl != null) { resource.SoaRecord.MinimumTtl = Inner.SoaRecord.MinimumTtl; } if (Inner.SoaRecord.RefreshTime != null) { resource.SoaRecord.RefreshTime = Inner.SoaRecord.RefreshTime; } if (Inner.SoaRecord.RetryTime != null) { resource.SoaRecord.RetryTime = Inner.SoaRecord.RetryTime; } if (Inner.SoaRecord.SerialNumber != null) { resource.SoaRecord.SerialNumber = Inner.SoaRecord.SerialNumber; } Inner.SoaRecord = new SoaRecord(); return(resource); }
///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:53BB67595D71CD0CA502C876E02949C2 protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (Inner.SrvRecords != null && Inner.SrvRecords.Count > 0) { if (resource.SrvRecords == null) { resource.SrvRecords = new List <SrvRecord>(); } foreach (var record in Inner.SrvRecords) { resource.SrvRecords.Add(record); } Inner.SrvRecords.Clear(); } if (this.recordSetRemoveInfo.SrvRecords.Count > 0) { if (resource.SrvRecords != null) { foreach (var recordToRemove in this.recordSetRemoveInfo.SrvRecords) { foreach (var record in resource.SrvRecords) { if (record.Target.Equals(recordToRemove.Target, StringComparison.OrdinalIgnoreCase) && (record.Port == recordToRemove.Port) && (record.Weight == recordToRemove.Weight) && (record.Priority == recordToRemove.Priority)) { resource.SrvRecords.Remove(record); break; } } } } this.recordSetRemoveInfo.SrvRecords.Clear(); } return(resource); }
///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:3DADD08418376111AE3468B0B95AA093 protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (Inner.MxRecords != null && Inner.MxRecords.Count > 0) { if (resource.MxRecords == null) { resource.MxRecords = new List <MxRecord>(); } foreach (var record in Inner.MxRecords) { resource.MxRecords.Add(record); } Inner.MxRecords.Clear(); } if (this.recordSetRemoveInfo.MxRecords.Count > 0) { if (resource.MxRecords != null) { foreach (var recordToRemove in this.recordSetRemoveInfo.MxRecords) { foreach (var record in resource.MxRecords) { if (record.Exchange.Equals(recordToRemove.Exchange, StringComparison.OrdinalIgnoreCase) && (record.Preference == recordToRemove.Preference)) { resource.MxRecords.Remove(record); break; } } } } this.recordSetRemoveInfo.MxRecords.Clear(); } return(resource); }
///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:EE1172F9D1290826C7FCCEB7011C5DBF protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (Inner.TxtRecords != null && Inner.TxtRecords.Count > 0) { if (resource.TxtRecords == null) { resource.TxtRecords = new List <TxtRecord>(); } foreach (var record in Inner.TxtRecords) { resource.TxtRecords.Add(record); } Inner.TxtRecords.Clear(); } if (this.recordSetRemoveInfo.TxtRecords.Count > 0) { if (resource.TxtRecords != null) { foreach (var recordToRemove in this.recordSetRemoveInfo.TxtRecords) { foreach (var record in resource.TxtRecords) { if (record.Value.Count != 0 && record.Value[0].Equals(recordToRemove.Value[0], StringComparison.OrdinalIgnoreCase)) { resource.TxtRecords.Remove(record); break; } } } } this.recordSetRemoveInfo.TxtRecords.Clear(); } return(resource); }
///GENMHASH:7D787B3687385E18B312D5F6D6DA9444:4C25CCDE325968ECA10D0148DB18F640 protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { if (Inner.CaaRecords != null && Inner.CaaRecords.Count > 0) { if (resource.CaaRecords == null) { resource.CaaRecords = new List<CaaRecord>(); } foreach (var record in Inner.CaaRecords) { resource.CaaRecords.Add(record); } Inner.CaaRecords.Clear(); } if (this.recordSetRemoveInfo.CaaRecords.Count > 0) { if (resource.CaaRecords != null) { foreach (var recordToRemove in this.recordSetRemoveInfo.CaaRecords) { foreach (var record in resource.CaaRecords) { if (record.Value.Equals(recordToRemove.Value, StringComparison.OrdinalIgnoreCase) && (record.Flags == recordToRemove.Flags) && (record.Tag.Equals(recordToRemove.Tag, StringComparison.OrdinalIgnoreCase))) { resource.CaaRecords.Remove(record); break; } } } } this.recordSetRemoveInfo.CaaRecords.Clear(); } return resource; }
protected override IPtrRecordSet WrapModel(RecordSetInner inner) { return(inner == null ? null : new PtrRecordSetImpl(inner.Name, parent, inner)); }
///GENMHASH:BCDFEFE12CEE04070A4BEFF0946CAA2C:51674516D8D4498FBB083895496288A6 internal TxtRecordSetImpl(string name, DnsZoneImpl parent, RecordSetInner innerModel) : base(name, Enum.GetName(typeof(RecordType), Models.RecordType.TXT), parent, innerModel) { }
///GENMHASH:901E189AE86408AC3D4B4FC4B66B4701:3F5F2CC7F3C4A3B943EC7C1953A9D2E5 internal NSRecordSetImpl(DnsZoneImpl parent, RecordSetInner innerModel) : base(parent, innerModel) { }
///GENMHASH:A65D7F670CB73E56248FA5B252060BCD:29F76B986FA21FD2583D531C098AD879 protected override IARecordSet WrapModel(RecordSetInner inner) { return(new ARecordSetImpl(dnsZone, inner)); }
protected override RecordSetInner PrepareForUpdate(RecordSetInner resource) { return(resource); }
public async Task DnsAuthorizationAsync(string named, string instanceId, AcmeChallengeResponse challenge) { var options = _optionsMonitor.Get(named); using var dnsManagementClient = await CreateDnsManagementClientAsync(options); var zone = (await dnsManagementClient.Zones.ListAsync()).FirstOrDefault(x => challenge.Domain.EndsWith(x?.Name !)); var resourceId = ParseResourceId(zone.Id); var fullDomainName = GetChallengeDnsName(challenge.Domain); var domain = fullDomainName.Replace("." + zone.Name, string.Empty); _logger.LogInformation("[Azure Dns Update][Started] Domain Name: {domainName}", challenge.Domain); RecordSetInner?recordSet; try { recordSet = await dnsManagementClient.RecordSets.GetAsync(resourceId["resourceGroups"], zone.Name, domain, RecordType.TXT); } catch { recordSet = null; } if (recordSet != null) { if (recordSet.Metadata == null || !recordSet.Metadata.TryGetValue("InstanceId", out var dnsInstanceId) || dnsInstanceId != instanceId) { recordSet.Metadata = new Dictionary <string, string> { { "InstanceId", instanceId } }; recordSet.TxtRecords.Clear(); } recordSet.TTL = 3600; recordSet.TxtRecords.Add(new TxtRecord(new[] { challenge.Token })); } else { recordSet = new RecordSetInner() { TTL = 3600, Metadata = new Dictionary <string, string> { { "InstanceId", instanceId } }, TxtRecords = new[] { new TxtRecord(new[] { challenge.Token }) } }; } await dnsManagementClient.RecordSets.CreateOrUpdateAsync(resourceId["resourceGroups"], zone.Name, domain, RecordType.TXT, recordSet); _logger.LogInformation("[Azure DNS Update][Ended] Domain Name: {domainName}", challenge.Domain); await CheckDnsChallengeAsync(challenge, fullDomainName); }
/// <summary> /// Creates or updates a record set within a DNS zone. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. /// </param> /// <param name='zoneName'> /// The name of the DNS zone (without a terminating dot). /// </param> /// <param name='relativeRecordSetName'> /// The name of the record set, relative to the name of the zone. /// </param> /// <param name='recordType'> /// The type of DNS record in this record set. Record sets of type SOA can be /// updated but not created (they are created when the DNS zone is created). /// Possible values include: 'A', 'AAAA', 'CAA', 'CNAME', 'MX', 'NS', 'PTR', /// 'SOA', 'SRV', 'TXT' /// </param> /// <param name='parameters'> /// Parameters supplied to the CreateOrUpdate operation. /// </param> /// <param name='ifMatch'> /// The etag of the record set. Omit this value to always overwrite the current /// record set. Specify the last-seen etag value to prevent accidentally /// overwritting any concurrent changes. /// </param> /// <param name='ifNoneMatch'> /// Set to '*' to allow a new record set to be created, but to prevent updating /// an existing record set. Other values will be ignored. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <RecordSetInner> CreateOrUpdateAsync(this IRecordSetsOperations operations, string resourceGroupName, string zoneName, string relativeRecordSetName, RecordType recordType, RecordSetInner parameters, string ifMatch = default(string), string ifNoneMatch = default(string), CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, zoneName, relativeRecordSetName, recordType, parameters, ifMatch, ifNoneMatch, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
internal SoaRecordSetImpl(string name, PrivateDnsZoneImpl parent, RecordSetInner innerModel) : base(name, Enum.GetName(typeof(RecordType), Models.RecordType.SOA), parent, innerModel) { }
private async Task <ChallengeResult> DnsAuthorizationAsync(string authorizationUrl, string instanceId) { var acmeProtocolClient = await CreateAcmeClientAsync(); var authorizationDetails = await acmeProtocolClient.GetAuthorizationDetailsAsync(authorizationUrl); var challenge = authorizationDetails.Challenges.First(x => x.Type == "dns-01"); var challengeValidationDetails = AuthorizationDecoder.ResolveChallengeForDns01(authorizationDetails, challenge, acmeProtocolClient.Signer); var dnsManagementClient = await CreateDnsManagementClientAsync(); var zone = (await dnsManagementClient.Zones.ListAsync()).First(x => challengeValidationDetails.DnsRecordName.EndsWith(x.Name)); var resourceId = ParseResourceId(zone.Id); var acmeDnsRecordName = challengeValidationDetails.DnsRecordName.Replace("." + zone.Name, ""); RecordSetInner recordSet; try { recordSet = await dnsManagementClient.RecordSets.GetAsync(resourceId["resourceGroups"], zone.Name, acmeDnsRecordName, RecordType.TXT); } catch { recordSet = null; } if (recordSet != null) { if (recordSet.Metadata == null || !recordSet.Metadata.TryGetValue("InstanceId", out var dnsInstanceId) || dnsInstanceId != instanceId) { recordSet.Metadata = new Dictionary <string, string> { { "InstanceId", instanceId } }; recordSet.TxtRecords.Clear(); } recordSet.TTL = 60; recordSet.TxtRecords.Add(new TxtRecord(new[] { challengeValidationDetails.DnsRecordValue })); } else { recordSet = new RecordSetInner() { TTL = 60, Metadata = new Dictionary <string, string> { { "InstanceId", instanceId } }, TxtRecords = new[] { new TxtRecord(new[] { challengeValidationDetails.DnsRecordValue }) } }; } await dnsManagementClient.RecordSets.CreateOrUpdateAsync(resourceId["resourceGroups"], zone.Name, acmeDnsRecordName, RecordType.TXT, recordSet); return(new ChallengeResult() { Url = challenge.Url, DnsRecordName = challengeValidationDetails.DnsRecordName, DnsRecordValue = challengeValidationDetails.DnsRecordValue }); }