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.

пре 12 година
пре 11 година
пре 10 година
пре 9 година
пре 9 година
пре 9 година
пре 12 година
пре 12 година
пре 11 година
пре 11 година
пре 15 година
пре 15 година
пре 15 година
пре 14 година
пре 10 година
пре 10 година
пре 9 година
пре 9 година
пре 9 година
пре 10 година
пре 10 година
пре 11 година
пре 11 година
пре 14 година
пре 14 година
пре 14 година
пре 12 година
пре 11 година
пре 9 година
пре 10 година
пре 10 година
пре 10 година
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. #ifndef RSPAMD_CONFIG_H_IN
  2. #define RSPAMD_CONFIG_H_IN
  3. #cmakedefine HAVE_SYS_TYPES_H 1
  4. #cmakedefine HAVE_SYS_TIME_H 1
  5. #cmakedefine HAVE_SYS_UIO_H 1
  6. #cmakedefine HAVE_FCNTL_H 1
  7. #cmakedefine HAVE_MATH_H 1
  8. #cmakedefine HAVE_STDIO_H 1
  9. #cmakedefine HAVE_STDLIB_H 1
  10. #cmakedefine HAVE_STRING_H 1
  11. #cmakedefine HAVE_STRINGS_H 1
  12. #cmakedefine HAVE_TIME_H 1
  13. #cmakedefine HAVE_UNISTD_H 1
  14. #cmakedefine HAVE_SYSEXITS_H 1
  15. #cmakedefine HAVE_STDINT_H 1
  16. #cmakedefine HAVE_INTTYPES_H 1
  17. #cmakedefine HAVE_STDBOOL_H 1
  18. #cmakedefine HAVE_ARPA_INET_H 1
  19. #cmakedefine HAVE_NETINET_IN_H 1
  20. #cmakedefine HAVE_NETDB_H 1
  21. #cmakedefine HAVE_POLL_H 1
  22. #cmakedefine HAVE_SYSLOG_H 1
  23. #cmakedefine HAVE_SIGINFO_H 1
  24. #cmakedefine HAVE_LIBUTIL_H 1
  25. #cmakedefine HAVE_LIBGEN_H 1
  26. #cmakedefine HAVE_SEARCH_H 1
  27. #cmakedefine HAVE_LOCALE_H 1
  28. #cmakedefine HAVE_GRP_H 1
  29. #cmakedefine HAVE_PWD_H 1
  30. #cmakedefine HAVE_GLOB_H 1
  31. #cmakedefine HAVE_ENDIAN_H 1
  32. #cmakedefine HAVE_SYS_ENDIAN_H 1
  33. #cmakedefine HAVE_MACHINE_ENDIAN_H 1
  34. #cmakedefine HAVE_SYS_CDEFS_H 1
  35. #cmakedefine LIBEVENT_EVHTTP 1
  36. #ifdef HAVE_ENDIAN_H
  37. #include <endian.h>
  38. #else
  39. #ifdef HAVE_SYS_ENDIAN_H
  40. #include <sys/endian.h>
  41. #else
  42. #ifdef HAVE_MACHINE_ENDIAN_H
  43. #include <machine/endian.h>
  44. #else
  45. #define LITTLE_ENDIAN 1234
  46. #define BIG_ENDIAN 4321
  47. #if defined(i386) || defined(__i386) || defined(__amd64) || \
  48. defined(BIT_ZERO_ON_RIGHT) || defined(__x86__)
  49. #define BYTE_ORDER LITTLE_ENDIAN
  50. #endif
  51. #if defined(__sparc) || defined(__sparc__) || defined(__powerpc__)
  52. #define BYTE_ORDER BIG_ENDIAN
  53. #endif
  54. #endif /* HAVE_MACHINE_ENDIAN_H */
  55. #endif /* HAVE_SYS_ENDIAN_H */
  56. #endif /* HAVE_ENDIAN_H */
  57. #if !defined(BYTE_ORDER)
  58. # error "Undefined or unknown BYTE_ORDER"
  59. #endif
  60. #ifdef _MSC_VER
  61. # define RSPAMD_PACKED(name) \
  62. __pragma(pack(push, 1)) struct name __pragma(pack(pop))
  63. #elif defined(__GNUC__)
  64. # define RSPAMD_PACKED(name) struct __attribute__((packed)) name
  65. #else
  66. # define RSPAMD_PACKED(name) struct name
  67. #endif
  68. #cmakedefine HAVE_SYS_QUEUE_H 1
  69. #cmakedefine HAVE_SYS_MMAN_H 1
  70. #cmakedefine HAVE_SYS_SOCKET_H 1
  71. #cmakedefine HAVE_SYS_UN_H 1
  72. #cmakedefine HAVE_SYS_STAT_H 1
  73. #cmakedefine HAVE_SYS_WAIT_H 1
  74. #cmakedefine HAVE_SYS_PARAM_H 1
  75. #cmakedefine HAVE_SYS_FILE_H 1
  76. #cmakedefine HAVE_SYS_RESOURCE_H 1
  77. #cmakedefine HAVE_SYS_TIMEB_H 1
  78. #cmakedefine HAVE_SYS_UTSNAME_H 1
  79. #cmakedefine HAVE_PIDFILE 1
  80. #cmakedefine HAVE_PIDFILE_FILENO 1
  81. #cmakedefine HAVE_SETPROCTITLE 1
  82. #cmakedefine HAVE_GETPAGESIZE 1
  83. #cmakedefine HAVE_NANOSLEEP 1
  84. #cmakedefine HAVE_PATH_MAX 1
  85. #cmakedefine HAVE_MAXPATHLEN 1
  86. #cmakedefine HAVE_MMAP_SHARED 1
  87. #cmakedefine HAVE_MMAP_ANON 1
  88. #cmakedefine HAVE_MMAP_NOCORE 1
  89. #cmakedefine HAVE_O_DIRECT 1
  90. #cmakedefine HAVE_FADVISE 1
  91. #cmakedefine HAVE_FALLOCATE 1
  92. #cmakedefine HAVE_POSIX_FALLOCATE 1
  93. #cmakedefine HAVE_FDATASYNC 1
  94. #cmakedefine HAVE_COMPATIBLE_QUEUE_H 1
  95. #cmakedefine HAVE_SC_NPROCESSORS_ONLN 1
  96. #cmakedefine HAVE_VFORK 1
  97. #cmakedefine HAVE_WAIT4 1
  98. #cmakedefine HAVE_WAITPID 1
  99. #cmakedefine HAVE_FLOCK 1
  100. #cmakedefine HAVE_TANHL 1
  101. #cmakedefine HAVE_TANH 1
  102. #cmakedefine HAVE_EXPL 1
  103. #cmakedefine HAVE_EXP2L 1
  104. #cmakedefine HAVE_SA_SIGINFO 1
  105. #cmakedefine DEBUG_MODE 1
  106. #cmakedefine GMIME24 1
  107. #cmakedefine HAVE_CLOCK_VIRTUAL 1
  108. #cmakedefine HAVE_CLOCK_PROCESS_CPUTIME_ID 1
  109. #cmakedefine HAVE_SETITIMER 1
  110. #cmakedefine HAVE_INET_PTON 1
  111. #define WITHOUT_PERL 1
  112. #cmakedefine WITH_LUA 1
  113. #cmakedefine WITH_PROFILER 1
  114. #cmakedefine WITH_JUDY 1
  115. #cmakedefine WITH_DB 1
  116. #cmakedefine WITH_SQLITE 1
  117. #cmakedefine WITH_GPERF_TOOLS 1
  118. #cmakedefine WITH_SYSTEM_HIREDIS 1
  119. #cmakedefine HAVE_ASM_PAUSE 1
  120. #cmakedefine BUILD_STATIC 1
  121. #cmakedefine HAVE_SENDFILE 1
  122. #cmakedefine HAVE_SYS_SENDFILE_H 1
  123. #cmakedefine HAVE_SYS_EVENTFD_H 1
  124. #cmakedefine HAVE_AIO_H 1
  125. #cmakedefine HAVE_LIBAIO_H 1
  126. #cmakedefine HAVE_MKSTEMP 1
  127. #cmakedefine HAVE_CLOCK_GETTIME 1
  128. #cmakedefine HAVE_OPENSSL 1
  129. #cmakedefine GLIB_COMPAT 1
  130. #cmakedefine GLIB_RE_COMPAT 1
  131. #cmakedefine GLIB_UNISCRIPT_COMPAT 1
  132. #cmakedefine GLIB_HASH_COMPAT 1
  133. #cmakedefine PARAM_H_HAS_BITSET 1
  134. #cmakedefine HAVE_FETCH_H 1
  135. #cmakedefine CURL_FOUND 1
  136. #cmakedefine HAVE_READPASSPHRASE_H 1
  137. #cmakedefine HAVE_TERMIOS_H 1
  138. #cmakedefine HAVE_IPV6_V6ONLY 1
  139. #cmakedefine HAVE_CTYPE_H 1
  140. #cmakedefine HAVE_SCHED_YEILD 1
  141. #cmakedefine HAVE_PTHREAD_PROCESS_SHARED 1
  142. #cmakedefine HAVE_MEMSET_S 1
  143. #cmakedefine HAVE_EXPLICIT_BZERO 1
  144. #cmakedefine HAVE_WEAK_SYMBOLS 1
  145. #cmakedefine HAVE_PCRE_JIT 1
  146. /* Configure allocator */
  147. #define uthash_malloc(sz) g_slice_alloc(sz)
  148. #define uthash_free(ptr,sz) g_slice_free1(sz, ptr)
  149. #define RSPAMD_CONFDIR "${CONFDIR}"
  150. #define RSPAMD_RUNDIR "${RUNDIR}"
  151. #define RSPAMD_LOGDIR "${LOGDIR}"
  152. #define RSPAMD_DBDIR "${DBDIR}"
  153. #define RSPAMD_EXAMPLESDIR "${EXAMPLESDIR}"
  154. #define RSPAMD_PLUGINSDIR "${PLUGINSDIR}"
  155. #define RSPAMD_WWWDIR "${WWWDIR}"
  156. #define RSPAMD_PREFIX "${CMAKE_INSTALL_PREFIX}"
  157. #define RVERSION "${RSPAMD_VERSION}"
  158. #define RID "${RSPAMD_ID}"
  159. #define RSPAMD_MASTER_SITE_URL "${RSPAMD_MASTER_SITE_URL}"
  160. #define MODULES_NUM ${RSPAMD_MODULES_NUM}
  161. #define BUILDROOT "${CMAKE_BINARY_DIR}"
  162. /* sys/types */
  163. #ifdef HAVE_SYS_TYPES_H
  164. #include <sys/types.h>
  165. #endif
  166. /* cdefs */
  167. #ifdef HAVE_SYS_CDEFS_H
  168. #include <sys/cdefs.h>
  169. #endif
  170. /* sys/param */
  171. #ifdef HAVE_SYS_PARAM_H
  172. #include <sys/param.h>
  173. #endif
  174. /* stdint */
  175. #ifdef HAVE_STDINT_H
  176. #include <stdint.h>
  177. #elif defined(HAVE_INTTYPES_H)
  178. #include <inttypes.h>
  179. #endif
  180. /* stdbool */
  181. #ifdef HAVE_STDBOOL_H
  182. #include <stdbool.h>
  183. #endif
  184. /* queue */
  185. #ifdef HAVE_COMPATIBLE_QUEUE_H
  186. #ifdef HAVE_SYS_QUEUE_H
  187. #include <sys/queue.h>
  188. #endif
  189. #else
  190. #include "queue.h"
  191. #endif
  192. /* sys/socket */
  193. #ifdef HAVE_SYS_SOCKET_H
  194. #include <sys/socket.h>
  195. #endif
  196. /* sys/file.h */
  197. #ifdef HAVE_SYS_FILE_H
  198. #include <sys/file.h>
  199. #endif
  200. /* sys/uio.h */
  201. #ifdef HAVE_SYS_UIO_H
  202. #include <sys/uio.h>
  203. #endif
  204. /* sys/mman */
  205. #ifdef HAVE_SYS_MMAN_H
  206. #include <sys/mman.h>
  207. #endif
  208. /* netinet issues */
  209. #ifdef HAVE_NETINET_IN_H
  210. #include <netinet/in.h>
  211. #endif
  212. #ifdef HAVE_ARPA_INET_H
  213. #include <arpa/inet.h>
  214. #endif
  215. /* unix sockets */
  216. #ifdef HAVE_SYS_UN_H
  217. #include <sys/un.h>
  218. #endif
  219. /* netdb */
  220. #ifdef HAVE_NETDB_H
  221. #include <netdb.h>
  222. #endif
  223. /* stdlib */
  224. #ifdef HAVE_STDLIB_H
  225. #include <stdlib.h>
  226. #endif
  227. /* stdio */
  228. #ifdef HAVE_STDIO_H
  229. #include <stdio.h>
  230. #endif
  231. /* time */
  232. #ifdef HAVE_TIME_H
  233. #include <time.h>
  234. #endif
  235. /* timedb */
  236. #ifdef HAVE_SYS_TIMEB_H
  237. #include <sys/timeb.h>
  238. #endif
  239. #ifdef HAVE_UNISTD_H
  240. #include <unistd.h>
  241. #endif
  242. /* sysexits */
  243. #ifdef HAVE_SYSEXITS_H
  244. #include <sysexits.h>
  245. #endif
  246. /* unistd */
  247. #ifdef HAVE_UNISTD_H
  248. #include <unistd.h>
  249. #endif
  250. /* string */
  251. #ifdef HAVE_STRING_H
  252. #include <string.h>
  253. #endif
  254. /* strings */
  255. #ifdef HAVE_STRINGS_H
  256. #include <strings.h>
  257. #endif
  258. /* fcntl */
  259. #ifdef HAVE_FCNTL_H
  260. #include <fcntl.h>
  261. #endif
  262. /* Linux specific falloc.h */
  263. #ifdef HAVE_LINUX_FALLOC_H
  264. #include <linux/falloc.h>
  265. #endif
  266. /* poll */
  267. #ifdef HAVE_POLL_H
  268. #include <poll.h>
  269. #endif
  270. /* sys/stat */
  271. #ifdef HAVE_SYS_STAT_H
  272. #include <sys/stat.h>
  273. #endif
  274. /* sys/wait */
  275. #ifdef HAVE_SYS_WAIT_H
  276. #include <sys/wait.h>
  277. #endif
  278. /* sys/resource.h */
  279. #ifdef HAVE_SYS_RESOURCE_H
  280. #include <sys/resource.h>
  281. #endif
  282. /* math */
  283. #ifdef HAVE_MATH_H
  284. #include <math.h>
  285. #endif
  286. /* libutil */
  287. #ifdef HAVE_LIBUTIL_H
  288. #include <libutil.h>
  289. #endif
  290. /* pwd and grp */
  291. #ifdef HAVE_PWD_H
  292. #include <pwd.h>
  293. #endif
  294. #ifdef HAVE_GRP_H
  295. #include <grp.h>
  296. #endif
  297. #ifdef HAVE_GLOB_H
  298. #include <glob.h>
  299. #endif
  300. /* syslog */
  301. #ifdef HAVE_SYSLOG_H
  302. #include <syslog.h>
  303. #endif
  304. #ifdef HAVE_LIBGEN_H
  305. #include <libgen.h>
  306. #define HAVE_DIRNAME 1
  307. #endif
  308. #ifdef HAVE_SEARCH_H
  309. #include <search.h>
  310. #endif
  311. #ifdef WITH_GPERF_TOOLS
  312. #include <google/profiler.h>
  313. #endif
  314. #ifdef HAVE_SCHED_YIELD
  315. #include <sched.h>
  316. #endif
  317. #include <errno.h>
  318. #include <signal.h>
  319. #ifdef HAVE_SIGINFO_H
  320. # include <siginfo.h>
  321. #endif
  322. #include <event.h>
  323. #if _EVENT_NUMERIC_VERSION > 0x02000000
  324. # include <event2/thread.h>
  325. #endif
  326. #include <glib.h>
  327. #ifdef GLIB_RE_COMPAT
  328. #include "gregex.h"
  329. #endif
  330. #ifdef GLIB_UNISCRIPT_COMPAT
  331. #include "guniscript.h"
  332. #endif
  333. #ifdef GLIB_COMPAT
  334. #include "gchecksum.h"
  335. #endif
  336. #if (GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION < 14)
  337. typedef off_t goffset;
  338. #endif
  339. #ifndef BUILD_STATIC
  340. #include <gmodule.h>
  341. #endif
  342. #ifndef NO_GMIME
  343. #include <gmime/gmime.h>
  344. #endif
  345. #ifndef ALIGN
  346. #if defined(_MSC_VER)
  347. # define ALIGN(x) __declspec(align(x))
  348. #else
  349. # define ALIGN(x) __attribute__((aligned(x)))
  350. #endif
  351. #endif
  352. /* Forwarded declaration */
  353. struct module_ctx;
  354. struct rspamd_config;
  355. struct rspamd_worker;
  356. typedef struct module_s {
  357. const gchar *name;
  358. int (*module_init_func)(struct rspamd_config *cfg, struct module_ctx **ctx);
  359. int (*module_config_func)(struct rspamd_config *cfg);
  360. int (*module_reconfig_func)(struct rspamd_config *cfg);
  361. int (*module_attach_controller_func)(struct module_ctx *ctx,
  362. GHashTable *custom_commands);
  363. } module_t;
  364. typedef struct worker_s {
  365. const gchar *name;
  366. gpointer (*worker_init_func)(struct rspamd_config *cfg);
  367. void (*worker_start_func)(struct rspamd_worker *worker);
  368. gboolean has_socket;
  369. gboolean unique;
  370. gboolean threaded;
  371. gboolean killable;
  372. gint listen_type;
  373. } worker_t;
  374. extern module_t *modules[];
  375. extern worker_t *workers[];
  376. #endif