Browse Source

Rework project structure, remove trash files.

pull/70/head
Vsevolod Stakhov 12 years ago
parent
commit
61555065f3
  1. 142
      CMakeLists.txt
  2. 250
      src/CMakeLists.txt
  3. 209
      src/dns_private.h
  4. 29
      src/libmime/CMakeLists.txt
  5. 0
      src/libmime/expressions.c
  6. 0
      src/libmime/expressions.h
  7. 0
      src/libmime/filter.c
  8. 0
      src/libmime/filter.h
  9. 0
      src/libmime/images.c
  10. 0
      src/libmime/images.h
  11. 0
      src/libmime/message.c
  12. 0
      src/libmime/message.h
  13. 0
      src/libmime/protocol.c
  14. 0
      src/libmime/protocol.h
  15. 0
      src/libmime/smtp_proto.c
  16. 0
      src/libmime/smtp_proto.h
  17. 0
      src/libmime/smtp_utils.c
  18. 0
      src/libmime/smtp_utils.h
  19. 0
      src/libmime/worker_util.c
  20. 63
      src/libserver/CMakeLists.txt
  21. 0
      src/libserver/binlog.c
  22. 0
      src/libserver/binlog.h
  23. 0
      src/libserver/buffer.c
  24. 0
      src/libserver/buffer.h
  25. 0
      src/libserver/cfg_file.h
  26. 0
      src/libserver/cfg_rcl.c
  27. 0
      src/libserver/cfg_rcl.h
  28. 0
      src/libserver/cfg_utils.c
  29. 0
      src/libserver/dkim.c
  30. 0
      src/libserver/dkim.h
  31. 0
      src/libserver/dns.c
  32. 0
      src/libserver/dns.h
  33. 0
      src/libserver/dynamic_cfg.c
  34. 0
      src/libserver/dynamic_cfg.h
  35. 0
      src/libserver/events.c
  36. 0
      src/libserver/events.h
  37. 0
      src/libserver/html.c
  38. 0
      src/libserver/html.h
  39. 0
      src/libserver/proxy.c
  40. 0
      src/libserver/proxy.h
  41. 0
      src/libserver/roll_history.c
  42. 0
      src/libserver/roll_history.h
  43. 0
      src/libserver/settings.c
  44. 0
      src/libserver/settings.h
  45. 0
      src/libserver/spf.c
  46. 0
      src/libserver/spf.h
  47. 0
      src/libserver/statfile.c
  48. 0
      src/libserver/statfile.h
  49. 0
      src/libserver/statfile_sync.c
  50. 0
      src/libserver/statfile_sync.h
  51. 0
      src/libserver/symbols_cache.c
  52. 0
      src/libserver/symbols_cache.h
  53. 0
      src/libserver/task.c
  54. 0
      src/libserver/task.h
  55. 0
      src/libserver/url.c
  56. 0
      src/libserver/url.h
  57. 50
      src/libutil/CMakeLists.txt
  58. 0
      src/libutil/aio_event.c
  59. 0
      src/libutil/aio_event.h
  60. 0
      src/libutil/bloom.c
  61. 0
      src/libutil/bloom.h
  62. 0
      src/libutil/diff.c
  63. 0
      src/libutil/diff.h
  64. 0
      src/libutil/fstring.c
  65. 0
      src/libutil/fstring.h
  66. 0
      src/libutil/fuzzy.c
  67. 0
      src/libutil/fuzzy.h
  68. 0
      src/libutil/hash.c
  69. 0
      src/libutil/hash.h
  70. 0
      src/libutil/http.c
  71. 0
      src/libutil/http.h
  72. 0
      src/libutil/logger.c
  73. 0
      src/libutil/logger.h
  74. 0
      src/libutil/map.c
  75. 0
      src/libutil/map.h
  76. 0
      src/libutil/mem_pool.c
  77. 0
      src/libutil/mem_pool.h
  78. 0
      src/libutil/memcached.c
  79. 0
      src/libutil/memcached.h
  80. 0
      src/libutil/printf.c
  81. 0
      src/libutil/printf.h
  82. 0
      src/libutil/radix.c
  83. 0
      src/libutil/radix.h
  84. 0
      src/libutil/rrd.c
  85. 0
      src/libutil/rrd.h
  86. 0
      src/libutil/trie.c
  87. 0
      src/libutil/trie.h
  88. 0
      src/libutil/upstream.c
  89. 0
      src/libutil/upstream.h
  90. 0
      src/libutil/util.c
  91. 0
      src/libutil/util.h

142
CMakeLists.txt

