private void OnHostName(IPAddress remoteAddress, string hostName, NameSources source, int processId = 0) { CloneableList <HostObserveJob> Jobs = ObserverJobs.GetValues(remoteAddress, false); if (Jobs == null) { return; } foreach (HostObserveJob curJob in Jobs.Clone()) { if (processId == 0 || curJob.processId == processId) { if (hostName != null) { curJob.SetHostName(hostName, source); } curJob.Await &= ~source; // clear the await } if (!curJob.IsValid()) { ObserverJobs.Remove(remoteAddress, curJob); } } }
public void SetHostName(string hostName, NameSources source) { object obj = target.Target; if (obj != null) { setter(obj, hostName, source); } }
public bool Update(WithHost other) { if (MiscFunc.Equals(RemoteHostName, other.RemoteHostName)) { return(false); } RemoteHostNameSource = other.RemoteHostNameSource; RemoteHostName = other.RemoteHostName; return(true); }
public bool Update(WithHost other) { if (RemoteHostName != null && other.RemoteHostName != null && RemoteHostName.Equals(other.RemoteHostName)) { return(false); } RemoteHostNameSource = other.RemoteHostNameSource; RemoteHostName = other.RemoteHostName; return(true); }
public void UpdateHostName(string name, NameSources source) { if (source > RemoteHostNameSource) // the bigger the better { if (RemoteHostNameSource == NameSources.CachedQuery && !RemoteHostName.Equals(name, StringComparison.OrdinalIgnoreCase)) { RemoteHostNameAlias = RemoteHostName; } string oldName = RemoteHostName; RemoteHostName = name; RemoteHostNameSource = source; if (oldName == null || !oldName.Equals(name)) { HostNameChanged?.Invoke(this, new ChangeEventArgs() { oldName = oldName, HostName = name }); } } }
public void GetHostName(int processId, IPAddress remoteAddress, object target, Action <object, string, NameSources> setter) { // sanity check if (remoteAddress.Equals(IPAddress.Any) || remoteAddress.Equals(IPAddress.IPv6Any)) { return; } if (remoteAddress.Equals(IPAddress.Loopback) || remoteAddress.Equals(IPAddress.IPv6Loopback)) { setter(target, "localhost", NameSources.ReverseDns); return; } if (NetFunc.IsMultiCast(remoteAddress)) { setter(target, "multicast.arpa", NameSources.ReverseDns); return; } NameSources Await = NameSources.None; if (queryWatcher.IsActive()) { string capturedName = FindMostRecentHost(queryWatcher.FindHostNames(processId, remoteAddress)); if (capturedName == null) { Await |= NameSources.CapturedQuery; } else { setter(target, capturedName, NameSources.CapturedQuery); } } if (Await != NameSources.None) { string cachedName = FindMostRecentHost(dnsCacheMonitor.FindHostNames(remoteAddress)); if (cachedName == null) { Await |= NameSources.CachedQuery; } else { setter(target, cachedName, NameSources.CachedQuery); } } int ReverseResolve = App.GetConfigInt("DnsInspector", "UseReverseDNS", 0); if (ReverseResolve == 2 || (ReverseResolve == 1 && (Await & NameSources.CachedQuery) != 0)) { string resolvedName = FindMostRecentHost(hostNameResolver.ResolveHostNames(remoteAddress)); if (resolvedName == null) { Await |= NameSources.ReverseDns; } else { setter(target, resolvedName, NameSources.ReverseDns); } } if (Await != NameSources.None) { HostObserveJob job = new HostObserveJob() { target = new WeakReference(target), setter = setter, processId = processId, remoteAddress = remoteAddress, Await = Await, timeOut = DateTime.Now.AddSeconds(30) }; ObserverJobs.Add(remoteAddress, job); } }