Skip to content

Commit 92abb2b

Browse files
authored
Refactor ssl backends (#391)
1 parent b531785 commit 92abb2b

21 files changed

Lines changed: 950 additions & 593 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ yasio-3.39.7
55
- Use `event->packet_view()` receive packet event
66
- No upack
77
- No deferred event
8+
2. Refactor ssl backends, add follow new option and channel kind
9+
10+
- `YOPT_S_SSL_CERT`: to specific ssl server `cert` and `private_key` files
11+
- `YCK_SSL_SERVER`: open a channel as ssl server, notes: require specific valid `cert` and `private_key` file with option `YOPT_S_SSL_CERT`
812

913

1014
yasio-3.39.6

CMakeLists.txt

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,33 @@ option(YASIO_BUILD_TESTS "Build yasio tests and examples" ON)
2121
option(YASIO_BUILD_LUA_EXAMPLE "Build yasio lua example" ON)
2222
option(YAISO_BUILD_NI "Build yasio with native interface for interop" OFF)
2323

24+
25+
# --- The C/C++ standard
26+
if (NOT MSVC)
27+
if (NOT CXX_STD)
28+
set(CXX_STD 11)
29+
endif()
30+
set(CMAKE_CXX_STANDARD ${CXX_STD})
31+
else()
32+
if (CXX_STD)
33+
set(CMAKE_CXX_STANDARD ${CXX_STD})
34+
else()
35+
include(CheckCXXCompilerFlag)
36+
check_cxx_compiler_flag("/std:c++latest" YASIO_HAVE_CXX_LATEST)
37+
if (YASIO_HAVE_CXX_LATEST)
38+
set(CXX_STD latest)
39+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++latest")
40+
else()
41+
set(CXX_STD 11)
42+
endif()
43+
endif()
44+
endif()
45+
46+
set (CMAKE_C_STANDARD 99)
47+
set (CMAKE_C_STANDARD_REQUIRED ON)
48+
49+
message(STATUS "Building yasio with C++${CXX_STD} support")
50+
2451
function(yasio_config_target_outdir target)
2552
set_target_properties(${target} PROPERTIES
2653
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
@@ -60,23 +87,6 @@ if (NOT DEFINED YASIO_HAVE_HALF_FLOAT)
6087
set(YASIO_HAVE_HALF_FLOAT ON)
6188
endif()
6289

63-
# --- The C++ standard
64-
if (NOT MSVC)
65-
if (NOT CXX_STD)
66-
set(CXX_STD 11)
67-
endif()
68-
set(CMAKE_CXX_STANDARD ${CXX_STD})
69-
else()
70-
if (CXX_STD)
71-
set(CMAKE_CXX_STANDARD ${CXX_STD})
72-
else()
73-
set(CXX_STD latest)
74-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++latest")
75-
endif()
76-
endif()
77-
78-
message(STATUS "Building yasio with C++${CXX_STD} support")
79-
8090
# The compiler flags
8191
if(BUILD_SHARED_LIBS AND LINUX)
8292
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC")
@@ -129,7 +139,7 @@ if (YASIO_HAVE_CARES)
129139
endif()
130140

131141
### The yasio core library project
132-
file(GLOB_RECURSE YASIO_CORE yasio/detail/*.hpp)
142+
file(GLOB_RECURSE YASIO_CORE yasio/detail/*.hpp;yasio/detail/*.inl)
133143
list (APPEND YASIO_CORE
134144
yasio/compiler/feature_test.hpp
135145
yasio/cxx17/memory.hpp
@@ -310,9 +320,8 @@ macro(yasio_config_app_depends target_name)
310320
endmacro()
311321

312322
# checking build system have openssl
313-
if(OPENSSL_INCLUDE_DIR)
314-
set(YASIO_SSL_BACKEND 1)
315-
target_include_directories(${yasio_target_name} PRIVATE "${OPENSSL_INCLUDE_DIR}")
323+
if(OPENSSL_INCLUDE_DIR AND (YASIO_SSL_BACKEND EQUAL 1))
324+
target_include_directories(${yasio_target_name} PRIVATE "${OPENSSL_INCLUDE_DIR}")
316325
endif()
317326

318327
# checking build system have c-ares

certs/server.crt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIID/TCCAuWgAwIBAgIUVNVLYleT3wxWtQJRzUeCVa8ynAgwDQYJKoZIhvcNAQEL
3+
BQAwgYwxCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAlHdWFuZ2RvbmcxETAPBgNVBAcM
4+
CFNoZW56aGVuMREwDwYDVQQKDAhTaW1kc29mdDETMBEGA1UECwwKTmV0d29ya2lu
5+
ZzEOMAwGA1UEAwwFeWFzaW8xHjAcBgkqhkiG9w0BCQEWD2hhbHg5OUBsaXZlLmNv
6+
bTAgFw0yMzAxMDIxMTA4MThaGA8yMTIyMDgzMTExMDgxOFowgYwxCzAJBgNVBAYT
7+
AkNOMRIwEAYDVQQIDAlHdWFuZ2RvbmcxETAPBgNVBAcMCFNoZW56aGVuMREwDwYD
8+
VQQKDAhTaW1kc29mdDETMBEGA1UECwwKTmV0d29ya2luZzEOMAwGA1UEAwwFeWFz
9+
aW8xHjAcBgkqhkiG9w0BCQEWD2hhbHg5OUBsaXZlLmNvbTCCASIwDQYJKoZIhvcN
10+
AQEBBQADggEPADCCAQoCggEBALCpQ2EhtNIg6oGWyADWQC+9bjTosZaeZusHfKq2
11+
AWodceSdFau5spSZgCIi1wwCX20rORS1c0+sz0f8edlcpIQSg2h36ZnzF0fgHZLt
12+
ZdMgTEtG2CaU6EUFHgrOSuaPz5R1nJHtf+6cFJo185/KRUQLwv/nBIfPSKfjKTHZ
13+
YORl3stQkKvY4Ndk9NhJC72o4ExdBq3tRw9WCpEvdCOxpx57LNncWisokWWsK7kJ
14+
FwyVf6Jt2kR8WhQIe+H46w5FTc6UZ5tGvBIQjYtHzTrGCwtVHAIvw+eb9Tq2y7IK
15+
iBDdYTvM1y3Y4dWKziHdeuxkAPXGFlLOEU4XNnL3Yr0cXzUCAwEAAaNTMFEwHQYD
16+
VR0OBBYEFH05YvqBGbKKcMfmQtrXRzxrWHuNMB8GA1UdIwQYMBaAFH05YvqBGbKK
17+
cMfmQtrXRzxrWHuNMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEB
18+
ADtDGcqcgvisiiDN6/P5EEtoyAteFJb1zvbByWI2fdWLKGUa7D9qtBuqAZFix7UN
19+
NPZjOuWNhlGh+cQ/jZZA60CqaWmAxWBK+VWw9VKHiLtJIJv0ce7+iiGPpe78M6Ii
20+
ObN3kV3MTLVSRgo7mmFLvECv+AFCZV6D/JYISkLtEHf2Qj8s3xwZ5tD+1SP3TyAm
21+
sHzmkqkkKLwtrf3lRk3PimO6QDS61PiNd846zFiHUlnl6UcmH3mOjibt0d021nwb
22+
XAPs3twYPn6/FMtcTwNdXSFsCfmXQsBatv3u6nanXR43hSRbUBNAyKOe8HuxoUgH
23+
0fGct/3yRPGynNr1QXYqT/o=
24+
-----END CERTIFICATE-----

certs/server.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCwqUNhIbTSIOqB
3+
lsgA1kAvvW406LGWnmbrB3yqtgFqHXHknRWrubKUmYAiItcMAl9tKzkUtXNPrM9H
4+
/HnZXKSEEoNod+mZ8xdH4B2S7WXTIExLRtgmlOhFBR4Kzkrmj8+UdZyR7X/unBSa
5+
NfOfykVEC8L/5wSHz0in4ykx2WDkZd7LUJCr2ODXZPTYSQu9qOBMXQat7UcPVgqR
6+
L3QjsaceeyzZ3ForKJFlrCu5CRcMlX+ibdpEfFoUCHvh+OsORU3OlGebRrwSEI2L
7+
R806xgsLVRwCL8Pnm/U6tsuyCogQ3WE7zNct2OHVis4h3XrsZAD1xhZSzhFOFzZy
8+
92K9HF81AgMBAAECggEAA+GBv/+ma0PkIvHMvv7RWrshLPIXslumwyXfPmH1Mf9M
9+
Kzk96qHY2i7azOUtU6Z/aHSLe51ERTr0oaB/IDJvYsiEMMsKuUbI+0k80/CeA79V
10+
m3LiHUtvkkAEh4H0qGtsWx/9vNODs6zIY6dyDKspvBgXMf5Bgl2yhFbOC3DfWy47
11+
yvq/Uf1FL5+YfM+aY31lYSD25guesKmVkVdTWTTbOyI0N84BrRhdW2kUFLw88y7D
12+
tsHaRGfmXFfBxQT6akODSfJdK9cbNxHkg+KUrHbWByeWHcH0rqO0FLUBpuIIQG4z
13+
lRcOh/7o59G1TiV7+f+umqvLE3+OGnjx5ei76uSSGQKBgQDiUmHpYLyyJ0P8ELfh
14+
ey4NeUnerZ1RVINOJ8jk0h+KABve0eqKi1+C+y1YqmL7EFf/lj1FqnHEyZ4Smzfs
15+
jdZ7IUoWRAvZVgfoedHFy6ejcy6FcWAeJQtF1f3m2bXocwyFF14FGx+xcPGiIz/K
16+
qdNrDDoRPYFX+Xj3EWZhYtr+qwKBgQDH08ZdFy9uY66+yn9fqc1TnsmWa9+NiCyE
17+
G+si9hZuNAN3ITR0y14iugcEn70G5zUcTaa4X1VU4RQgYywwX5NhLQWVr65GyVnA
18+
IqQcOu3MsgcRK4vmEsQ5dK86aw6eD5Yg53TU/CoRK+TSZxSZInd7ooDjUrX1YCrb
19+
c2NDDqyZnwKBgG8ymvjXlt7RfA21CSO4KgBkv26xTsJPC9Syp3oF44kiVI8+BEbe
20+
A6ePUdBmpwtEFHh3kNNR02Qky43IxclsRx1oVcZq2IeIRYprkC3myg784Laf5eHp
21+
wYgmhAGQplf3bwdVW9SWZxP/sjk/qHAi0MWf1Ef0OEDJSi3aVrsynvbRAoGAWI91
22+
yUn+Pmk1R99M5iPGGPo1k1HJqNsiB4asBjmUJVEt+/0eV2jOFovlkloNF2MeuaV8
23+
bxfpJI4AMn5hVir1kUq3v+g1T6/q8+kmXFCNlXuNAEIRZW0JxAD/q99IgiqcOYb6
24+
023SYvvWFJ2Ulm2dEJErmBPPCqmNNOcFpfF58zcCgYEAz0f3+Zg3I8pUsfzg167G
25+
72knEKT8CJD6D5Y3oqDgQAXDtrqb66EHljWQXcg+thdYBWf7srN11YgXtF0J4P1O
26+
QD/3IAqA23eUNGVYk5sLtK0xfMHYQc9XKC2FtNAkbN0aRIO5h/KJFYe0WSPRZh5G
27+
wcIvONfPXh3WZN37TcNkvMI=
28+
-----END PRIVATE KEY-----

ci/build.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Install latest cmake version for appveyor ci
22
if (!($env:GITHUB_CI -eq "true")) {
3-
$cmake_ver="3.22.2"
3+
$cmake_ver="3.25.1"
44
curl "https://github.com/Kitware/CMake/releases/download/v$cmake_ver/cmake-$cmake_ver-windows-x86_64.zip" -o "cmake-$cmake_ver-windows-x86_64.zip"
55
Expand-Archive -Path cmake-$cmake_ver-windows-x86_64.zip -DestinationPath .\
66
$cmake_bin = (Resolve-Path .\cmake-$cmake_ver-windows-x86_64\bin).Path

examples/ftp_server

tests/speed/main.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ using namespace yasio;
1818
Test detail, please see: https://github.com/yasio/yasio/blob/master/benchmark.md
1919
*/
2020

21+
#define SPEEDTEST_VIA_SSL 0
22+
2123
#if defined(YASIO_ENABLE_UDS) && YASIO__HAS_UDS
2224
# define SPEEDTEST_VIA_UDS 1 // Now only support TCP/SOCK_STREAM
2325
#else
@@ -28,10 +30,17 @@ Test detail, please see: https://github.com/yasio/yasio/blob/master/benchmark.md
2830
#define SPEEDTEST_PROTO_UDP 2
2931
#define SPEEDTEST_PROTO_KCP 3
3032

31-
#define SPEEDTEST_TRANSFER_PROTOCOL SPEEDTEST_PROTO_KCP
33+
#if SPEEDTEST_VIA_SSL
34+
#define SPEEDTEST_SSL_MASK YCM_SSL
35+
#else
36+
# define SPEEDTEST_SSL_MASK 0
37+
#endif
38+
39+
40+
#define SPEEDTEST_TRANSFER_PROTOCOL SPEEDTEST_PROTO_TCP
3241

3342
#if SPEEDTEST_TRANSFER_PROTOCOL == SPEEDTEST_PROTO_TCP
34-
# define SPEEDTEST_DEFAULT_KIND YCK_TCP_CLIENT
43+
# define SPEEDTEST_DEFAULT_KIND YCK_TCP_CLIENT | SPEEDTEST_SSL_MASK
3544
#elif SPEEDTEST_TRANSFER_PROTOCOL == SPEEDTEST_PROTO_UDP
3645
# define SPEEDTEST_DEFAULT_KIND YCK_UDP_CLIENT
3746
#elif SPEEDTEST_TRANSFER_PROTOCOL == SPEEDTEST_PROTO_KCP
@@ -48,7 +57,7 @@ enum
4857
RECEIVER_PORT = 3001,
4958
SENDER_PORT = RECEIVER_PORT,
5059
# if !SPEEDTEST_VIA_UDS
51-
RECEIVER_CHANNEL_KIND = YCK_TCP_SERVER,
60+
RECEIVER_CHANNEL_KIND = YCK_TCP_SERVER | SPEEDTEST_SSL_MASK,
5261
SENDER_CHANNEL_KIND = SPEEDTEST_DEFAULT_KIND,
5362
# else
5463
RECEIVER_CHANNEL_KIND = YCK_TCP_SERVER | YCM_UDS,

tests/ssl/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void yasioTest()
2121
deadline_timer udp_heartbeat;
2222
int total_bytes_transferred = 0;
2323

24-
int max_request_count = 3;
24+
int max_request_count = 1;
2525

2626
service.set_option(YOPT_S_FORWARD_EVENT, 1);
2727

thirdparty

yasio/detail/config.hpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,6 @@ SOFTWARE.
206206
// The default max listen count of tcp server.
207207
#define YASIO_SOMAXCONN 19
208208

209-
// The max wait duration in microseconds when io_service nothing to do.
210-
#define YASIO_MAX_WAIT_DURATION (5LL * 60LL * 1000LL * 1000LL)
211-
212-
// The min wait duration in microseconds when io_service have outstanding work to do.
213-
// !!!Only affects Single Core CPU
214-
#define YASIO_MIN_WAIT_DURATION 10LL
215-
216209
// The default ttl of multicast
217210
#define YASIO_DEFAULT_MULTICAST_TTL (int)128
218211

@@ -238,4 +231,7 @@ SOFTWARE.
238231
#define YASIO_SSL_PIN "yasio_ssl_client"
239232
#define YASIO_SSL_PIN_LEN (sizeof(YASIO_SSL_PIN) - 1)
240233

234+
#define YASIO_SSL_PON "yasio_ssl_server"
235+
#define YASIO_SSL_PON_LEN (sizeof(YASIO_SSL_PON) - 1)
236+
241237
#endif

0 commit comments

Comments
 (0)