@ -107,61 +107,7 @@ INCLUDE(CheckCCompilerFlag)
INCLUDE(FindPerl)
INCLUDE(FindOpenSSL)
############################# MODULES SECTION #############################################
MACRO(_AddModulesForced MLIST WLIST)
# Generate unique string for this build
STRING(RANDOM LENGTH 8 _MODULES_ID)
SET(MODULES_ID ${_MODULES_ID} CACHE INTERNAL "Modules ID" FORCE)
FILE(WRITE "src/modules.c" "/* ${MODULES_ID} */\n#include \"config.h\"\n")
# Handle even old cmake
LIST(LENGTH ${MLIST} MLIST_COUNT)
LIST(LENGTH ${WLIST} WLIST_COUNT)
MATH(EXPR MLIST_MAX ${MLIST_COUNT}-1)
MATH(EXPR WLIST_MAX ${WLIST_COUNT}-1)
FOREACH(MOD_IDX RANGE ${MLIST_MAX})
LIST(GET ${MLIST} ${MOD_IDX} MOD)
FILE(APPEND "src/modules.c" "extern module_t ${MOD}_module;\n")
ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
FILE(APPEND "src/modules.c" "\n\nmodule_t *modules[] = {\n")
FOREACH(MOD_IDX RANGE ${MLIST_MAX})
LIST(GET ${MLIST} ${MOD_IDX} MOD)
FILE(APPEND "src/modules.c" "&${MOD}_module,\n")
ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
FILE(APPEND "src/modules.c" "NULL\n};\n")
FOREACH(MOD_IDX RANGE ${WLIST_MAX})
LIST(GET ${WLIST} ${MOD_IDX} WRK)
FILE(APPEND "src/modules.c" "extern worker_t ${WRK}_worker;\n")
ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
FILE(APPEND "src/modules.c" "\n\nworker_t *workers[] = {\n")
FOREACH(MOD_IDX RANGE ${WLIST_MAX})
LIST(GET ${WLIST} ${MOD_IDX} WRK)
FILE(APPEND "src/modules.c" "&${WRK}_worker,\n")
ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
FILE(APPEND "src/modules.c" "NULL\n};\n")
ENDMACRO(_AddModulesForced MLIST WLIST)
MACRO(AddModules MLIST WLIST)
_AddModulesForced(${MLIST} ${WLIST})
#IF(NOT EXISTS "src/modules.c")
# _AddModulesForced(${MLIST} ${WLIST})
#ELSE(NOT EXISTS "src/modules.c")
# FILE(STRINGS "src/modules.c" FILE_ID_RAW REGEX "^/.*[a-zA-Z0-9]+.*/$")
# STRING(REGEX MATCH "[a-zA-Z0-9]+" FILE_ID "${FILE_ID_RAW}")
# IF(NOT FILE_ID STREQUAL MODULES_ID)
# MESSAGE("Regenerate modules info")
# _AddModulesForced(${MLIST} ${WLIST})
# ENDIF(NOT FILE_ID STREQUAL MODULES_ID)
#ENDIF(NOT EXISTS "src/modules.c")
ENDMACRO(AddModules MLIST WLIST)
############################# MACRO SECTION #############################################
# Find lua installation
MACRO(FindLua _major _minor)
@ -839,7 +785,6 @@ ENDIF(HG)
################################ SOURCES SECTION ###########################
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/src"
"${CMAKE_BINARY_DIR}/src"
"${CMAKE_SOURCE_DIR}/src/ucl/include"
@ -849,28 +794,6 @@ INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/src"
"${CMAKE_SOURCE_DIR}/contrib/xxhash"
"${CMAKE_SOURCE_DIR}/src/rdns/include")
SET(RSPAMDSRC src/modules.c
src/controller.c
src/fuzzy_storage.c
src/lua_worker.c
src/main.c
src/map.c
src/smtp_proxy.c
src/webui.c
src/worker.c)
SET(PLUGINSSRC src/plugins/surbl.c
src/plugins/regexp.c
src/plugins/chartable.c
src/plugins/fuzzy_check.c
src/plugins/spf.c
src/plugins/dkim_check.c)
SET(MODULES_LIST surbl regexp chartable fuzzy_check spf dkim)
SET(WORKERS_LIST normal controller smtp_proxy fuzzy lua webui)
AddModules(MODULES_LIST WORKERS_LIST)
################################ SUBDIRS SECTION ###########################
ADD_SUBDIRECTORY(contrib/lgpl)
@ -888,21 +811,10 @@ ADD_DEFINITIONS(-DHAVE_CONFIG_H)
ADD_SUBDIRECTORY(contrib/xxhash)
ADD_SUBDIRECTORY(contrib/http-parser)
ADD_SUBDIRECTORY(contrib/libottery)
ADD_SUBDIRECTORY(src/lua)
ADD_SUBDIRECTORY(src/json)
ADD_SUBDIRECTORY(src/cdb)
ADD_SUBDIRECTORY(src/ucl/cmake)
ADD_SUBDIRECTORY(src)
ADD_SUBDIRECTORY(src/client)
SET(SLAVE_BUILD 1)
ADD_SUBDIRECTORY(src/rdns)
UNSET(SLAVE_BUILD)
ADD_SUBDIRECTORY(test)
LIST(LENGTH PLUGINSSRC RSPAMD_MODULES_NUM)
############################ TARGETS SECTION ###############################
@ -921,54 +833,9 @@ SET(CONFFILES
conf/2tld.inc
conf/surbl-whitelist.inc)
######################### LINK SECTION ###############################
ADD_EXECUTABLE(rspamd ${RSPAMDSRC} ${PLUGINSSRC})
SET_TARGET_PROPERTIES(rspamd PROPERTIES LINKER_LANGUAGE C)
SET_TARGET_PROPERTIES(rspamd PROPERTIES COMPILE_FLAGS "-DRSPAMD_MAIN")
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
TARGET_LINK_LIBRARIES(rspamd rspamd-mime)
TARGET_LINK_LIBRARIES(rspamd rspamd-server)
TARGET_LINK_LIBRARIES(rspamd rspamd-util)
TARGET_LINK_LIBRARIES(rspamd rspamd-lua)
TARGET_LINK_LIBRARIES(rspamd event)
IF(HAVE_LIBEVENT2)
TARGET_LINK_LIBRARIES(rspamd event_pthreads)
ENDIF(HAVE_LIBEVENT2)
IF(WITH_DB)
TARGET_LINK_LIBRARIES(rspamd db)
ENDIF(WITH_DB)
IF(OPENSSL_FOUND)
TARGET_LINK_LIBRARIES(rspamd ${OPENSSL_LIBRARIES})
ENDIF(OPENSSL_FOUND)
IF(HAVE_FETCH_H)
TARGET_LINK_LIBRARIES(rspamd fetch)
ENDIF(HAVE_FETCH_H)
TARGET_LINK_LIBRARIES(rspamd ${RSPAMD_REQUIRED_LIBRARIES})
IF(ENABLE_LUAJIT MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd "${LUAJIT_LIBRARY}")
ELSE(ENABLE_LUAJIT MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd "${LUA_LIBRARY}")
ENDIF(ENABLE_LUAJIT MATCHES "ON")
IF(ENABLE_GPERF_TOOLS MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd profiler)
ENDIF(ENABLE_GPERF_TOOLS MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd hiredis)
IF(GLIB_COMPAT)
TARGET_LINK_LIBRARIES(rspamd glibadditions)
ENDIF(GLIB_COMPAT)
##################### INSTALLATION ##########################################
# Binaries
INSTALL(TARGETS rspamd RUNTIME DESTINATION bin)
# Configs
INSTALL(CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}${CONFDIR})")
@ -1012,9 +879,10 @@ FOREACH(LUA_CONF ${LUA_CONFIGS})
ENDFOREACH(LUA_CONF)
# systemd unit
INSTALL(FILES "rspamd.service" DESTINATION ${SYSTEMDDIR})
INSTALL(FILES "rspamd.socket" DESTINATION ${SYSTEMDDIR})
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
INSTALL(FILES "rspamd.service" DESTINATION ${SYSTEMDDIR})
INSTALL(FILES "rspamd.socket" DESTINATION ${SYSTEMDDIR})
ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
# Manual pages
INSTALL(FILES "doc/rspamd.8" DESTINATION ${MANDIR}/man8)

