Esempio n. 1
0
        private bool UpdateDdnsInfo(IDdnsService ddns, string ip, DomainsItem domain)
        {
            if (ddns == null)
            {
                throw new Exception("Ddns service provider is null.");
            }
            //检查域名解析是否存在
            List <DomainRecord> records          = ddns.DescribeSubDomainRecords(domain.Domain);
            DomianInfo          configDomainInfo = DomianInfo(domain.Domain);
            DomainRecord        domainInfo       = null;

            foreach (var item in records)
            {
                if ($"{item.RR}.{item.DomainName}".ToLower() == domain.Domain.ToLower())
                {
                    domainInfo = item;
                    break;
                }
            }
            if (records.Count > 1)
            {
                ddns.DeleteSubDomainRecords(new DeleteDomainRecordParam()
                {
                    RR         = domainInfo.RR,
                    DomainName = domainInfo.DomainName
                });
                domainInfo = null;
            }
            if (domainInfo == null)
            {
                ddns.AddDomainRecord(new AddDomainRecordParam()
                {
                    DomainName = configDomainInfo.DomainName,
                    RR         = configDomainInfo.RR,
                    Type       = DdnsSDK.Model.Enum.DomainRecordType.A,
                    Value      = ip,
                    TTL        = domain.TTL
                });
            }
            else
            {
                if (domainInfo.RR == configDomainInfo.RR &&
                    domainInfo.TTL == domain.TTL &&
                    domainInfo.Value == ip)
                {
                    return(false);
                }
                ddns.UpdateDomainRecord(new UpdateDomainRecordParam()
                {
                    DomainName = configDomainInfo.DomainName,
                    RecordId   = domainInfo.RecordId,
                    RR         = configDomainInfo.RR,
                    Type       = DdnsSDK.Model.Enum.DomainRecordType.A,
                    Value      = ip,
                    TTL        = domain.TTL
                });
            }
            return(true);
        }
Esempio n. 2
0
        private DomianInfo DomianInfo(string domain)
        {
            DomianInfo info = new DomianInfo();

            string[] olds = domain.Split('.');
            if (olds.Length < 3)
            {
                throw new Exception("域名格式不正确,正确的域名格式参考:xxx.xxx.com");
            }
            info.RR         = domain.Substring(0, domain.IndexOf('.'));
            info.DomainName = domain.Substring(domain.IndexOf('.') + 1);
            return(info);
        }