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); }
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); }