Skip to content

Commit cfc9b62

Browse files
First release (1.0)
1 parent 1eee7e1 commit cfc9b62

File tree

152 files changed

+24708
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+24708
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build
2+
build64

CMakeLists.txt

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
cmake_minimum_required(VERSION 2.8)
2+
set(project_name "SSF")
3+
project(${project_name})
4+
5+
set(SSF_VERSION_MAJOR 1)
6+
set(SSF_VERSION_MINOR 0)
7+
set(SSF_VERSION_BOUNCE 1)
8+
set(SSF_VERSION_TRANSPORT 1)
9+
10+
# --- Set client/server security
11+
if(SSF_SECURITY STREQUAL "FORCE_TCP_ONLY")
12+
message("** SSF_SECURITY is FORCE_TCP_ONLY")
13+
add_definitions(-DTCP_ONLY_LINK)
14+
set(SSF_VERSION_SECURITY 0)
15+
else()
16+
message("** SSF_SECURITY is STANDARD")
17+
add_definitions(-DTLS_OVER_TCP_LINK)
18+
set(SSF_VERSION_SECURITY 1)
19+
endif()
20+
21+
# --- Include CMake build components and CMake common files
22+
add_subdirectory(./cmake)
23+
include(HelpersIdeTarget)
24+
25+
# --- Project variables
26+
set(project_BINARY_DIR "${${project_name}_BINARY_DIR}")
27+
set(project_ROOT_DIR "${${project_name}_SOURCE_DIR}")
28+
set(project_SRC_DIR "${project_ROOT_DIR}/src")
29+
set(project_IMG_DIR "${project_ROOT_DIR}/img")
30+
set(project_LIB_DIR "${project_SRC_DIR}/lib")
31+
set(project_THIRDPARTY_DIR "${project_ROOT_DIR}/third_party")
32+
33+
# --- Project files declaration
34+
set(VERSIONS_FILES
35+
"${project_BINARY_DIR}/versions.h")
36+
37+
set(CORE_INIT_PACKETS
38+
"${project_SRC_DIR}/core/transport_virtual_layer_policies/transport_protocol_policy.h"
39+
"${project_SRC_DIR}/core/transport_virtual_layer_policies/init_packets/ssf_reply.h"
40+
"${project_SRC_DIR}/core/transport_virtual_layer_policies/init_packets/ssf_reply.cpp"
41+
"${project_SRC_DIR}/core/transport_virtual_layer_policies/init_packets/ssf_request.h"
42+
"${project_SRC_DIR}/core/transport_virtual_layer_policies/init_packets/ssf_request.cpp")
43+
44+
set(CORE_NETWORK_VIRTUAL_LAYER_POLICY
45+
"${project_SRC_DIR}/core/network_virtual_layer_policies/bounce_protocol_policy.h"
46+
"${project_SRC_DIR}/core/network_virtual_layer_policies/link_policies/ssl_policy.h"
47+
"${project_SRC_DIR}/core/network_virtual_layer_policies/link_policies/tcp_policy.h"
48+
"${project_SRC_DIR}/core/network_virtual_layer_policies/link_authentication_policies/null_link_authentication_policy.h")
49+
50+
set(CORE_FACTORIES_FILES
51+
"${project_SRC_DIR}/core/factories/command_factory.h"
52+
"${project_SRC_DIR}/core/factory_manager/service_factory_manager.h"
53+
"${project_SRC_DIR}/core/factories/service_factory.h"
54+
"${project_SRC_DIR}/core/factories/service_option_factory.h"
55+
"${project_SRC_DIR}/core/service_manager/service_manager.h")
56+
57+
set(COMMON_BOOST_HEADER_FILES
58+
"${project_SRC_DIR}/common/boost/fiber/detail/fiber_id.hpp"
59+
"${project_SRC_DIR}/common/boost/fiber/detail/fiber_buffer.hpp"
60+
"${project_SRC_DIR}/common/boost/fiber/detail/fiber_header.hpp"
61+
"${project_SRC_DIR}/common/boost/fiber/stream_fiber.hpp"
62+
"${project_SRC_DIR}/common/boost/fiber/basic_endpoint.hpp"
63+
"${project_SRC_DIR}/common/boost/fiber/stream_fiber_service.hpp"
64+
"${project_SRC_DIR}/common/boost/fiber/detail/basic_fiber_impl.hpp"
65+
"${project_SRC_DIR}/common/boost/fiber/basic_fiber_demux.hpp"
66+
"${project_SRC_DIR}/common/boost/fiber/basic_fiber_demux_service.hpp"
67+
"${project_SRC_DIR}/common/boost/fiber/basic_fiber_demux_service.ipp"
68+
"${project_SRC_DIR}/common/boost/fiber/detail/basic_fiber_demux_impl.hpp"
69+
"${project_SRC_DIR}/common/boost/fiber/detail/io_fiber_accept_op.hpp"
70+
"${project_SRC_DIR}/common/boost/fiber/detail/io_fiber_read_op.hpp"
71+
"${project_SRC_DIR}/common/boost/fiber/detail/io_fiber_dgr_read_op.hpp"
72+
"${project_SRC_DIR}/common/boost/fiber/detail/io_ssl_read_op.hpp"
73+
"${project_SRC_DIR}/common/boost/fiber/detail/io_operation.hpp"
74+
"${project_SRC_DIR}/common/boost/fiber/fiber_acceptor_service.hpp"
75+
"${project_SRC_DIR}/common/boost/fiber/datagram_fiber_service.hpp"
76+
"${project_SRC_DIR}/common/boost/fiber/datagram_fiber.hpp")
77+
78+
set(COMMON_COMMAND_LINE_FILES
79+
"${project_SRC_DIR}/core/command_line/command_line.h"
80+
"${project_SRC_DIR}/core/command_line/command_line.cpp")
81+
82+
set(COMMON_CONFIG_FILES
83+
"${project_SRC_DIR}/common/config/config.h"
84+
"${project_SRC_DIR}/common/config/config.cpp")
85+
86+
set(COMMON_ERROR_FILES
87+
"${project_SRC_DIR}/common/error/error.h"
88+
"${project_SRC_DIR}/common/error/error.cpp")
89+
90+
set(COMMON_NETWORK_HEADER_FILES
91+
"${project_SRC_DIR}/common/network/base_session.h"
92+
"${project_SRC_DIR}/common/network/datagram_link.h"
93+
"${project_SRC_DIR}/common/network/datagram_link_operator.h"
94+
"${project_SRC_DIR}/common/network/manager.h"
95+
"${project_SRC_DIR}/common/network/network_policy_traits.h"
96+
"${project_SRC_DIR}/common/network/session_forwarder.h"
97+
"${project_SRC_DIR}/common/network/socket_link.h")
98+
99+
set(SERVICES_ADMIN_SERVICE_FILES
100+
"${project_SRC_DIR}/services/initialisation.h"
101+
"${project_SRC_DIR}/services/base_service.h"
102+
"${project_SRC_DIR}/services/admin/admin.h"
103+
"${project_SRC_DIR}/services/admin/admin_command.h"
104+
"${project_SRC_DIR}/services/admin/admin.ipp"
105+
"${project_SRC_DIR}/services/admin/requests/create_service_request.h"
106+
"${project_SRC_DIR}/services/admin/requests/service_status.h"
107+
"${project_SRC_DIR}/services/admin/requests/stop_service_request.h")
108+
109+
set(SERVICES_SOCKS_FILES
110+
"${project_SRC_DIR}/services/socks/socks_server.h"
111+
"${project_SRC_DIR}/services/socks/socks_version.h"
112+
"${project_SRC_DIR}/services/socks/v4/reply.cpp"
113+
"${project_SRC_DIR}/services/socks/v4/reply.h"
114+
"${project_SRC_DIR}/services/socks/v4/request.cpp"
115+
"${project_SRC_DIR}/services/socks/v4/request.h"
116+
"${project_SRC_DIR}/services/socks/v4/session.h"
117+
"${project_SRC_DIR}/services/socks/v4/session.ipp"
118+
"${project_SRC_DIR}/services/socks/v5/reply.cpp"
119+
"${project_SRC_DIR}/services/socks/v5/reply.h"
120+
"${project_SRC_DIR}/services/socks/v5/request.cpp"
121+
"${project_SRC_DIR}/services/socks/v5/request.h"
122+
"${project_SRC_DIR}/services/socks/v5/reply_auth.cpp"
123+
"${project_SRC_DIR}/services/socks/v5/reply_auth.h"
124+
"${project_SRC_DIR}/services/socks/v5/request_auth.cpp"
125+
"${project_SRC_DIR}/services/socks/v5/request_auth.h"
126+
"${project_SRC_DIR}/services/socks/v5/session.h"
127+
"${project_SRC_DIR}/services/socks/v5/session.ipp")
128+
129+
set(SERVICES_USER_SERVICES_FILES
130+
"${project_SRC_DIR}/services/user_services/base_user_service.h"
131+
"${project_SRC_DIR}/services/user_services/port_forwarding.h"
132+
"${project_SRC_DIR}/services/user_services/remote_port_forwarding.h"
133+
"${project_SRC_DIR}/services/user_services/remote_socks.h"
134+
"${project_SRC_DIR}/services/user_services/socks.h"
135+
"${project_SRC_DIR}/services/user_services/udp_port_forwarding.h"
136+
"${project_SRC_DIR}/services/user_services/udp_remote_port_forwarding.h")
137+
138+
set(SERVICES_SOCKETS_TO_FIBERS_FILES
139+
"${project_SRC_DIR}/services/sockets_to_fibers/sockets_to_fibers.h"
140+
"${project_SRC_DIR}/services/sockets_to_fibers/sockets_to_fibers.ipp")
141+
142+
set(SERVICES_DATAGRAMS_TO_FIBERS_FILES
143+
"${project_SRC_DIR}/services/datagrams_to_fibers/datagrams_to_fibers.h"
144+
"${project_SRC_DIR}/services/datagrams_to_fibers/datagrams_to_fibers.ipp")
145+
146+
set(SERVICES_FIBERS_TO_SOCKETS_FILES
147+
"${project_SRC_DIR}/services/fibers_to_sockets/fibers_to_sockets.h"
148+
"${project_SRC_DIR}/services/fibers_to_sockets/fibers_to_sockets.ipp")
149+
150+
set(SERVICES_FIBERS_TO_DATAGRAMS_FILES
151+
"${project_SRC_DIR}/services/fibers_to_datagrams/fibers_to_datagrams.h"
152+
"${project_SRC_DIR}/services/fibers_to_datagrams/fibers_to_datagrams.ipp")
153+
154+
set(BOOST_ROOT
155+
"${project_THIRDPARTY_DIR}/boost" CACHE PATH "Path of boost library")
156+
message("** BOOST_ROOT: ${BOOST_ROOT}")
157+
158+
set(OPENSSL_ROOT_DIR
159+
"${project_THIRDPARTY_DIR}/openssl" CACHE PATH "Path of openssl library")
160+
message("** OPENSSL_ROOT_DIR: ${OPENSSL_ROOT_DIR}")
161+
162+
# --- Include platform specific CMakeList
163+
164+
# ---- Icon parameters
165+
set(ICON_RC "")
166+
set(EXEC_FLAG "")
167+
# ---- Third party parameters
168+
set(BOOST_PLATFORM_FLAGS "")
169+
set(BOOST_PLATFORM_COMPONENTS "")
170+
set(OPENSSL_PLATFORM_COMPONENTS "")
171+
172+
if (WIN32)
173+
include(./cmake-ms/CMakeLists.txt)
174+
elseif (UNIX)
175+
include(./cmake-unix/CMakeLists.txt)
176+
endif ()
177+
178+
# --- Define boost version if not set
179+
if(NOT DEP_BOOST_VERSION)
180+
set(DEP_BOOST_VERSION 1.56.0)
181+
endif()
182+
183+
# --- Setup Boost dependencies
184+
set(Boost_USE_STATIC_LIBS ON)
185+
set(Boost_USE_MULTITHREADED ON)
186+
set(Boost_USE_STATIC_RUNTIME ON)
187+
188+
# --- Boost components
189+
find_package(
190+
Boost REQUIRED
191+
FLAGS
192+
STATIC
193+
${BOOST_PLATFORM_FLAGS}
194+
WITH_COMPONENTS
195+
system
196+
serialization
197+
program_options
198+
date_time
199+
filesystem
200+
log
201+
regex
202+
thread
203+
chrono
204+
${BOOST_PLATFORM_COMPONENTS}
205+
)
206+
207+
# --- OpenSSL components
208+
find_package(
209+
OpenSSL REQUIRED
210+
FLAGS
211+
STATIC
212+
${OPENSSL_PLATFORM_FLAGS}
213+
)
214+
215+
# --- Setup version.h file
216+
set(SSF_VERSION_BOOST ${Boost_VERSION})
217+
set(SSF_VERSION_OPENSSL ${OpenSSL_VERSION})
218+
219+
configure_file(${project_SRC_DIR}/versions.h.in ${project_BINARY_DIR}/versions.h)
220+
include_directories(${project_BINARY_DIR})
221+
222+
# --- Include source directory
223+
include_directories(${project_SRC_DIR})
224+
225+
set (BUILD_UNIT_TESTS ON)
226+
if (BUILD_UNIT_TESTS)
227+
include(GTest)
228+
229+
set(GTEST_ROOT_DIR
230+
"${project_THIRDPARTY_DIR}/gtest" CACHE PATH "Path of gtest library")
231+
232+
# --- Extract GTest archive in build directory
233+
gtest_unpack_archive()
234+
235+
enable_testing()
236+
237+
# --- Add GTest project
238+
add_subdirectory(${GTEST_ROOT_DIR})
239+
240+
# --- Add src test
241+
add_subdirectory("${project_SRC_DIR}/tests")
242+
243+
# Group all tests in one directory
244+
project_group(
245+
"Unit tests"
246+
load_config_tests
247+
fiber_asio_tests
248+
ssf_client_server_tests
249+
ssf_client_server_cipher_suites_tests
250+
socks_tests
251+
remote_socks_tests
252+
stream_forward_tests
253+
remote_stream_forward_tests
254+
udp_forward_tests
255+
remote_udp_forward_tests
256+
bouncing_tests
257+
)
258+
endif (BUILD_UNIT_TESTS)
259+
260+
add_subdirectory("${project_SRC_DIR}/core")

LICENSE.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Copyright (c) 2015 SSF
2+
3+
This software is using:
4+
* Boost project released with Boost Software License 1.0
5+
* OpenSSL project released with OpenSSL License and SSLeay License
6+
* Google Test project released with BSD 3-Clause license
7+
* CMake modules project released with Boost Software License 1.0
8+
9+
Permission is hereby granted, free of charge, to any person obtaining a copy
10+
of this software and associated documentation files (the "Software"), to deal
11+
in the Software without restriction, including without limitation the rights
12+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13+
copies of the Software, and to permit persons to whom the Software is
14+
furnished to do so, subject to the following conditions:
15+
16+
The above copyright notice and this permission notice shall be included in
17+
all copies or substantial portions of the Software.
18+
19+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25+
THE SOFTWARE.

0 commit comments

Comments
 (0)