private void RedirectRuleManager_RedirectRuleRemovedEvent(object sender, RedirectRuleManager.RedirectRuleRemovedEventArgs e) { try { var listener = Listeners.FirstOrDefault(x => x.PublicPortRequested == e.RedirectRule.PublicRequestPort); if (listener == null) throw new InvalidOperationException(string.Format("Trying to remove a rule but cannot find a listener for the port {0}.", e.RedirectRule.PublicRequestPort)); //Remove the rule from the listener, and remove the entire listener if there are no rules left listener.Remove(e.RedirectRule); if (listener.RuleCount == 0) { Listeners.Remove(listener); listener.Stop(); } } catch (Exception exception) { exception.Data.Add("PublicRequestHost", e.RedirectRule.PublicRequestHost); exception.Data.Add("PublicRequestPort", e.RedirectRule.PublicRequestPort); exception.Data.Add("InternalTargetAddress", e.RedirectRule.InternalTargetAddress); exception.Data.Add("InternalTargetPort", e.RedirectRule.InternalTargetPort); LogHelper.LogException(exception, false, LogHelper.ExceptionSeverity.ErrorException); } }
void RedirectRuleManager_RedirectRuleRemovedEvent(object sender, RedirectRuleManager.RedirectRuleRemovedEventArgs e) { try { if (_currentRedirectRule == e.RedirectRule) Stop(); } catch (Exception exception) { LogHelper.LogException(exception, false, LogHelper.ExceptionSeverity.ErrorException); } }
private void RedirectRuleManager_RedirectRuleAddedEvent(object sender, RedirectRuleManager.RedirectRuleAddedEventArgs e) { try { var listener = Listeners.FirstOrDefault(x => x.PublicPortRequested == e.RedirectRule.PublicRequestPort); if (listener == null) { listener = PortListener.Create(e.RedirectRule); listener.Start(); Listeners.Add(listener); } else { listener.Add(e.RedirectRule); } } catch (Exception exception) { exception.Data.Add("PublicRequestHost", e.RedirectRule.PublicRequestHost); exception.Data.Add("PublicRequestPort", e.RedirectRule.PublicRequestPort); exception.Data.Add("InternalTargetAddress", e.RedirectRule.InternalTargetAddress); exception.Data.Add("InternalTargetPort", e.RedirectRule.InternalTargetPort); LogHelper.LogException(exception, false, LogHelper.ExceptionSeverity.ErrorException); } }