def should_filter(self): ''' returns (result: bool, reason: string or None) Result is True if an event should be filtered The reason for filtering is passed along as a string so that we can store it in metrics ''' for name in SECURITY_REPORT_INTERFACES: if name in self._data: interface = get_interface(name) if interface.to_python(self._data[name]).should_filter(self._project): return (True, FilterStatKeys.INVALID_CSP) if self._client_ip and not is_valid_ip(self.relay_config, self._client_ip): return (True, FilterStatKeys.IP_ADDRESS) release = self._data.get('release') if release and not is_valid_release(self.relay_config, release): return (True, FilterStatKeys.RELEASE_VERSION) error_message = get_path(self._data, 'logentry', 'formatted') \ or get_path(self._data, 'logentry', 'message') \ or '' if error_message and not is_valid_error_message(self.relay_config, error_message): return (True, FilterStatKeys.ERROR_MESSAGE) for exc in get_path(self._data, 'exception', 'values', filter=True, default=[]): message = u': '.join( filter(None, map(exc.get, ['type', 'value'])) ) if message and not is_valid_error_message(self.relay_config, message): return (True, FilterStatKeys.ERROR_MESSAGE) return should_filter_event(self.relay_config, self._data)
def should_filter(self): """ returns (result: bool, reason: string or None) Result is True if an event should be filtered The reason for filtering is passed along as a string so that we can store it in metrics """ for name in SECURITY_REPORT_INTERFACES: if name in self._data: interface = get_interface(name) if interface.to_python(self._data[name]).should_filter(self._project): return (True, FilterStatKeys.INVALID_CSP) if self._client_ip and not is_valid_ip(self.project_config, self._client_ip): return (True, FilterStatKeys.IP_ADDRESS) release = self._data.get("release") if release and not is_valid_release(self.project_config, release): return (True, FilterStatKeys.RELEASE_VERSION) error_message = ( get_path(self._data, "logentry", "formatted") or get_path(self._data, "logentry", "message") or "" ) if error_message and not is_valid_error_message(self.project_config, error_message): return (True, FilterStatKeys.ERROR_MESSAGE) for exc in get_path(self._data, "exception", "values", filter=True, default=[]): message = u": ".join(filter(None, map(exc.get, ["type", "value"]))) if message and not is_valid_error_message(self.project_config, message): return (True, FilterStatKeys.ERROR_MESSAGE) return should_filter_event(self.project_config, self._data)