public Credentials(long id, string p_Email, DomainDns domainDns) { DomainDns = domainDns; Email = p_Email; PlainPassword = DefaultRNG.GetPassword(25, ASCII.Strings.SafeUrlOptions); var dom = new DynDnsDomain() { ID = id, Username = domainDns.Name, }; dom.CreatePasswordHash(PlainPassword); DynDnsDomain = dom; }
/// <summary>Updates the domain entry address.</summary> /// <param name="dom">The domain.</param> /// <param name="address">The address.</param> /// <returns></returns> /// <exception cref="System.Exception"> /// </exception> public string UpdateDomainEntryAddress(DynDnsDomain dom, IPAddress address) { List <string> errors = new List <string>(); int updates = 0; var entries = DomainEntries.GetStructs(Search.FieldLike(nameof(DomainDns.NameAndTTL), dom.Username + "\t%")); foreach (var entry in entries) { bool update = IsSameDomainType(entry, address) && (entry.DomainText != address.ToString()); if (update) { DomainDns domainEntry = entry; if (domainEntry.DomainText != address.ToString()) { if (domainEntry.Status != "ok") { throw new Exception(string.Format("Cannot update domain {0} status {1}", domainEntry.Name, domainEntry.Status)); } Domain domain = Domains[domainEntry.DomainID]; if (domain.Status != "ok") { throw new Exception(string.Format("Cannot update domain {0} status {1}", domain.Name, domain.Status)); } domainEntry.DomainText = address.ToString(); domainEntry.Status = "tochange"; try { DomainEntries.Update(domainEntry); } catch (Exception ex) { string msg = string.Format("Cannot update domain {0}", domainEntry); this.LogWarning(ex, msg); errors.Add(msg); continue; } domain.Status = "tochange"; Domains.Update(domain); this.LogInfo("Update {0}", domainEntry); } updates++; } } if (errors.Count == 0) { return($"{updates} datasets updated."); } return($"{updates} datasets updated - {errors.Count} Errors.\n" + errors.JoinNewLine()); }