Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. struct rspamd_task;
  11. struct rspamd_config;
  12. struct rspamd_mime_expr_ud {
  13. struct rspamd_config *cfg;
  14. const ucl_object_t *conf_obj;
  15. };
  16. extern const struct rspamd_atom_subr mime_expr_subr;
  17. /**
  18. * Function's argument
  19. */
  20. enum rspamd_expression_type {
  21. EXPRESSION_ARGUMENT_NORMAL = 0,
  22. EXPRESSION_ARGUMENT_BOOL,
  23. EXPRESSION_ARGUMENT_REGEXP
  24. };
  25. struct expression_argument {
  26. enum rspamd_expression_type type; /**< type of argument (text or other function) */
  27. void *data; /**< pointer to its data */
  28. };
  29. typedef gboolean (*rspamd_internal_func_t)(struct rspamd_task *,
  30. GArray *args, void *user_data);
  31. /**
  32. * Register specified function to rspamd internal functions list
  33. * @param name name of function
  34. * @param func pointer to function
  35. */
  36. void register_expression_function (const gchar *name,
  37. rspamd_internal_func_t func,
  38. void *user_data);
  39. /**
  40. * Set global limit of regexp data size to be processed
  41. * @param limit new limit in bytes
  42. * @return old limit value
  43. */
  44. guint rspamd_mime_expression_set_re_limit (guint limit);
  45. #endif