250
src/CMakeLists.txt

@ -1,149 +1,139 @@
# Librspamd-util
SET(LIBRSPAMDUTILSRC aio_event.c
bloom.c
diff.c
fstring.c
fuzzy.c
hash.c
http.c
logger.c
map.c
memcached.c
mem_pool.c
printf.c
radix.c
rrd.c
trie.c
upstream.c
util.c)
MACRO(_AddModulesForced MLIST WLIST)
# Generate unique string for this build
STRING(RANDOM LENGTH 8 _MODULES_ID)
SET(MODULES_ID ${_MODULES_ID} CACHE INTERNAL "Modules ID" FORCE)
FILE(WRITE "src/modules.c" "/* ${MODULES_ID} */\n#include \"config.h\"\n")
# Handle even old cmake
LIST(LENGTH ${MLIST} MLIST_COUNT)
LIST(LENGTH ${WLIST} WLIST_COUNT)
MATH(EXPR MLIST_MAX ${MLIST_COUNT}-1)
MATH(EXPR WLIST_MAX ${WLIST_COUNT}-1)
FOREACH(MOD_IDX RANGE ${MLIST_MAX})
LIST(GET ${MLIST} ${MOD_IDX} MOD)
FILE(APPEND "src/modules.c" "extern module_t ${MOD}_module;\n")
ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
FILE(APPEND "src/modules.c" "\n\nmodule_t *modules[] = {\n")
FOREACH(MOD_IDX RANGE ${MLIST_MAX})
LIST(GET ${MLIST} ${MOD_IDX} MOD)
FILE(APPEND "src/modules.c" "&${MOD}_module,\n")
ENDFOREACH(MOD_IDX RANGE ${MLIST_MAX})
FILE(APPEND "src/modules.c" "NULL\n};\n")
FOREACH(MOD_IDX RANGE ${WLIST_MAX})
LIST(GET ${WLIST} ${MOD_IDX} WRK)
FILE(APPEND "src/modules.c" "extern worker_t ${WRK}_worker;\n")
ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
FILE(APPEND "src/modules.c" "\n\nworker_t *workers[] = {\n")
FOREACH(MOD_IDX RANGE ${WLIST_MAX})
LIST(GET ${WLIST} ${MOD_IDX} WRK)
FILE(APPEND "src/modules.c" "&${WRK}_worker,\n")
ENDFOREACH(MOD_IDX RANGE ${WLIST_MAX})
FILE(APPEND "src/modules.c" "NULL\n};\n")
ENDMACRO(_AddModulesForced MLIST WLIST)
# Librspamdserver
SET(LIBRSPAMDSERVERSRC
binlog.c
buffer.c
cfg_utils.c
cfg_rcl.c
dkim.c
dns.c
dynamic_cfg.c
events.c
html.c
proxy.c
roll_history.c
settings.c
spf.c
statfile.c
statfile_sync.c
symbols_cache.c
task.c
url.c)
# Librspamd mime
SET(LIBRSPAMDMIMESRC
expressions.c
filter.c
images.c
message.c
protocol.c
smtp_utils.c
smtp_proto.c
worker_util.c)
SET(TOKENIZERSSRC tokenizers/tokenizers.c
tokenizers/osb.c)
SET(CLASSIFIERSSRC classifiers/classifiers.c
classifiers/bayes.c
classifiers/winnow.c)
# Add targets
MACRO(AddModules MLIST WLIST)
_AddModulesForced(${MLIST} ${WLIST})
#IF(NOT EXISTS "src/modules.c")
# _AddModulesForced(${MLIST} ${WLIST})
#ELSE(NOT EXISTS "src/modules.c")
# FILE(STRINGS "src/modules.c" FILE_ID_RAW REGEX "^/.*[a-zA-Z0-9]+.*/$")
# STRING(REGEX MATCH "[a-zA-Z0-9]+" FILE_ID "${FILE_ID_RAW}")
# IF(NOT FILE_ID STREQUAL MODULES_ID)
# MESSAGE("Regenerate modules info")
# _AddModulesForced(${MLIST} ${WLIST})
# ENDIF(NOT FILE_ID STREQUAL MODULES_ID)
#ENDIF(NOT EXISTS "src/modules.c")
ENDMACRO(AddModules MLIST WLIST)
# Rspamdutil
ADD_LIBRARY(rspamd-util ${LINK_TYPE} ${LIBRSPAMDUTILSRC})
IF(CMAKE_COMPILER_IS_GNUCC)
SET_TARGET_PROPERTIES(rspamd-util PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
# Contrib software
ADD_SUBDIRECTORY(json)
ADD_SUBDIRECTORY(cdb)
ADD_SUBDIRECTORY(ucl/cmake)
SET(SLAVE_BUILD 1)
ADD_SUBDIRECTORY(rdns)
UNSET(SLAVE_BUILD)
INCLUDE_DIRECTORIES(libutil libserver libmime)
TARGET_LINK_LIBRARIES(rspamd-util ${RSPAMD_REQUIRED_LIBRARIES})
TARGET_LINK_LIBRARIES(rspamd-util pcre)
TARGET_LINK_LIBRARIES(rspamd-util ucl)
TARGET_LINK_LIBRARIES(rspamd-util ottery)
TARGET_LINK_LIBRARIES(rspamd-util rspamd-http-parser)
TARGET_LINK_LIBRARIES(rspamd-util event)
TARGET_LINK_LIBRARIES(rspamd-util xxhash)
IF(OPENSSL_FOUND)
TARGET_LINK_LIBRARIES(rspamd-util ${OPENSSL_LIBRARIES})
ENDIF(OPENSSL_FOUND)
# Rspamd core components
ADD_SUBDIRECTORY(lua)
ADD_SUBDIRECTORY(libutil)
ADD_SUBDIRECTORY(libserver)
ADD_SUBDIRECTORY(libmime)
ADD_SUBDIRECTORY(client)
SET(RSPAMDSRC modules.c
controller.c
fuzzy_storage.c
lua_worker.c
main.c
smtp_proxy.c
webui.c
worker.c)
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-util PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
SET(PLUGINSSRC plugins/surbl.c
plugins/regexp.c
plugins/chartable.c
plugins/fuzzy_check.c
plugins/spf.c
plugins/dkim_check.c)
SET(MODULES_LIST surbl regexp chartable fuzzy_check spf dkim)
SET(WORKERS_LIST normal controller smtp_proxy fuzzy lua webui)
IF(GLIB_COMPAT)
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/contrib/lgpl")
TARGET_LINK_LIBRARIES(rspamd-util glibadditions)
ENDIF(GLIB_COMPAT)
AddModules(MODULES_LIST WORKERS_LIST)
LIST(LENGTH PLUGINSSRC RSPAMD_MODULES_NUM)
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-util
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION include)
ENDIF(NO_SHARED MATCHES "OFF")
# Librspamd-server
######################### LINK SECTION ###############################
#IF(WITH_DB)
# LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_bdb.c)
#ENDIF(WITH_DB)
#IF(WITH_SQLITE)
# LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_sqlite.c)
#ENDIF(WITH_SQLITE)
ADD_LIBRARY(rspamd-server ${LINK_TYPE} ${LIBRSPAMDSERVERSRC} ${TOKENIZERSSRC} ${CLASSIFIERSSRC})
ADD_EXECUTABLE(rspamd ${RSPAMDSRC} ${PLUGINSSRC})
SET_TARGET_PROPERTIES(rspamd PROPERTIES LINKER_LANGUAGE C)
SET_TARGET_PROPERTIES(rspamd PROPERTIES COMPILE_FLAGS "-DRSPAMD_MAIN")
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-server PROPERTIES VERSION ${RSPAMD_VERSION})
SET_TARGET_PROPERTIES(rspamd PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-server PROPERTIES LINKER_LANGUAGE C COMPILE_FLAGS "-DRSPAMD_LIB")
TARGET_LINK_LIBRARIES(rspamd-server rspamd-lua)
TARGET_LINK_LIBRARIES(rspamd-server rspamd-json)
TARGET_LINK_LIBRARIES(rspamd-server rspamd-cdb)
TARGET_LINK_LIBRARIES(rspamd-server rspamd-util)
TARGET_LINK_LIBRARIES(rspamd-server rdns)
IF(CMAKE_COMPILER_IS_GNUCC)
SET_TARGET_PROPERTIES(rspamd-server PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
TARGET_LINK_LIBRARIES(rspamd rspamd-mime)
TARGET_LINK_LIBRARIES(rspamd rspamd-server)
TARGET_LINK_LIBRARIES(rspamd rspamd-util)
TARGET_LINK_LIBRARIES(rspamd rspamd-lua)
TARGET_LINK_LIBRARIES(rspamd event)
IF(HAVE_LIBEVENT2)
TARGET_LINK_LIBRARIES(rspamd event_pthreads)
ENDIF(HAVE_LIBEVENT2)
IF(WITH_DB)
TARGET_LINK_LIBRARIES(rspamd-server db)
TARGET_LINK_LIBRARIES(rspamd db)
ENDIF(WITH_DB)
IF(OPENSSL_FOUND)
TARGET_LINK_LIBRARIES(rspamd-server ${OPENSSL_LIBRARIES})
TARGET_LINK_LIBRARIES(rspamd ${OPENSSL_LIBRARIES})
ENDIF(OPENSSL_FOUND)
IF(HAVE_FETCH_H)
TARGET_LINK_LIBRARIES(rspamd fetch)
ENDIF(HAVE_FETCH_H)
TARGET_LINK_LIBRARIES(rspamd ${RSPAMD_REQUIRED_LIBRARIES})
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-server
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
ENDIF(NO_SHARED MATCHES "OFF")
# Librspamdmime
ADD_LIBRARY(rspamd-mime ${LINK_TYPE} ${LIBRSPAMDMIMESRC})
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES LINKER_LANGUAGE C)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
TARGET_LINK_LIBRARIES(rspamd-mime rspamd-server)
TARGET_LINK_LIBRARIES(rspamd-mime rspamd-util)
IF(CMAKE_COMPILER_IS_GNUCC)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(ENABLE_LUAJIT MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd "${LUAJIT_LIBRARY}")
ELSE(ENABLE_LUAJIT MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd "${LUA_LIBRARY}")
ENDIF(ENABLE_LUAJIT MATCHES "ON")
IF(ENABLE_GPERF_TOOLS MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd profiler)
ENDIF(ENABLE_GPERF_TOOLS MATCHES "ON")
TARGET_LINK_LIBRARIES(rspamd hiredis)
IF(GLIB_COMPAT)
TARGET_LINK_LIBRARIES(rspamd glibadditions)
ENDIF(GLIB_COMPAT)
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-mime
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
ENDIF(NO_SHARED MATCHES "OFF")
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/src")
INSTALL(TARGETS rspamd RUNTIME DESTINATION bin)

