internal static DomainValue ResolveSubdomain(string[] domainparts, DomainValue value) { if (domainparts.Length > 2) // sub-domain { for (int i = domainparts.Length - 3; i >= 0; i--) { if (string.IsNullOrWhiteSpace(domainparts[i])) { value = null; break; } var sub = value.GetMap(domainparts[i]); if (sub == null) { sub = value.GetMap("*"); } if (sub == null) { break; } value = sub; } } return(value); }
public void ReadMaps() { var domain = new DomainValue(Example_2_5_generic); var www = domain.GetMap("www"); var wwwAlias = www.Alias; Assert.AreEqual("", wwwAlias); var ftp = domain.GetMap("ftp"); var ftpIp = ftp.Ips.Select(m => m.ToString()); Assert.AreEqual("10.2.3.4", ftpIp.First()); Assert.AreEqual("10.4.3.2", ftpIp.Skip(1).First()); var mail = domain.GetMap("mail"); var mailNs = mail.Ns; Assert.AreEqual("ns1.host.net", mailNs.First()); Assert.AreEqual("ns12.host.net", mailNs.Skip(1).First()); var none = domain.GetMap("none"); Assert.IsNull(none); }
public void ReadTLSRecord() { var domain = new DomainValue(Example_2_5_generic); var p443 = domain.GetTlsForPort("tcp", "443"); var p443first = p443.First; Assert.AreEqual(1, (int)p443first[0]); Assert.AreEqual("660008F91C07DCF9058CDD5AD2BAF6CC9EAE0F912B8B54744CB7643D7621B787", (string)p443first[1]); Assert.AreEqual(1, (int)p443first[2]); var p25 = domain.GetTlsForPort("tcp", "25"); var p25first = p25.First; Assert.AreEqual(1, (int)p25first[0]); Assert.AreEqual("660008F91C07DCF9058CDD5AD2BAF6CC9EAE0F912B8B54744CB7643D7621B787", (string)p25first[1]); Assert.AreEqual(1, (int)p25first[2]); var p123 = domain.GetTlsForPort("tcp", "123"); Assert.IsNull(p123); var p321 = domain.GetTlsForPort("bull", "321"); Assert.IsNull(p321); }
public void ReadNameServerList() { var domain = new DomainValue(Example_nameservers); var nameservers = domain.Ns; Assert.AreEqual("192.168.1.1", nameservers.First()); Assert.AreEqual("10.2.3.4", nameservers.Last()); }
private void InitTranslation() { Language = new DomainValue { Id = UserContext.Current.User != null ? UserContext.Current.User.LanguageId : Dom.Language.System }; Translations = _translationRepository.GetTranslations( Language.Id ); }
public void SimpleArrayNamedImport() { string json = @"{""import"": [""s/derrick_www"",""www""]}"; DomainValue value = new DomainValue(json); var imports = value.Import; Assert.AreEqual("s/derrick_www", imports["www"]); }
public void ReadMapsOnly1() { var domain = new DomainValue(Example_mapsonly1); domain.ImportDefaultMap(); IPAddress expected = new IPAddress(new byte[] { 1, 1, 1, 1 }); Assert.AreEqual(expected, domain.Ips.Single()); }
public void ReadIpLists() { var domain = new DomainValue(Example_2_5_generic); IPAddress ip4expected = IPAddress.Parse("192.168.1.1"); IPAddress ip6expected = IPAddress.Parse("2001:4860:0:1001::68"); Assert.AreEqual(ip4expected, domain.Ips.First()); Assert.AreEqual(ip6expected, domain.Ip6s.First()); }
public void ReadDomain_V2_5() { var domain = new DomainValue(Example_2_5_generic); Assert.AreEqual("192.168.1.1", domain.Ips.Select(m => m.ToString()).First()); Assert.AreEqual("2001:4860:0:1001::68", domain.Ip6s.Select(m => m.ToString()).First()); Assert.AreEqual("eqt5g4fuenphqinx.onion", domain.Tor); Assert.AreEqual("*****@*****.**", domain.Email); Assert.AreEqual("Example & Sons Co.", domain.Info.First()); }
private DomainValue GetNameValueForDomainname(string[] domainparts) { DomainValue value; var root = domainparts[domainparts.Length - 2]; var info = Client.LookupDomainValue(root); if (info == null) { value = null; } else { value = info.GetValue <DomainValue>(); if (value.Import != null && value.Import.Count() > 0) { var key = domainparts.Length > 2 ? domainparts[domainparts.Length - 3] : ""; foreach (var domain in value.Import.Keys) { if (domain == key) { var name = value.Import[domain]; var info2 = Client.LookupNameValue(name); if (info2 != null) { DomainValue import = info2.GetValue <DomainValue>(); if (import != null) { value.ImportValues(import, overwrite: false); var importMap = import.Maps[domain]; if (importMap != null) { var valueMap = value.GetMap(domain); if (valueMap == null) { value.Maps[domain] = importMap; } else { valueMap.ImportValues(importMap, overwrite: false); } } } } } } } value = ResolveSubdomain(domainparts, value); } return(value); }
public void SimpleArrayDefaultImport() { string json = @"{""import"": [""s/derrick"",""""]}"; DomainValue value = new DomainValue(json); var imports = value.Import; Assert.AreEqual(1, imports.Count()); Assert.AreEqual("s/derrick", imports[""]); }
public void ArrayImportWithDefault() { string json = @"{""import"": [[""s/derrick""],[""s/derrick_www"",""www""]]}"; DomainValue value = new DomainValue(json); var imports = value.Import; Assert.AreEqual(2, imports.Count()); Assert.AreEqual("s/derrick", imports[""]); Assert.AreEqual("s/derrick_www", imports["www"]); }
private void UpdateCandidates(List <Variable> currentStateVariables, DomainValue value) { var sensorsAlreadyTrackingTargetCount = currentStateVariables.Count(v => v.IsAssigned && v.AssignedValue == value.Value); var needed = NeededSensorsForEachTargetNo - sensorsAlreadyTrackingTargetCount; if (needed > 0) { return; } Variables.ForEach(v => v.RemoveFromCandidateList(value)); }
public void ReadServiceRecord() { var domain = new DomainValue(Example_2_5_generic); ServiceRecord servicerecord = domain.Service.First(); Assert.AreEqual("smtp", servicerecord.SrvName); Assert.AreEqual("tcp", servicerecord.Protocol); Assert.AreEqual(10, servicerecord.Priority); Assert.AreEqual(0, servicerecord.Weight); Assert.AreEqual(25, servicerecord.Port); Assert.AreEqual("mail", servicerecord.Target); }
public bool UpdateDomainValue(DomainValue pDomainValue) { try { _DbContext.DomainValue.Attach(pDomainValue); _DbContext.Entry(pDomainValue).State = System.Data.Entity.EntityState.Modified; _DbContext.SaveChanges(); return(true); } catch (Exception ex) { return(false); } }
public void ReadMapsOnly2() { var domain = new DomainValue(Example_mapsonly2); domain.ImportDefaultMap(); IPAddress expectedIp1 = new IPAddress(new byte[] { 10, 2, 3, 4 }); IPAddress expectedIp2 = new IPAddress(new byte[] { 10, 4, 3, 2 }); int expectedNsCount = 2; Assert.AreEqual(expectedIp1, domain.Ips.First()); Assert.AreEqual(expectedIp2, domain.Ips.Last()); Assert.AreEqual(expectedNsCount, domain.Ns.Count()); }
private DomainValue GetDomainValue(string name) { DomainValue value = null; string[] domainparts = name.Split('.'); if (domainparts.Length < 2 || domainparts[domainparts.Length - 1] != "bit") { value = null; } else { value = GetNameValueForDomainname(domainparts); } return(value); }
public bool DeleteDomainValue(int pDomainValueID) { try { DomainValue oDomainValue = new DomainValue { ID = pDomainValueID }; _DbContext.DomainValue.Attach(oDomainValue); _DbContext.DomainValue.Remove(oDomainValue); _DbContext.SaveChanges(); return(true); } catch { return(false); } }
public int AddValueToDomain(string pDomainValue, int?pDomainId) { int oID = -1; try { Domain oDomain = _DbContext.Domain.Where(a => a.ID == pDomainId).First(); if (oDomain != null) { DomainValue oDomainValue = _DbContext.DomainValue.Create(); oDomainValue.Domain_ID = pDomainId; oDomainValue.Value = pDomainValue; _DbContext.DomainValue.Add(oDomainValue); oID = oDomainValue.ID; } _DbContext.SaveChanges(); } catch { oID = -1; } return(oID); }
public JsonResult DeleteDomainValue([DataSourceRequest] DataSourceRequest request, DomainValue pDomainValue) { if (pDomainValue != null) { if (!_DomainBL.DeleteDomainValue(pDomainValue.ID)) { ModelState.AddModelError("Value", "خطایی در حذف مقدار دامنه رخ داده است.مجددا تلاش کنید"); } } return(Json(new[] { pDomainValue }.ToDataSourceResult(request, ModelState))); }
public JsonResult UpdateDomainValue([DataSourceRequest] DataSourceRequest request, DomainValue pDomainValue) { if (pDomainValue != null && ModelState.IsValid) { var domains = _DomainBL.GetDomainValues(pDomainValue.Domain_ID ?? -1); if (!domains.Any(a => a.Value == pDomainValue.Value && a.ID != pDomainValue.ID)) { var domain = domains.First(a => a.ID == pDomainValue.ID); domain.Value = pDomainValue.Value; if (!_DomainBL.UpdateDomainValue(domain)) { ModelState.AddModelError("Value", "خطایی در ذخیره مقدار دامنه رخ داده است.مجددا تلاش کنید"); } } else { ModelState.AddModelError("Value", "مقدار دامنه تکراری وارد شده است"); } } return(Json(new[] { pDomainValue }.ToDataSourceResult(request, ModelState))); }
public JsonResult CreateDomainValue([DataSourceRequest] DataSourceRequest request, DomainValue pDomainValue) { if (pDomainValue != null && ModelState.IsValid) { List <DomainValue> oList = _DomainBL.GetDomainValues(pDomainValue.Domain_ID ?? -1).Where(a => a.Value == pDomainValue.Value).ToList(); if (oList.Count == 0) { int id = _DomainBL.AddValueToDomain(pDomainValue.Value, pDomainValue.Domain_ID); if (id == -1) { ModelState.AddModelError("FIELD_Name", "خطایی در ذخیره مقدار دامنه رخ داده است.مجددا تلاش کنید"); } } else { ModelState.AddModelError("FIELD_Name", "مقدار وارد شده تکراری می باشد"); } } return(Json(new[] { pDomainValue }.ToDataSourceResult(request, ModelState))); }
public void ReadJson() { var domain = DomainValue.JsonDeserialize(Example_2_5_generic); Assert.IsNotNull(domain); }
private DnsMessage GetDotBitAnswerForName(DnsQuestion question) { string fqdn = question.Name; try { recursionLevel++; if (recursionLevel > maxRecursion) { ConsoleUtils.WriteWarning("Max recursion reached"); return(null); } DomainValue value = GetDomainValue(fqdn); if (value == null) { return(null); } if (!string.IsNullOrWhiteSpace(value.@Delegate)) { ConsoleUtils.WriteWarning("delegate setting not implemented: {0}", value.@Delegate); } value.ImportDefaultMap(); if (!string.IsNullOrWhiteSpace(value.Translate)) { string newLookup; if (value.Translate.EndsWith(".")) { newLookup = value.Translate.Substring(0, value.Translate.Length - 1); } else { newLookup = value.Translate + '.' + fqdn; } DnsQuestion newQuestion = new DnsQuestion(newLookup, question.RecordType, question.RecordClass); return(InternalGetAnswer(newQuestion)); } DnsMessage answer = null; if (value.Alias != null) { string newLookup; if (value.Alias == "") { var sa = fqdn.Split('.'); newLookup = string.Format("{0}.{1}", sa[sa.Length - 2], sa[sa.Length - 1]); } else if (value.Alias.EndsWith(".")) // absolute { newLookup = value.Alias.Substring(0, value.Alias.Length - 1); } else // sub domain { var sa = fqdn.Split('.'); sa[0] = value.Alias; newLookup = string.Join(".", sa); } DnsQuestion newQuestion = new DnsQuestion(newLookup, question.RecordType, question.RecordClass); DnsMessage toReturn = new DnsMessage(); toReturn.AnswerRecords.Add(new CNameRecord(fqdn, defaultTTL, newLookup)); var additional = InternalGetAnswer(newQuestion); toReturn.AdditionalRecords = additional.AnswerRecords; return(toReturn); } answer = new DnsMessage() { Questions = new List <DnsQuestion>() { question } }; bool any = question.RecordType == RecordType.Any; var nsnames = value.Ns; if (nsnames != null && nsnames.Count() > 0) // NS overrides all { List <IPAddress> nameservers = GetNameserverAddresses(nsnames); if (nameservers.Count() > 0) { if (!string.IsNullOrWhiteSpace(value.Translate)) { fqdn = value.Translate; } answer = NameServer.DnsResolve(nameservers, fqdn, question.RecordType, question.RecordClass); } } else { if (any || question.RecordType == RecordType.A) { var addresses = value.Ips; if (addresses.Count() > 0) { foreach (var address in addresses) { answer.AnswerRecords.Add(new ARecord(fqdn, defaultTTL, address)); } } } if (any || question.RecordType == RecordType.Aaaa) { var addresses = value.Ip6s; if (addresses.Count() > 0) { foreach (var address in addresses) { answer.AnswerRecords.Add(new AaaaRecord(fqdn, defaultTTL, address)); } } } } return(answer); } finally { recursionLevel--; } }
/// <summary> /// Does the domain value intersect with this range. /// </summary> /// <param name="theDomainValue">Domain value.</param> /// <returns>True if intersects. False if it does not intersect.</returns> public abstract bool IntersectsWith(DomainValue theDomainValue);