diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2025-01-12 02:04:35 +0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-01-12 02:04:35 +0600 |
commit | 15571305fafc7352777c31f9523f969ab0f2a9ec (patch) | |
tree | 2f90d67b948a378412f28b4c4a14830bf5c90630 /src/libserver | |
parent | 694d15a9af0baa186c6185c1c9da01f08f79dbbc (diff) | |
parent | 2d8ffca84f957e78905ff76c0f4b12bcd7799cbe (diff) | |
download | rspamd-15571305fafc7352777c31f9523f969ab0f2a9ec.tar.gz rspamd-15571305fafc7352777c31f9523f969ab0f2a9ec.zip |
Merge pull request #5290 from rspamd/vstakhov-fuzzy-noop
[Feature] Add 'noop' redis backend for scripts running
Diffstat (limited to 'src/libserver')
-rw-r--r-- | src/libserver/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/libserver/fuzzy_backend/fuzzy_backend.c | 21 | ||||
-rw-r--r-- | src/libserver/fuzzy_backend/fuzzy_backend_noop.c | 96 | ||||
-rw-r--r-- | src/libserver/fuzzy_backend/fuzzy_backend_noop.h | 66 | ||||
-rw-r--r-- | src/libserver/fuzzy_backend/fuzzy_backend_redis.h | 7 |
5 files changed, 184 insertions, 7 deletions
diff --git a/src/libserver/CMakeLists.txt b/src/libserver/CMakeLists.txt index dd17865de..d3415bdb2 100644 --- a/src/libserver/CMakeLists.txt +++ b/src/libserver/CMakeLists.txt @@ -12,6 +12,7 @@ SET(LIBRSPAMDSERVERSRC ${CMAKE_CURRENT_SOURCE_DIR}/fuzzy_backend/fuzzy_backend.c ${CMAKE_CURRENT_SOURCE_DIR}/fuzzy_backend/fuzzy_backend_sqlite.c ${CMAKE_CURRENT_SOURCE_DIR}/fuzzy_backend/fuzzy_backend_redis.c + ${CMAKE_CURRENT_SOURCE_DIR}/fuzzy_backend/fuzzy_backend_noop.c ${CMAKE_CURRENT_SOURCE_DIR}/milter.c ${CMAKE_CURRENT_SOURCE_DIR}/monitored.c ${CMAKE_CURRENT_SOURCE_DIR}/protocol.c diff --git a/src/libserver/fuzzy_backend/fuzzy_backend.c b/src/libserver/fuzzy_backend/fuzzy_backend.c index c18463618..bab2895cd 100644 --- a/src/libserver/fuzzy_backend/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend/fuzzy_backend.c @@ -1,11 +1,11 @@ -/*- - * Copyright 2016 Vsevolod Stakhov +/* + * Copyright 2025 Vsevolod Stakhov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -18,6 +18,7 @@ #include "fuzzy_backend.h" #include "fuzzy_backend_sqlite.h" #include "fuzzy_backend_redis.h" +#include "fuzzy_backend_noop.h" #include "cfg_file.h" #include "fuzzy_wire.h" @@ -26,6 +27,7 @@ enum rspamd_fuzzy_backend_type { RSPAMD_FUZZY_BACKEND_SQLITE = 0, RSPAMD_FUZZY_BACKEND_REDIS = 1, + RSPAMD_FUZZY_BACKEND_NOOP = 2, }; static void *rspamd_fuzzy_backend_init_sqlite(struct rspamd_fuzzy_backend *bk, @@ -96,6 +98,16 @@ static const struct rspamd_fuzzy_backend_subr fuzzy_subrs[] = { .id = rspamd_fuzzy_backend_id_redis, .periodic = rspamd_fuzzy_backend_expire_redis, .close = rspamd_fuzzy_backend_close_redis, + }, + [RSPAMD_FUZZY_BACKEND_NOOP] = { + .init = rspamd_fuzzy_backend_init_noop, + .check = rspamd_fuzzy_backend_check_noop, + .update = rspamd_fuzzy_backend_update_noop, + .count = rspamd_fuzzy_backend_count_noop, + .version = rspamd_fuzzy_backend_version_noop, + .id = rspamd_fuzzy_backend_id_noop, + .periodic = rspamd_fuzzy_backend_expire_noop, + .close = rspamd_fuzzy_backend_close_noop, }}; struct rspamd_fuzzy_backend { @@ -288,6 +300,9 @@ rspamd_fuzzy_backend_create(struct ev_loop *ev_base, else if (strcmp(ucl_object_tostring(elt), "redis") == 0) { type = RSPAMD_FUZZY_BACKEND_REDIS; } + else if (strcmp(ucl_object_tostring(elt), "noop") == 0) { + type = RSPAMD_FUZZY_BACKEND_NOOP; + } else { g_set_error(err, rspamd_fuzzy_backend_quark(), EINVAL, "invalid backend type: %s", diff --git a/src/libserver/fuzzy_backend/fuzzy_backend_noop.c b/src/libserver/fuzzy_backend/fuzzy_backend_noop.c new file mode 100644 index 000000000..451a1921b --- /dev/null +++ b/src/libserver/fuzzy_backend/fuzzy_backend_noop.c @@ -0,0 +1,96 @@ +/* + * Copyright 2025 Vsevolod Stakhov + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "fuzzy_backend_noop.h" + +/* + * No operations backend (useful for scripts only stuff) + */ + +void *rspamd_fuzzy_backend_init_noop(struct rspamd_fuzzy_backend *bk, + const ucl_object_t *obj, + struct rspamd_config *cfg, + GError **err) +{ + return NULL; +} + +void rspamd_fuzzy_backend_check_noop(struct rspamd_fuzzy_backend *bk, + const struct rspamd_fuzzy_cmd *cmd, + rspamd_fuzzy_check_cb cb, void *ud, + void *subr_ud) +{ + struct rspamd_fuzzy_reply rep; + + if (cb) { + memset(&rep, 0, sizeof(rep)); + cb(&rep, ud); + } + + return; +} + +void rspamd_fuzzy_backend_update_noop(struct rspamd_fuzzy_backend *bk, + GArray *updates, const char *src, + rspamd_fuzzy_update_cb cb, void *ud, + void *subr_ud) +{ + if (cb) { + cb(FALSE, 0, 0, 0, 0, ud); + } + + return; +} + +void rspamd_fuzzy_backend_count_noop(struct rspamd_fuzzy_backend *bk, + rspamd_fuzzy_count_cb cb, void *ud, + void *subr_ud) +{ + if (cb) { + cb(0, ud); + } + + return; +} + +void rspamd_fuzzy_backend_version_noop(struct rspamd_fuzzy_backend *bk, + const char *src, + rspamd_fuzzy_version_cb cb, void *ud, + void *subr_ud) +{ + if (cb) { + cb(0, ud); + } + + return; +} + +const char *rspamd_fuzzy_backend_id_noop(struct rspamd_fuzzy_backend *bk, + void *subr_ud) +{ + return NULL; +} + +void rspamd_fuzzy_backend_expire_noop(struct rspamd_fuzzy_backend *bk, + void *subr_ud) +{ +} + +void rspamd_fuzzy_backend_close_noop(struct rspamd_fuzzy_backend *bk, + void *subr_ud) +{ +} diff --git a/src/libserver/fuzzy_backend/fuzzy_backend_noop.h b/src/libserver/fuzzy_backend/fuzzy_backend_noop.h new file mode 100644 index 000000000..ac063dc39 --- /dev/null +++ b/src/libserver/fuzzy_backend/fuzzy_backend_noop.h @@ -0,0 +1,66 @@ +/* + * Copyright 2025 Vsevolod Stakhov + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef FUZZY_BACKEND_NOOP_H +#define FUZZY_BACKEND_NOOP_H + +#include "config.h" +#include "fuzzy_backend.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Subroutines for fuzzy_backend + */ +void *rspamd_fuzzy_backend_init_noop(struct rspamd_fuzzy_backend *bk, + const ucl_object_t *obj, + struct rspamd_config *cfg, + GError **err); + +void rspamd_fuzzy_backend_check_noop(struct rspamd_fuzzy_backend *bk, + const struct rspamd_fuzzy_cmd *cmd, + rspamd_fuzzy_check_cb cb, void *ud, + void *subr_ud); + +void rspamd_fuzzy_backend_update_noop(struct rspamd_fuzzy_backend *bk, + GArray *updates, const char *src, + rspamd_fuzzy_update_cb cb, void *ud, + void *subr_ud); + +void rspamd_fuzzy_backend_count_noop(struct rspamd_fuzzy_backend *bk, + rspamd_fuzzy_count_cb cb, void *ud, + void *subr_ud); + +void rspamd_fuzzy_backend_version_noop(struct rspamd_fuzzy_backend *bk, + const char *src, + rspamd_fuzzy_version_cb cb, void *ud, + void *subr_ud); + +const char *rspamd_fuzzy_backend_id_noop(struct rspamd_fuzzy_backend *bk, + void *subr_ud); + +void rspamd_fuzzy_backend_expire_noop(struct rspamd_fuzzy_backend *bk, + void *subr_ud); + +void rspamd_fuzzy_backend_close_noop(struct rspamd_fuzzy_backend *bk, + void *subr_ud); + +#ifdef __cplusplus +} +#endif + +#endif//FUZZY_BACKEND_NOOP_H diff --git a/src/libserver/fuzzy_backend/fuzzy_backend_redis.h b/src/libserver/fuzzy_backend/fuzzy_backend_redis.h index afeb1c573..0a536c2fa 100644 --- a/src/libserver/fuzzy_backend/fuzzy_backend_redis.h +++ b/src/libserver/fuzzy_backend/fuzzy_backend_redis.h @@ -1,11 +1,11 @@ -/*- - * Copyright 2016 Vsevolod Stakhov +/* + * Copyright 2025 Vsevolod Stakhov * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -15,7 +15,6 @@ */ #ifndef SRC_LIBSERVER_FUZZY_BACKEND_REDIS_H_ #define SRC_LIBSERVER_FUZZY_BACKEND_REDIS_H_ - #include "config.h" #include "fuzzy_backend.h" |