Example #1
0
                /// <summary>
                /// Returns existing NetSiteState object for specified address, first checking group membership or null
                /// </summary>
                public NetSiteState FindNetSiteStateForAddress(string address, ref Group group)
                {
                  NetSiteState result;
                  if (group==null) group = FindGroupForAddress(address);
                  if (group!=null)
                    if (NetState.TryGetValue(group.Key, out result)) return result;

                  if (NetState.TryGetValue(address, out result)) return result;

                  return null;
                }
Example #2
0
 internal NetSiteState(Group group)
 {
   Group = group;
   m_LastTouch = DateTime.UtcNow;
 }
Example #3
0
    /// <summary>
    /// Cheks whether the rule is satisfied - all listed conditions are met. May lazily resolve addresses to groups
    /// </summary>
    public virtual bool Check(NetGate.State state, ITraffic traffic, ref Group fromGroup, ref Group toGroup)
    {
      if (
           !Check_FromAddrs(traffic.FromAddress) ||
           !Check_ToAddrs(traffic.ToAddress)  ||
           !Check_Methods(traffic.Method) || 
           !Check_Services(traffic.Service) ||
           !Check_URLFragments(traffic.RequestURL)
         ) return false;

      if (m_FromGroups!=null)
      {
        if (fromGroup==null)
          fromGroup = state.FindGroupForAddress(traffic.FromAddress);
        if (fromGroup==null) return false;
        if (!Check_FromGroups(fromGroup.Name)) return false;
      }

      if (m_ToGroups!=null)
      {
        if (toGroup==null)
          toGroup = state.FindGroupForAddress(traffic.ToAddress);
        if (toGroup==null) return false;
        if (!Check_ToGroups(toGroup.Name)) return false;
      }

      if (m_FromExpression!=null)
      {
        var netState = state.FindNetSiteStateForAddress(traffic.FromAddress, ref fromGroup); 
        if (!invokeEvaluator(netState, m_FromExpression)) return false;
      }

      if (m_ToExpression!=null)
      {
        var netState = state.FindNetSiteStateForAddress(traffic.ToAddress, ref toGroup); 
        if (!invokeEvaluator(netState, m_ToExpression)) return false;
      }
                                                                             
      
      return true;
    }