From 234416e2dbed38ee5339104c7ac84d06e5ca785e Mon Sep 17 00:00:00 2001 From: Alexander Belkov Date: Wed, 27 Dec 2017 17:52:50 +1000 Subject: [PATCH] Added CMake build system support Successfully builds 3proxy binary and relevant plugins on Windows with bobth MSVC2010 and mingw --- CMakeLists.txt | 118 ++++++++++++++++++ src/plugins/CMakeLists.txt | 44 +++++++ src/plugins/FilePlugin/CMakeLists.txt | 3 + src/plugins/LastFRipper/CMakeLists.txt | 4 + src/plugins/LdapPlugin/CMakeLists.txt | 15 +++ src/plugins/PCREPlugin/CMakeLists.txt | 27 ++++ src/plugins/PamAuth/CMakeLists.txt | 10 ++ src/plugins/SSLPlugin/CMakeLists.txt | 22 ++++ src/plugins/StringsPlugin/CMakeLists.txt | 4 + src/plugins/TrafficPlugin/CMakeLists.txt | 3 + src/plugins/TransparentPlugin/CMakeLists.txt | 3 + .../WindowsAuthentication/CMakeLists.txt | 3 + src/plugins/utf8tocp1251/CMakeLists.txt | 3 + 13 files changed, 259 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 src/plugins/CMakeLists.txt create mode 100644 src/plugins/FilePlugin/CMakeLists.txt create mode 100644 src/plugins/LastFRipper/CMakeLists.txt create mode 100644 src/plugins/LdapPlugin/CMakeLists.txt create mode 100644 src/plugins/PCREPlugin/CMakeLists.txt create mode 100644 src/plugins/PamAuth/CMakeLists.txt create mode 100644 src/plugins/SSLPlugin/CMakeLists.txt create mode 100644 src/plugins/StringsPlugin/CMakeLists.txt create mode 100644 src/plugins/TrafficPlugin/CMakeLists.txt create mode 100644 src/plugins/TransparentPlugin/CMakeLists.txt create mode 100644 src/plugins/WindowsAuthentication/CMakeLists.txt create mode 100644 src/plugins/utf8tocp1251/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..3a90ed8 --- /dev/null +++ b/CMakeLists.txt @@ -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) + diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt new file mode 100644 index 0000000..306c001 --- /dev/null +++ b/src/plugins/CMakeLists.txt @@ -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) + diff --git a/src/plugins/FilePlugin/CMakeLists.txt b/src/plugins/FilePlugin/CMakeLists.txt new file mode 100644 index 0000000..ee10f86 --- /dev/null +++ b/src/plugins/FilePlugin/CMakeLists.txt @@ -0,0 +1,3 @@ +set(FILE_PLUGIN_SOURCES FilePlugin.c) +add_library(FilePlugin SHARED ${FILE_PLUGIN_SOURCES}) +set_target_properties(FilePlugin PROPERTIES PREFIX "") diff --git a/src/plugins/LastFRipper/CMakeLists.txt b/src/plugins/LastFRipper/CMakeLists.txt new file mode 100644 index 0000000..d1f5fed --- /dev/null +++ b/src/plugins/LastFRipper/CMakeLists.txt @@ -0,0 +1,4 @@ +set(LAST_FRIPPER_SOURCES lastFripper.c) +add_library(lastFripper SHARED ${LAST_FRIPPER_SOURCES}) +set_target_properties(lastFripper PROPERTIES PREFIX "") + diff --git a/src/plugins/LdapPlugin/CMakeLists.txt b/src/plugins/LdapPlugin/CMakeLists.txt new file mode 100644 index 0000000..4702535 --- /dev/null +++ b/src/plugins/LdapPlugin/CMakeLists.txt @@ -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}) + diff --git a/src/plugins/PCREPlugin/CMakeLists.txt b/src/plugins/PCREPlugin/CMakeLists.txt new file mode 100644 index 0000000..2ad2ece --- /dev/null +++ b/src/plugins/PCREPlugin/CMakeLists.txt @@ -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 "") + diff --git a/src/plugins/PamAuth/CMakeLists.txt b/src/plugins/PamAuth/CMakeLists.txt new file mode 100644 index 0000000..77eb574 --- /dev/null +++ b/src/plugins/PamAuth/CMakeLists.txt @@ -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 "") + diff --git a/src/plugins/SSLPlugin/CMakeLists.txt b/src/plugins/SSLPlugin/CMakeLists.txt new file mode 100644 index 0000000..2614d4c --- /dev/null +++ b/src/plugins/SSLPlugin/CMakeLists.txt @@ -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}) + diff --git a/src/plugins/StringsPlugin/CMakeLists.txt b/src/plugins/StringsPlugin/CMakeLists.txt new file mode 100644 index 0000000..d6692d1 --- /dev/null +++ b/src/plugins/StringsPlugin/CMakeLists.txt @@ -0,0 +1,4 @@ +set(STRINGS_PLUGIN_SOURCES StringsPlugin.c) +add_library(StringsPlugin SHARED ${STRINGS_PLUGIN_SOURCES}) +set_target_properties(StringsPlugin PROPERTIES PREFIX "") + diff --git a/src/plugins/TrafficPlugin/CMakeLists.txt b/src/plugins/TrafficPlugin/CMakeLists.txt new file mode 100644 index 0000000..ebc970f --- /dev/null +++ b/src/plugins/TrafficPlugin/CMakeLists.txt @@ -0,0 +1,3 @@ +set(TRAFFIC_PLUGIN_SOURCES TrafficPlugin.c) +add_library(TrafficPlugin SHARED ${TRAFFIC_PLUGIN_SOURCES}) +set_target_properties(TrafficPlugin PROPERTIES PREFIX "") diff --git a/src/plugins/TransparentPlugin/CMakeLists.txt b/src/plugins/TransparentPlugin/CMakeLists.txt new file mode 100644 index 0000000..7c9d2c4 --- /dev/null +++ b/src/plugins/TransparentPlugin/CMakeLists.txt @@ -0,0 +1,3 @@ +set(TRANSPARENT_PLUGIN_SOURCES transparent_plugin.c) +add_library(TransparentPlugin SHARED ${TRANSPARENT_PLUGIN_SOURCES}) +set_target_properties(TransparentPlugin PROPERTIES PREFIX "") diff --git a/src/plugins/WindowsAuthentication/CMakeLists.txt b/src/plugins/WindowsAuthentication/CMakeLists.txt new file mode 100644 index 0000000..964293b --- /dev/null +++ b/src/plugins/WindowsAuthentication/CMakeLists.txt @@ -0,0 +1,3 @@ +set(WINDOWS_AUTHENTICATION_SOURCES WindowsAuthentication.c) +add_library(WindowsAuthentication SHARED ${WINDOWS_AUTHENTICATION_SOURCES}) +set_target_properties(WindowsAuthentication PROPERTIES PREFIX "") diff --git a/src/plugins/utf8tocp1251/CMakeLists.txt b/src/plugins/utf8tocp1251/CMakeLists.txt new file mode 100644 index 0000000..8ebc9df --- /dev/null +++ b/src/plugins/utf8tocp1251/CMakeLists.txt @@ -0,0 +1,3 @@ +set(UTFCP_PLUGIN_SOURCES utf8tocp1251.c) +add_library(utf8tocp1251 SHARED ${UTFCP_PLUGIN_SOURCES}) +set_target_properties(utf8tocp1251 PROPERTIES PREFIX "")