209
src/dns_private.h

@ -1,209 +0,0 @@
/* Copyright (c) 2014, Vsevolod Stakhov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef DNS_PRIVATE_H_
#define DNS_PRIVATE_H_
#include "config.h"
#define MAX_SERVERS 16
/* Upstream timeouts */
#define DEFAULT_UPSTREAM_ERROR_TIME 10
#define DEFAULT_UPSTREAM_DEAD_TIME 300
#define DEFAULT_UPSTREAM_MAXERRORS 10
static const unsigned base = 36;
static const unsigned t_min = 1;
static const unsigned t_max = 26;
static const unsigned skew = 38;
static const unsigned damp = 700;
static const unsigned initial_n = 128;
static const unsigned initial_bias = 72;
static const gint dns_port = 53;
#define UDP_PACKET_SIZE 4096
#define DNS_COMPRESSION_BITS 0xC0
#define DNS_D_MAXLABEL 63 /* + 1 '\0' */
#define DNS_D_MAXNAME 255 /* + 1 '\0' */
#define RESOLV_CONF "/etc/resolv.conf"
/**
* Represents DNS server
*/
struct rspamd_dns_server {
struct upstream up; /**< upstream structure */
gchar *name; /**< name of DNS server */
struct rspamd_dns_io_channel *io_channels;
struct rspamd_dns_io_channel *cur_io_channel;
};
/**
* IO channel for a specific DNS server
*/
struct rspamd_dns_io_channel {
struct rspamd_dns_server *srv;
struct rspamd_dns_resolver *resolver;
gint sock; /**< persistent socket */
struct event ev;
GHashTable *requests; /**< requests in flight */
struct rspamd_dns_io_channel *prev, *next;
};
struct rspamd_dns_resolver {
struct rspamd_dns_server servers[MAX_SERVERS];
gint servers_num; /**< number of DNS servers registered */
guint request_timeout;
guint max_retransmits;
guint max_errors;
GHashTable *io_channels; /**< hash of io chains indexed by socket */
gboolean throttling; /**< dns servers are busy */
gboolean is_master_slave; /**< if this is true, then select upstreams as master/slave */
guint errors; /**< resolver errors */
struct timeval throttling_time; /**< throttling time */
struct event throttling_event; /**< throttling event */
struct event_base *ev_base; /**< base for event ops */
};
struct dns_header;
struct dns_query;
/* Internal DNS structs */
struct dns_header {
guint qid :16;
#if BYTE_ORDER == BIG_ENDIAN
guint qr:1;
guint opcode:4;
guint aa:1;
guint tc:1;
guint rd:1;
guint ra:1;
guint unused:3;
guint rcode:4;
#else
guint rd :1;
guint tc :1;
guint aa :1;
guint opcode :4;
guint qr :1;
guint rcode :4;
guint unused :3;
guint ra :1;
#endif
guint qdcount :16;
guint ancount :16;
guint nscount :16;
guint arcount :16;
};
enum dns_section {
DNS_S_QD = 0x01,
#define DNS_S_QUESTION DNS_S_QD
DNS_S_AN = 0x02,
#define DNS_S_ANSWER DNS_S_AN
DNS_S_NS = 0x04,
#define DNS_S_AUTHORITY DNS_S_NS
DNS_S_AR = 0x08,
#define DNS_S_ADDITIONAL DNS_S_AR
DNS_S_ALL = 0x0f
};
/* enum dns_section */
enum dns_opcode {
DNS_OP_QUERY = 0,
DNS_OP_IQUERY = 1,
DNS_OP_STATUS = 2,
DNS_OP_NOTIFY = 4,
DNS_OP_UPDATE = 5,
};
/* dns_opcode */
enum dns_class {
DNS_C_IN = 1,
DNS_C_ANY = 255
};
/* enum dns_class */
struct dns_query {
gchar *qname;
guint qtype :16;
guint qclass :16;
};
enum dns_type {
DNS_T_A = 1,
DNS_T_NS = 2,
DNS_T_CNAME = 5,
DNS_T_SOA = 6,
DNS_T_PTR = 12,
DNS_T_MX = 15,
DNS_T_TXT = 16,
DNS_T_AAAA = 28,
DNS_T_SRV = 33,
DNS_T_OPT = 41,
DNS_T_SSHFP = 44,
DNS_T_SPF = 99,
DNS_T_ALL = 255
};
/* enum dns_type */
static const gchar dns_rcodes[16][16] = {
[DNS_RC_NOERROR] = "NOERROR",
[DNS_RC_FORMERR] = "FORMERR",
[DNS_RC_SERVFAIL] = "SERVFAIL",
[DNS_RC_NXDOMAIN] = "NXDOMAIN",
[DNS_RC_NOTIMP] = "NOTIMP",
[DNS_RC_REFUSED] = "REFUSED",
[DNS_RC_YXDOMAIN] = "YXDOMAIN",
[DNS_RC_YXRRSET] = "YXRRSET",
[DNS_RC_NXRRSET] = "NXRRSET",
[DNS_RC_NOTAUTH] = "NOTAUTH",
[DNS_RC_NOTZONE] = "NOTZONE",
};
static const gchar dns_types[7][16] = {
[DNS_REQUEST_A] = "A request",
[DNS_REQUEST_PTR] = "PTR request",
[DNS_REQUEST_MX] = "MX request",
[DNS_REQUEST_TXT] = "TXT request",
[DNS_REQUEST_SRV] = "SRV request",
[DNS_REQUEST_SPF] = "SPF request",
[DNS_REQUEST_AAA] = "AAA request"
};
#endif /* DNS_PRIVATE_H_ */

