示例#1
0
        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);
        }
示例#2
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[] { };
        }
示例#3
0
        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");
                }
            }
        }