调整目录结构,增加RPM打包功能
* 调整目录结构,原conf目录分拆为conf和resource目录。其中,conf目录在软件更新时不会更新,resource则更新; * 增加RPM打包功能,利用CI发布软件的RPM,对应调整GitLAB-CI脚本。
This commit is contained in:
@@ -1,8 +1,54 @@
|
||||
variables:
|
||||
GIT_STRATEGY: "clone"
|
||||
|
||||
stages:
|
||||
- build
|
||||
- package
|
||||
|
||||
build:
|
||||
stage: build
|
||||
before_script:
|
||||
- mkdir -p /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_NAMESPACE/
|
||||
- ln -s $CI_PROJECT_DIR /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_PATH
|
||||
- cd /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX/$CI_PROJECT_PATH
|
||||
|
||||
.build_by_travis:
|
||||
script:
|
||||
- chmod +x ./ci/travis.sh
|
||||
- ./ci/travis.sh
|
||||
- chmod +x ./ci/travis.sh
|
||||
- ./ci/travis.sh
|
||||
|
||||
build_debug:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_TYPE: Debug
|
||||
extends: .build_by_travis
|
||||
|
||||
build_release:
|
||||
stage: build
|
||||
variables:
|
||||
BUILD_TYPE: RelWithDebInfo
|
||||
extends: .build_by_travis
|
||||
|
||||
package_debug:
|
||||
stage: package
|
||||
variables:
|
||||
BUILD_TYPE: Debug
|
||||
PACKAGE: 1
|
||||
extends: .build_by_travis
|
||||
artifacts:
|
||||
name: "tfe-install-$CI_COMMIT_REF_NAME-debug"
|
||||
paths:
|
||||
- build/*.rpm
|
||||
only:
|
||||
- tags
|
||||
|
||||
package_release:
|
||||
stage: package
|
||||
variables:
|
||||
BUILD_TYPE: RelWithDebInfo
|
||||
PACKAGE: 1
|
||||
extends: .build_by_travis
|
||||
artifacts:
|
||||
name: "tfe-install-$CI_COMMIT_REF_NAME-release"
|
||||
paths:
|
||||
- build/*.rpm
|
||||
only:
|
||||
- tags
|
||||
|
||||
@@ -3,18 +3,62 @@ project(tfe)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
|
||||
include(Version)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
include(Package)
|
||||
|
||||
add_definitions(-D_GNU_SOURCE)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
|
||||
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -Wall -fsanitize=address -fno-omit-frame-pointer")
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE -Wall -fsanitize=address -fno-omit-frame-pointer")
|
||||
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE RelWithDebInfo)
|
||||
endif()
|
||||
|
||||
# It is not a legal location.
|
||||
# Consider to the convention, we install the binary tree in /home
|
||||
if(NOT CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX /home/mesasoft/tfe)
|
||||
endif()
|
||||
|
||||
# Global compile options
|
||||
option(ENABLE_PIC "Generate position independent code (necessary for shared libraries)" TRUE)
|
||||
option(ENABLE_WARNING_ALL "Enable all optional warnings which are desirable for normal code" TRUE)
|
||||
option(ENABLE_SANITIZE_ADDRESS "Enable AddressSanitizer" FALSE)
|
||||
option(ENABLE_SANITIZE_THREAD "Enable ThreadSanitizer" FALSE)
|
||||
|
||||
# Plugins
|
||||
option(ENABLE_PLUGIN_HTTP "Enable HTTP support" TRUE)
|
||||
option(ENABLE_PLUGIN_DECRYPT_MIRRORING "Enable decrypt mirroring" FALSE)
|
||||
option(ENABLE_PLUGIN_PANGU_HTTP "Enable Pangu-HTTP business" TRUE)
|
||||
|
||||
if(ENABLE_PIC)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE 1)
|
||||
endif()
|
||||
|
||||
if(ENABLE_WARNING_ALL)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
endif()
|
||||
|
||||
if(ENABLE_SANITIZE_ADDRESS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
elseif(ENABLE_SANITIZE_THREAD)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fno-omit-frame-pointer")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan")
|
||||
endif()
|
||||
|
||||
if(ENABLE_SANITIZE_ADDRESS AND ENABLE_SANITIZE_THREAD)
|
||||
message(WARNING "Both ENABLE_SANITIZE_ADDRESS and ENABLE_SANITIZE_THREAD set, only ENABLE_SANITIZE_ADDRESS effected.")
|
||||
endif()
|
||||
|
||||
add_custom_target("install-program" COMMAND ${CMAKE_COMMAND} ARGS -DCOMPONENT=Program -P cmake_install.cmake)
|
||||
add_custom_target("install-profile" COMMAND ${CMAKE_COMMAND} ARGS -DCOMPONENT=Profile -P cmake_install.cmake)
|
||||
|
||||
enable_testing()
|
||||
add_subdirectory(conf)
|
||||
add_subdirectory(resource)
|
||||
add_subdirectory(vendor)
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(plugin)
|
||||
|
||||
@@ -32,10 +32,13 @@ env | sort
|
||||
|
||||
mkdir build || true
|
||||
cd build
|
||||
export BUILD_TYPE=Debug
|
||||
|
||||
cmake -DCMAKE_CXX_FLAGS=$CXX_FLAGS \
|
||||
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||
..
|
||||
make
|
||||
CTEST_OUTPUT_ON_FAILURE=1 make test
|
||||
|
||||
if [ -n "${PACKAGE}" ]; then
|
||||
make package
|
||||
fi
|
||||
|
||||
@@ -9,7 +9,7 @@ message(STATUS "Package: ${CPACK_PACKAGE_NAME}")
|
||||
set(CPACK_PACKAGE_VENDOR "MESASOFT")
|
||||
set(CPACK_PACKAGE_VERSION_MAJOR "${TFE_VERSION_MAJOR}")
|
||||
set(CPACK_PACKAGE_VERSION_MINOR "${TFE_VERSION_MINOR}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${TFE_VERSION_PATCH}.${TFE_VERSION_BUILD}")
|
||||
set(CPACK_PACKAGE_VERSION_PATCH "${TFE_VERSION_PATCH}.${TFE_DESCRIBE}")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
# RPM Build
|
||||
@@ -19,9 +19,9 @@ set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
set(CPACK_RPM_PACKAGE_AUTOREQPROV "no")
|
||||
set(CPACK_RPM_PACKAGE_RELEASE_DIST on)
|
||||
set(CPACK_RPM_DEBUGINFO_PACKAGE on)
|
||||
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PostInstall.in)
|
||||
set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PostUninstall.in)
|
||||
set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PreUninstall.in)
|
||||
#set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PostInstall.in)
|
||||
#set(CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PostUninstall.in)
|
||||
#set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/cmake/PreUninstall.in)
|
||||
|
||||
# Must uninstall the debug package before install release package
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
@@ -31,11 +31,7 @@ else()
|
||||
endif()
|
||||
|
||||
# setup %config(noreplace)
|
||||
set(CPACK_RPM_USER_FILELIST "/usr/lib/systemd/system/mrenv.service"
|
||||
"/usr/lib/systemd/system/mrzcpd.service"
|
||||
"/usr/lib/systemd/system/mrtunnat.service"
|
||||
"/usr/lib/systemd/system/mrmonit.service"
|
||||
"%config(noreplace) ${CMAKE_INSTALL_PREFIX}/etc/mrglobal.conf"
|
||||
"%config(noreplace) ${CMAKE_INSTALL_PREFIX}/etc/mrtunnat.conf"
|
||||
"%config(noreplace) /etc/sysconfig/mrzcpd")
|
||||
set(CPACK_RPM_USER_FILELIST "%config(noreplace) ${CMAKE_INSTALL_PREFIX}/conf/pangu/pangu_pxy.conf"
|
||||
"%config(noreplace) ${CMAKE_INSTALL_PREFIX}/conf/tfe/decrypt_mirror.conf"
|
||||
"%config(noreplace) ${CMAKE_INSTALL_PREFIX}/conf/tfe/tfe.conf")
|
||||
include(CPack)
|
||||
|
||||
@@ -37,6 +37,6 @@ set(TFE_GIT_VERSION "${TFE_VERSION_MAJOR}.${TFE_VERSION_MINOR}.${TFE_VERSION_PAT
|
||||
set(TFE_VAR_VERSION "${TFE_VERSION_MAJOR}_${TFE_VERSION_MINOR}_${TFE_VERSION_PATCH}_${TFE_DESCRIBE}")
|
||||
|
||||
# print information
|
||||
message(STATUS "TFE Version: ${TFE_GIT_VERSION}")
|
||||
message(STATUS "Welcome to Tango Frontend Engine, Version: ${TFE_GIT_VERSION}")
|
||||
add_definitions(-DTFE_GIT_VERSION=\"${TFE_GIT_VERSION}\")
|
||||
add_definitions(-DTFE_VAR_VERSION=${TFE_VAR_VERSION})
|
||||
|
||||
2
conf/CMakeLists.txt
Normal file
2
conf/CMakeLists.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
install(DIRECTORY tfe DESTINATION conf COMPONENT Profile)
|
||||
install(DIRECTORY pangu DESTINATION conf COMPONENT Profile)
|
||||
@@ -1,4 +1,6 @@
|
||||
add_executable(tfe src/key_keeper.cpp src/kni_acceptor.cpp src/ssl_stream.cpp src/ssl_sess_cache.cpp src/ssl_trusted_cert_storage.cpp src/ssl_utils.cc src/tcp_stream.cpp src/main.cpp src/proxy.cpp)
|
||||
add_executable(tfe src/key_keeper.cpp src/kni_acceptor.cpp src/ssl_stream.cpp
|
||||
src/ssl_sess_cache.cpp src/ssl_trusted_cert_storage.cpp
|
||||
src/ssl_utils.cc src/tcp_stream.cpp src/main.cpp src/proxy.cpp)
|
||||
|
||||
target_include_directories(tfe PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include/external)
|
||||
target_include_directories(tfe PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include/internal)
|
||||
@@ -18,11 +20,19 @@ target_link_libraries(tfe pthread dl
|
||||
MESA_htable wiredcfg
|
||||
MESA_field_stat)
|
||||
|
||||
target_link_libraries(tfe -Wl,--whole-archive http -Wl,--no-whole-archive)
|
||||
target_link_libraries(tfe -Wl,--whole-archive pangu-http -Wl,--no-whole-archive)
|
||||
#target_link_libraries(tfe -Wl,--whole-archive decrypt-mirroring -Wl,--no-whole-archive)
|
||||
if(ENABLE_PLUGIN_HTTP)
|
||||
target_link_libraries(tfe -Wl,--whole-archive http -Wl,--no-whole-archive)
|
||||
endif()
|
||||
|
||||
install(TARGETS tfe RUNTIME DESTINATION ./)
|
||||
if(ENABLE_PLUGIN_DECRYPT_MIRRORING)
|
||||
target_link_libraries(tfe -Wl,--whole-archive decrypt-mirroring -Wl,--no-whole-archive)
|
||||
endif()
|
||||
|
||||
if(ENABLE_PLUGIN_PANGU_HTTP)
|
||||
target_link_libraries(tfe -Wl,--whole-archive pangu-http -Wl,--no-whole-archive)
|
||||
endif()
|
||||
|
||||
install(TARGETS tfe RUNTIME DESTINATION bin COMPONENT Program)
|
||||
|
||||
### test_key_keeper
|
||||
add_executable(test_key_keeper test/test_key_keeper.cpp src/key_keeper.cpp src/ssl_sess_cache.cpp src/ssl_utils.cc )
|
||||
|
||||
@@ -54,11 +54,9 @@ struct http_session_private
|
||||
int release_lock;
|
||||
/* thread id */
|
||||
unsigned int thread_id;
|
||||
|
||||
/* SUSPEND COUNTER, ONLY FOR DEBUG AND LOG */
|
||||
#ifndef NDEBUG
|
||||
/* SUSPEND COUNTER, only for debug and log */
|
||||
int suspend_counter;
|
||||
#endif
|
||||
/* IN GC QUEUE, means the connection of session has destroyed */
|
||||
bool in_gc_queue;
|
||||
};
|
||||
|
||||
|
||||
3
resource/CMakeLists.txt
Normal file
3
resource/CMakeLists.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
install(DIRECTORY tfe DESTINATION resource COMPONENT Program)
|
||||
install(DIRECTORY misc DESTINATION resource COMPONENT Program)
|
||||
install(DIRECTORY pangu DESTINATION resource COMPONENT Program)
|
||||
2
script/r2_tfe
Normal file
2
script/r2_tfe
Normal file
@@ -0,0 +1,2 @@
|
||||
killall r3_tfe tfe
|
||||
./r3_tfe &> /dev/null &
|
||||
17
script/r3_tfe
Normal file
17
script/r3_tfe
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
while [ 1 ]; do
|
||||
count=`ls -l core.* |wc -l`
|
||||
echo $count
|
||||
if [ $count -lt 5 ]
|
||||
then
|
||||
echo "set unlimited"
|
||||
ulimit -c unlimited
|
||||
else
|
||||
ulimit -c 0
|
||||
fi
|
||||
|
||||
./tfe > log/screen.log 2>&1
|
||||
echo program crashed, restart at `date +"%w %Y/%m/%d, %H:%M:%S"` >> RESTART.log
|
||||
sleep 10
|
||||
done
|
||||
Reference in New Issue
Block a user