123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /*-
- * Copyright 2020 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 RSPAMD_LUA_URL_H
- #define RSPAMD_LUA_URL_H
-
- #include "lua_common.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- struct lua_tree_cb_data {
- lua_State *L;
- int i;
- int metatable_pos;
- unsigned int flags_mask;
- unsigned int flags_exclude_mask;
- unsigned int protocols_mask;
- enum {
- url_flags_mode_include_any,
- url_flags_mode_include_explicit,
- url_flags_mode_exclude_include,
- } flags_mode;
- gboolean sort;
- gsize max_urls;
- double skip_prob;
- uint64_t random_seed;
- };
-
- void lua_tree_url_callback(gpointer key, gpointer value, gpointer ud);
-
- /**
- * Fills a cbdata table based on the parameter at position pos
- * @param L
- * @param pos
- * @param cbd
- * @return
- */
- gboolean lua_url_cbdata_fill(lua_State *L, int pos,
- struct lua_tree_cb_data *cbd,
- unsigned int default_protocols,
- unsigned int default_flags,
- gsize max_urls);
-
- gboolean lua_url_cbdata_fill_exclude_include(lua_State *L, int pos,
- struct lua_tree_cb_data *cbd,
- unsigned int default_protocols,
- gsize max_urls);
-
- /**
- * Cleanup url cbdata
- * @param cbd
- */
- void lua_url_cbdata_dtor(struct lua_tree_cb_data *cbd);
-
- /**
- * Adjust probabilistic skip of the urls
- * @param timestamp
- * @param digest
- * @param cb
- * @param sz
- * @param max_urls
- * @return
- */
- gsize lua_url_adjust_skip_prob(float timestamp,
- unsigned char digest[16],
- struct lua_tree_cb_data *cb,
- gsize sz);
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
|