public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group) { if (!(item is DnsZone)) { return(0); } // DNS provider DNSServer dns = GetDNSServer(item.ServiceId); // zone records serialized XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord)); try { // get zone records DnsRecord[] records = dns.GetZoneRecords(item.Name); // serialize zone records foreach (DnsRecord record in records) { serializer.Serialize(writer, record); } } catch (Exception ex) { TaskManager.WriteError(ex, "Could not read zone records"); } return(0); }
public static DnsRecord[] GetDnsZoneRecords(int domainId) { // load domain info DomainInfo domain = GetDomain(domainId); // get DNS zone DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); if (zoneItem != null) { // fill records array DNSServer dns = new DNSServer(); ServiceProviderProxy.Init(dns, zoneItem.ServiceId); return dns.GetZoneRecords(domain.DomainName); } return new DnsRecord[] { }; }
public static void AddServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP, bool wildcardOnly) { int serviceId = PackageController.GetPackageServiceId(packageId, groupName); if (serviceId > 0) { List<DnsRecord> tmpZoneRecords = new List<DnsRecord>(); List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(serviceId); if (wildcardOnly) { List<GlobalDnsRecord> temp = new List<GlobalDnsRecord>(); foreach (GlobalDnsRecord d in dnsRecords) { if ((d.RecordName == "*") || (d.RecordName == "@")) temp.Add(d); } dnsRecords = temp; } DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); tmpZoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP)); try { DNSServer dns = new DNSServer(); ServiceProviderProxy.Init(dns, zone.ServiceId); DnsRecord[] domainRecords = dns.GetZoneRecords(domain.DomainName); List<DnsRecord> zoneRecords = new List<DnsRecord>(); foreach (DnsRecord t in tmpZoneRecords) { if (!RecordDoesExist(t, domainRecords)) zoneRecords.Add(t); } // add new resource records dns.AddZoneRecords(zone.Name, zoneRecords.ToArray()); } catch (Exception ex1) { TaskManager.WriteError(ex1, "Error updating DNS records"); } } }