def should_filter(self, project, data, ip_address=None): """ 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 """ if ip_address and not is_valid_ip(project, ip_address): return (True, FilterStatKeys.IP_ADDRESS) release = data.get('release') if release and not is_valid_release(project, release): return (True, FilterStatKeys.RELEASE_VERSION) message_interface = data.get('sentry.interfaces.Message', {}) error_message = message_interface.get( 'formatted', '') or message_interface.get('message', '') if error_message and not is_valid_error_message( project, error_message): return (True, FilterStatKeys.ERROR_MESSAGE) for filter_cls in filters.all(): filter_obj = filter_cls(project) if filter_obj.is_enabled() and filter_obj.test(data): return (True, six.text_type(filter_obj.id)) return (False, None)
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)
def should_filter(self, project, data, ip_address=None): """ 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 """ if ip_address and not is_valid_ip(project, ip_address): return (True, FilterStatKeys.IP_ADDRESS) release = data.get('release') if release and not is_valid_release(project, release): return (True, FilterStatKeys.RELEASE_VERSION) message_interface = data.get('sentry.interfaces.Message', {}) error_message = message_interface.get('formatted', '' ) or message_interface.get('message', '') if error_message and not is_valid_error_message(project, error_message): return (True, FilterStatKeys.ERROR_MESSAGE) for filter_cls in filters.all(): filter_obj = filter_cls(project) if filter_obj.is_enabled() and filter_obj.test(data): return (True, six.text_type(filter_obj.id)) return (False, None)
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, self._client_ip): return (True, FilterStatKeys.IP_ADDRESS) release = self._data.get('release') if release and not is_valid_release(self._project, 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, 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, message): return (True, FilterStatKeys.ERROR_MESSAGE) for filter_cls in filters.all(): filter_obj = filter_cls(self._project) if filter_obj.is_enabled() and filter_obj.test(self._data): return (True, six.text_type(filter_obj.id)) return (False, None)
def is_valid_release(self, value, inputs): self.project.update_option('sentry:{}'.format(FilterTypes.RELEASES), inputs) return is_valid_release(self.project, value)
def is_valid_release(self, value, inputs): self.project.update_option(u'sentry:{}'.format(FilterTypes.RELEASES), inputs) project_config = get_project_config(self.project.id) return is_valid_release(project_config, value)