示例#1
0
        public static int AddDnsZoneRecord(int domainId, string recordName, DnsRecordType recordType,
            string recordData, int mxPriority)
        {
            // check account
            int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
            if (accountCheck < 0) return accountCheck;

            // load domain info
            DomainInfo domain = GetDomain(domainId);

            // check package
            int packageCheck = SecurityContext.CheckPackage(domain.PackageId, DemandPackage.IsActive);
            if (packageCheck < 0) return packageCheck;

            // get DNS service
            DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId);

            if(zoneItem == null)
                return 0;

            // place log record
            TaskManager.StartTask("DNS_ZONE", "ADD_RECORD", domain.DomainName);
            TaskManager.ItemId = domain.ZoneItemId;

            try
            {

                // check if record already exists
                if (GetDnsZoneRecord(domainId, recordName, recordType, recordData) != null)
                    return 0;

                DNSServer dns = new DNSServer();
                ServiceProviderProxy.Init(dns, zoneItem.ServiceId);

                DnsRecord record = new DnsRecord();
                record.RecordType = recordType;
                record.RecordName = recordName;
                record.RecordData = recordData;
                record.MxPriority = mxPriority;
                dns.AddZoneRecord(zoneItem.Name, record);

                return 0;
            }
            catch (Exception ex)
            {
                throw TaskManager.WriteError(ex);
            }
            finally
            {
                TaskManager.CompleteTask();
            }
        }