Added CMake build system support

Successfully builds 3proxy binary and relevant plugins on Windows with
bobth MSVC2010 and mingw
This commit is contained in:
Alexander Belkov 2017-12-27 17:52:50 +10:00
parent 2d1720c15f
commit 234416e2db
13 changed files with 259 additions and 0 deletions

118
CMakeLists.txt Normal file
View File

@ -0,0 +1,118 @@
cmake_minimum_required (VERSION 3.0)
project (3proxy)
set_property(GLOBAL PROPERTY COMPILE_DEFINITIONS_DEBUG "DEBUG")
option (3PROXY_USE_IPV6 "Compile 3proxy with IPv6 support" OFF)
option (3PROXY_PLUGIN_FILE "Build FilePlugin" ON)
option (3PROXY_PLUGIN_LR "Build LstFRipper plugin" OFF)
option (3PROXY_PLUGIN_LDAP "Build LDAP plugin" OFF)
option (3PROXY_PLUGIN_PAM "Build PAM plugin" OFF)
option (3PROXY_PLUGIN_PCRE "Build PCRE plugin" ON)
option (3PROXY_PLUGIN_SSL "Build SSL plugin" ON)
option (3PROXY_PLUGIN_STRINGS "Build strings plugin" ON)
option (3PROXY_PLUGIN_TRANSPARENT "Build transparent proxy plugin" OFF)
option (3PROXY_PLUGIN_U2C "Build UTF8 to CP1251 conversion plugin" ON)
option (3PROXY_PLUGIN_TRAFFIC "Build trafic counter plugin" ON)
option (3PROXY_PLUGIN_WINAUTH "Build Windows authentication plugin" ON)
if(NOT WIN32)
set (3PROXY_PLUGIN_TRAFFIC OFF)
set (3PROXY_PLUGIN_WINAUTH OFF)
endif(NOT WIN32)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
# Add Windows resources file
if (WIN32)
set (3PROXY_RESOURCES ${CMAKE_SOURCE_DIR}/3proxy.rc)
else (WIN32)
set (3PROXY_RESOURCES "")
endif (WIN32)
set (SOURCE_DIR ${CMAKE_SOURCE_DIR}/src)
set (3PROXY_SOURCES
${SOURCE_DIR}/3proxy.c
${SOURCE_DIR}/proxymain.c
${SOURCE_DIR}/proxy.c
${SOURCE_DIR}/pop3p.c
${SOURCE_DIR}/smtpp.c
${SOURCE_DIR}/ftppr.c
${SOURCE_DIR}/socks.c
${SOURCE_DIR}/tcppm.c
${SOURCE_DIR}/icqpr.c
${SOURCE_DIR}/udppm.c
${SOURCE_DIR}/sockmap.c
${SOURCE_DIR}/sockgetchar.c
${SOURCE_DIR}/myalloc.c
${SOURCE_DIR}/common.c
${SOURCE_DIR}/auth.c
${SOURCE_DIR}/conf.c
${SOURCE_DIR}/datatypes.c
${SOURCE_DIR}/libs/md4.c
${SOURCE_DIR}/libs/md5.c
${SOURCE_DIR}/mycrypt.c
${SOURCE_DIR}/base64.c
${SOURCE_DIR}/ftp.c
${SOURCE_DIR}/libs/smbdes.c
${SOURCE_DIR}/ntlm.c
${SOURCE_DIR}/stringtable.c
${SOURCE_DIR}/webadmin.c
${SOURCE_DIR}/dnspr.c
${SOURCE_DIR}/plugins.c
)
set(DIGHOSTS_SOURCES
${SOURCE_DIR}/common.c
${SOURCE_DIR}/dighosts.c
${SOURCE_DIR}/myalloc.c
)
set(MYCRYPT_SOURCES
${SOURCE_DIR}/libs/md4.c
${SOURCE_DIR}/libs/md5.c
${SOURCE_DIR}/mycrypt.c
${SOURCE_DIR}/base64.c
)
set(CMAKE_FIND_LIBRARY_PREFIXES "")
if (WIN32)
if (MSVC)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nodefaultlib:msvcrt,msvcrtd")
else (MSVC)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a")
endif (MSVC)
else(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
endif(WIN32)
add_executable (3proxy
${3PROXY_RESOURCES};
${3PROXY_SOURCES})
target_compile_definitions(3proxy PRIVATE WINDOWS WITH_STD_MALLOC _WIN32 _CONSOLE _MBCS MODULEMAINFUNC=mainfunc)
add_executable(dighosts ${DIGHOSTS_SOURCES})
target_compile_definitions(dighosts PRIVATE WINDOWS WITH_STD_MALLOC _CONSOLE _MBCS)
add_executable(mycrypt ${MYCRYPT_SOURCES})
target_compile_definitions(mycrypt PRIVATE WITHMAIN)
if (WIN32)
target_link_libraries(3proxy PRIVATE ws2_32 odbc32 gdi32)
target_link_libraries(dighosts PRIVATE ws2_32 odbc32 gdi32)
endif(WIN32)
if (NOT 3PROXY_USE_IPV6)
target_compile_definitions(3proxy PRIVATE NOIPV6)
target_compile_definitions(dighosts PRIVATE NOIPV6)
endif (NOT 3PROXY_USE_IPV6)
add_subdirectory (src/plugins)

View File

@ -0,0 +1,44 @@
if (3PROXY_PLUGIN_FILE)
add_subdirectory(FilePlugin)
endif (3PROXY_PLUGIN_FILE)
if(3PROXY_PLUGIN_LR)
add_subdirectory(LastFRipper)
endif(3PROXY_PLUGIN_LR)
if(3PROXY_PLUGIN_LDAP)
add_subdirectory(LdapPlugin)
endif(3PROXY_PLUGIN_LDAP)
if(3PROXY_PLUGIN_PAM)
add_subdirectory(PamAuth)
endif(3PROXY_PLUGIN_PAM)
if(3PROXY_PLUGIN_PCRE)
add_subdirectory(PCREPlugin)
endif(3PROXY_PLUGIN_PCRE)
if(3PROXY_PLUGIN_SSL)
add_subdirectory(SSLPlugin)
endif(3PROXY_PLUGIN_SSL)
if(3PROXY_PLUGIN_STRINGS)
add_subdirectory(StringsPlugin)
endif(3PROXY_PLUGIN_STRINGS)
if(3PROXY_PLUGIN_TRAFFIC)
add_subdirectory(TrafficPlugin)
endif(3PROXY_PLUGIN_TRAFFIC)
if(3PROXY_PLUGIN_TRANSPARENT)
add_subdirectory(TransparentPlugin)
endif(3PROXY_PLUGIN_TRANSPARENT)
if(3PROXY_PLUGIN_U2C)
add_subdirectory(utf8tocp1251)
endif(3PROXY_PLUGIN_U2C)
if(3PROXY_PLUGIN_WINAUTH)
add_subdirectory(WindowsAuthentication)
endif(3PROXY_PLUGIN_WINAUTH)

View File

@ -0,0 +1,3 @@
set(FILE_PLUGIN_SOURCES FilePlugin.c)
add_library(FilePlugin SHARED ${FILE_PLUGIN_SOURCES})
set_target_properties(FilePlugin PROPERTIES PREFIX "")

View File

@ -0,0 +1,4 @@
set(LAST_FRIPPER_SOURCES lastFripper.c)
add_library(lastFripper SHARED ${LAST_FRIPPER_SOURCES})
set_target_properties(lastFripper PROPERTIES PREFIX "")

View File

@ -0,0 +1,15 @@
find_library(LDAP_LIBRARY
NAMES ldap
HINTS "${CMAKE_SOURCE_DIR}/lib"
)
add_library(ldapauth SHARED ldapauth.c)
target_include_directories(ldapauth PRIVATE ${CMAKE_SOURCE_DIR}/include/ldapwindev)
target_link_libraries(ldapauth PRIVATE ${LDAP_LIBRARY})
set_target_properties(ldapauth PROPERTIES PREFIX "")
add_executable(getldapuser WIN32 getldapuser.c)
target_include_directories(getldapuser PRIVATE ${CMAKE_SOURCE_DIR}/include/ldapwindev)
target_link_libraries(getldapuser PRIVATE ${LDAP_LIBRARY})

View File

@ -0,0 +1,27 @@
set(PCRE_PLUGIN_SOURCES
pcre_compile.c
pcre_config.c
pcre_dfa_exec.c
pcre_exec.c
pcre_fullinfo.c
pcre_get.c
pcre_globals.c
pcre_info.c
pcre_maketables.c
pcre_newline.c
pcre_ord2utf8.c
pcre_refcount.c
pcre_study.c
pcre_tables.c
pcre_try_flipped.c
pcre_ucp_searchfuncs.c
pcre_valid_utf8.c
pcre_version.c
pcre_xclass.c
pcre_dftables.c
pcre_plugin.c
pcreposix.c)
add_library(PCREPlugin SHARED ${PCRE_PLUGIN_SOURCES})
set_target_properties(PCREPlugin PROPERTIES PREFIX "")

View File

@ -0,0 +1,10 @@
find_library (PAM_LIBRARY
NAMES pam libpam
)
set(PAMAUTH_PLUGIN_SOURCES pamauth.c)
add_library(pamauth SHARED ${PAMAUTH_PLUGIN_SOURCES })
target_link_libraries(pamauth PRIVATE ${PAM_LIBRARY})
set_target_properties(pamauth PROPERTIES PREFIX "")

View File

@ -0,0 +1,22 @@
set(SSL_PLUGIN_SOURCES ssl_plugin.c my_ssl.c)
add_library(SSLPlugin SHARED ${SSL_PLUGIN_SOURCES})
target_include_directories (SSLPlugin PRIVATE ${CMAKE_SOURCE_DIR}/include)
set_target_properties(SSLPlugin PROPERTIES PREFIX "")
find_library(LEBEAY_LIBRARY
NAMES libeay32 libeay32mt
HINTS "${CMAKE_SOURCE_DIR}/lib"
)
find_library(SSLEAY_LIBRARY
NAMES ssleay32 ssleay32mt
HINTS "${CMAKE_SOURCE_DIR}/lib"
)
target_link_libraries (SSLPlugin PRIVATE
ws2_32.lib
${SSLEAY_LIBRARY}
${LEBEAY_LIBRARY})

View File

@ -0,0 +1,4 @@
set(STRINGS_PLUGIN_SOURCES StringsPlugin.c)
add_library(StringsPlugin SHARED ${STRINGS_PLUGIN_SOURCES})
set_target_properties(StringsPlugin PROPERTIES PREFIX "")

View File

@ -0,0 +1,3 @@
set(TRAFFIC_PLUGIN_SOURCES TrafficPlugin.c)
add_library(TrafficPlugin SHARED ${TRAFFIC_PLUGIN_SOURCES})
set_target_properties(TrafficPlugin PROPERTIES PREFIX "")

View File

@ -0,0 +1,3 @@
set(TRANSPARENT_PLUGIN_SOURCES transparent_plugin.c)
add_library(TransparentPlugin SHARED ${TRANSPARENT_PLUGIN_SOURCES})
set_target_properties(TransparentPlugin PROPERTIES PREFIX "")

View File

@ -0,0 +1,3 @@
set(WINDOWS_AUTHENTICATION_SOURCES WindowsAuthentication.c)
add_library(WindowsAuthentication SHARED ${WINDOWS_AUTHENTICATION_SOURCES})
set_target_properties(WindowsAuthentication PROPERTIES PREFIX "")

View File

@ -0,0 +1,3 @@
set(UTFCP_PLUGIN_SOURCES utf8tocp1251.c)
add_library(utf8tocp1251 SHARED ${UTFCP_PLUGIN_SOURCES})
set_target_properties(utf8tocp1251 PROPERTIES PREFIX "")