29
src/libmime/CMakeLists.txt

@ -0,0 +1,29 @@
# Librspamd mime
SET(LIBRSPAMDMIMESRC
expressions.c
filter.c
images.c
message.c
protocol.c
smtp_utils.c
smtp_proto.c
worker_util.c)
# Librspamdmime
ADD_LIBRARY(rspamd-mime ${LINK_TYPE} ${LIBRSPAMDMIMESRC})
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES LINKER_LANGUAGE C)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB")
TARGET_LINK_LIBRARIES(rspamd-mime rspamd-server)
TARGET_LINK_LIBRARIES(rspamd-mime rspamd-util)
IF(CMAKE_COMPILER_IS_GNUCC)
SET_TARGET_PROPERTIES(rspamd-mime PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-mime
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
ENDIF(NO_SHARED MATCHES "OFF")

0
src/expressions.c → src/libmime/expressions.c

0
src/expressions.h → src/libmime/expressions.h

0
src/filter.c → src/libmime/filter.c

0
src/filter.h → src/libmime/filter.h

0
src/images.c → src/libmime/images.c

0
src/images.h → src/libmime/images.h

0
src/message.c → src/libmime/message.c

0
src/message.h → src/libmime/message.h

0
src/protocol.c → src/libmime/protocol.c

0
src/protocol.h → src/libmime/protocol.h

0
src/smtp_proto.c → src/libmime/smtp_proto.c

0
src/smtp_proto.h → src/libmime/smtp_proto.h

0
src/smtp_utils.c → src/libmime/smtp_utils.c

0
src/smtp_utils.h → src/libmime/smtp_utils.h

0
src/worker_util.c → src/libmime/worker_util.c

63
src/libserver/CMakeLists.txt

@ -0,0 +1,63 @@
# Librspamdserver
SET(LIBRSPAMDSERVERSRC
binlog.c
buffer.c
cfg_utils.c
cfg_rcl.c
dkim.c
dns.c
dynamic_cfg.c
events.c
html.c
proxy.c
roll_history.c
settings.c
spf.c
statfile.c
statfile_sync.c
symbols_cache.c
task.c
url.c)
SET(TOKENIZERSSRC ../tokenizers/tokenizers.c
../tokenizers/osb.c)
SET(CLASSIFIERSSRC ../classifiers/classifiers.c
../classifiers/bayes.c
../classifiers/winnow.c)
# Librspamd-server
#IF(WITH_DB)
# LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_bdb.c)
#ENDIF(WITH_DB)
#IF(WITH_SQLITE)
# LIST(APPEND LIBRSPAMDSERVERSRC kvstorage_sqlite.c)
#ENDIF(WITH_SQLITE)
ADD_LIBRARY(rspamd-server ${LINK_TYPE} ${LIBRSPAMDSERVERSRC} ${TOKENIZERSSRC} ${CLASSIFIERSSRC})
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-server PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-server PROPERTIES LINKER_LANGUAGE C COMPILE_FLAGS "-DRSPAMD_LIB")
TARGET_LINK_LIBRARIES(rspamd-server rspamd-lua)
TARGET_LINK_LIBRARIES(rspamd-server rspamd-json)
TARGET_LINK_LIBRARIES(rspamd-server rspamd-cdb)
TARGET_LINK_LIBRARIES(rspamd-server rspamd-util)
TARGET_LINK_LIBRARIES(rspamd-server rdns)
IF(CMAKE_COMPILER_IS_GNUCC)
SET_TARGET_PROPERTIES(rspamd-server PROPERTIES COMPILE_FLAGS "-DRSPAMD_LIB -fno-strict-aliasing")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(WITH_DB)
TARGET_LINK_LIBRARIES(rspamd-server db)
ENDIF(WITH_DB)
IF(OPENSSL_FOUND)
TARGET_LINK_LIBRARIES(rspamd-server ${OPENSSL_LIBRARIES})
ENDIF(OPENSSL_FOUND)
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-server
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION ${INCLUDEDIR})
ENDIF(NO_SHARED MATCHES "OFF")

