You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

mime_expressions.h 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /**
  2. * @file expressions.h
  3. * Rspamd expressions API
  4. */
  5. #ifndef RSPAMD_EXPRESSIONS_H
  6. #define RSPAMD_EXPRESSIONS_H
  7. #include "config.h"
  8. #include "expression.h"
  9. #include "contrib/libucl/ucl.h"
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. struct rspamd_task;
  14. struct rspamd_config;
  15. struct rspamd_mime_expr_ud {
  16. struct rspamd_config *cfg;
  17. const ucl_object_t *conf_obj;
  18. };
  19. extern const struct rspamd_atom_subr mime_expr_subr;
  20. /**
  21. * Function's argument
  22. */
  23. enum rspamd_expression_type {
  24. EXPRESSION_ARGUMENT_NORMAL = 0,
  25. EXPRESSION_ARGUMENT_BOOL,
  26. EXPRESSION_ARGUMENT_REGEXP
  27. };
  28. struct expression_argument {
  29. enum rspamd_expression_type type; /**< type of argument (text or other function) */
  30. void *data; /**< pointer to its data */
  31. };
  32. typedef gboolean (*rspamd_internal_func_t)(struct rspamd_task *,
  33. GArray *args, void *user_data);
  34. /**
  35. * Register specified function to rspamd internal functions list
  36. * @param name name of function
  37. * @param func pointer to function
  38. */
  39. void register_expression_function(const char *name,
  40. rspamd_internal_func_t func,
  41. void *user_data);
  42. /**
  43. * Set global limit of regexp data size to be processed
  44. * @param limit new limit in bytes
  45. * @return old limit value
  46. */
  47. unsigned int rspamd_mime_expression_set_re_limit(unsigned int limit);
  48. #ifdef __cplusplus
  49. }
  50. #endif
  51. #endif