0
src/binlog.c → src/libserver/binlog.c

0
src/binlog.h → src/libserver/binlog.h

0
src/buffer.c → src/libserver/buffer.c

0
src/buffer.h → src/libserver/buffer.h

0
src/cfg_file.h → src/libserver/cfg_file.h

0
src/cfg_rcl.c → src/libserver/cfg_rcl.c

0
src/cfg_rcl.h → src/libserver/cfg_rcl.h

0
src/cfg_utils.c → src/libserver/cfg_utils.c

0
src/dkim.c → src/libserver/dkim.c

0
src/dkim.h → src/libserver/dkim.h

0
src/dns.c → src/libserver/dns.c

0
src/dns.h → src/libserver/dns.h

0
src/dynamic_cfg.c → src/libserver/dynamic_cfg.c

0
src/dynamic_cfg.h → src/libserver/dynamic_cfg.h

0
src/events.c → src/libserver/events.c

0
src/events.h → src/libserver/events.h

0
src/html.c → src/libserver/html.c

0
src/html.h → src/libserver/html.h

0
src/proxy.c → src/libserver/proxy.c

0
src/proxy.h → src/libserver/proxy.h

0
src/roll_history.c → src/libserver/roll_history.c

0
src/roll_history.h → src/libserver/roll_history.h

0
src/settings.c → src/libserver/settings.c

0
src/settings.h → src/libserver/settings.h

0
src/spf.c → src/libserver/spf.c

0
src/spf.h → src/libserver/spf.h

0
src/statfile.c → src/libserver/statfile.c

0
src/statfile.h → src/libserver/statfile.h

0
src/statfile_sync.c → src/libserver/statfile_sync.c

0
src/statfile_sync.h → src/libserver/statfile_sync.h

0
src/symbols_cache.c → src/libserver/symbols_cache.c

0
src/symbols_cache.h → src/libserver/symbols_cache.h

0
src/task.c → src/libserver/task.c

0
src/task.h → src/libserver/task.h

0
src/url.c → src/libserver/url.c

0
src/url.h → src/libserver/url.h

50
src/libutil/CMakeLists.txt

@ -0,0 +1,50 @@
# Librspamd-util
SET(LIBRSPAMDUTILSRC aio_event.c
bloom.c
diff.c
fstring.c
fuzzy.c
hash.c
http.c
logger.c
map.c
memcached.c
mem_pool.c
printf.c
radix.c
rrd.c
trie.c
upstream.c
util.c)
# Rspamdutil
ADD_LIBRARY(rspamd-util ${LINK_TYPE} ${LIBRSPAMDUTILSRC})
IF(CMAKE_COMPILER_IS_GNUCC)
SET_TARGET_PROPERTIES(rspamd-util PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
TARGET_LINK_LIBRARIES(rspamd-util ${RSPAMD_REQUIRED_LIBRARIES})
TARGET_LINK_LIBRARIES(rspamd-util pcre)
TARGET_LINK_LIBRARIES(rspamd-util ucl)
TARGET_LINK_LIBRARIES(rspamd-util ottery)
TARGET_LINK_LIBRARIES(rspamd-util rspamd-http-parser)
TARGET_LINK_LIBRARIES(rspamd-util event)
TARGET_LINK_LIBRARIES(rspamd-util xxhash)
IF(OPENSSL_FOUND)
TARGET_LINK_LIBRARIES(rspamd-util ${OPENSSL_LIBRARIES})
ENDIF(OPENSSL_FOUND)
IF(NOT DEBIAN_BUILD)
SET_TARGET_PROPERTIES(rspamd-util PROPERTIES VERSION ${RSPAMD_VERSION})
ENDIF(NOT DEBIAN_BUILD)
IF(GLIB_COMPAT)
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/contrib/lgpl")
TARGET_LINK_LIBRARIES(rspamd-util glibadditions)
ENDIF(GLIB_COMPAT)
IF(NO_SHARED MATCHES "OFF")
INSTALL(TARGETS rspamd-util
LIBRARY DESTINATION ${LIBDIR}
PUBLIC_HEADER DESTINATION include)
ENDIF(NO_SHARED MATCHES "OFF")

0
src/aio_event.c → src/libutil/aio_event.c

0
src/aio_event.h → src/libutil/aio_event.h

0
src/bloom.c → src/libutil/bloom.c

0
src/bloom.h → src/libutil/bloom.h

0
src/diff.c → src/libutil/diff.c

0
src/diff.h → src/libutil/diff.h

0
src/fstring.c → src/libutil/fstring.c

0
src/fstring.h → src/libutil/fstring.h

0
src/fuzzy.c → src/libutil/fuzzy.c

0
src/fuzzy.h → src/libutil/fuzzy.h

0
src/hash.c → src/libutil/hash.c

0
src/hash.h → src/libutil/hash.h

0
src/http.c → src/libutil/http.c

0
src/http.h → src/libutil/http.h

0
src/logger.c → src/libutil/logger.c

0
src/logger.h → src/libutil/logger.h

0
src/map.c → src/libutil/map.c

0
src/map.h → src/libutil/map.h

0
src/mem_pool.c → src/libutil/mem_pool.c

0
src/mem_pool.h → src/libutil/mem_pool.h

0
src/memcached.c → src/libutil/memcached.c

0
src/memcached.h → src/libutil/memcached.h

0
src/printf.c → src/libutil/printf.c

0
src/printf.h → src/libutil/printf.h

0
src/radix.c → src/libutil/radix.c

0
src/radix.h → src/libutil/radix.h

0
src/rrd.c → src/libutil/rrd.c

0
src/rrd.h → src/libutil/rrd.h

0
src/trie.c → src/libutil/trie.c

0
src/trie.h → src/libutil/trie.h

0
src/upstream.c → src/libutil/upstream.c

0
src/upstream.h → src/libutil/upstream.h

0
src/util.c → src/libutil/util.c

0
src/util.h → src/libutil/util.h

Loading…
Cancel
Save