diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..3a083881 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.23.0 FATAL_ERROR) + +set(PROJECT AmneziaVPN) +project(${PROJECT}) + +add_subdirectory(service) diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt new file mode 100644 index 00000000..0cc6baac --- /dev/null +++ b/service/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.23.0 FATAL_ERROR) + +set(PROJECT service) +project(${PROJECT}) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +#if (qtservice-uselib) + include(common.cmake) +# add_subdirectory(buildlib) + add_subdirectory(server) +#endif() + +add_subdirectory(wireguard-service) diff --git a/service/common.cmake b/service/common.cmake new file mode 100644 index 00000000..2d497e05 --- /dev/null +++ b/service/common.cmake @@ -0,0 +1,18 @@ +set(QTSERVICE_LIBNAME QtSolutions_Service-head) +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + if(APPLE) + set(QTSERVICE_LIBNAME ${QTSERVICE_LIBNAME}_debug) + elseif(WIN32) + set(QTSERVICE_LIBNAME ${QTSERVICE_LIBNAME}_d) + endif() +endif() + +set(QTSERVICE_LIBDIR ${CMAKE_CURRENT_LIST_DIR}/lib) + +if(UNIX) + if(qtservice-uselib) + if(NOT qtservice-buildlib) + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH} ${QTSERVICE_LIBDIR}) + endif() + endif() +endif() diff --git a/service/server/CMakeLists.txt b/service/server/CMakeLists.txt new file mode 100644 index 00000000..1ccea5e8 --- /dev/null +++ b/service/server/CMakeLists.txt @@ -0,0 +1,79 @@ +cmake_minimum_required(VERSION 3.23.0 FATAL_ERROR) + +set(PROJECT AmneziaVPN-service) +project(${PROJECT}) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Qt6 REQUIRED COMPONENTS Core Network RemoteObjects Core5Compat) +qt_standard_project_setup() + +set(HEADERS + ${CMAKE_CURRENT_LIST_DIR}/../../client/utilities.h + ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc.h + ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipcserver.h + ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipcserverprocess.h + ${CMAKE_CURRENT_LIST_DIR}/localserver.h + ${CMAKE_CURRENT_LIST_DIR}/log.h + ${CMAKE_CURRENT_LIST_DIR}/router.h + ${CMAKE_CURRENT_LIST_DIR}/systemservice.h +) + +set(SOURCES + ${CMAKE_CURRENT_LIST_DIR}/../../client/utilities.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipcserver.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipcserverprocess.cpp + ${CMAKE_CURRENT_LIST_DIR}/localserver.cpp + ${CMAKE_CURRENT_LIST_DIR}/log.cpp + ${CMAKE_CURRENT_LIST_DIR}/main.cpp + ${CMAKE_CURRENT_LIST_DIR}/router.cpp + ${CMAKE_CURRENT_LIST_DIR}/systemservice.cpp +) + +if(WIN32) + set(HEADERS ${HEADERS} + ${CMAKE_CURRENT_LIST_DIR}/tapcontroller_win.h + ${CMAKE_CURRENT_LIST_DIR}/router_win.h + ) + + set(SOURCES ${SOURCES} + ${CMAKE_CURRENT_LIST_DIR}/tapcontroller_win.cpp + ${CMAKE_CURRENT_LIST_DIR}/router_win.cpp + ) + + set(LIBS + user32 + rasapi32 + shlwapi + iphlpapi + ws2_32 + iphlpapi + gdi32 + Advapi32 + Kernel32 + ) + + add_compile_definitions(_WINSOCKAPI_) +endif() +#TODO migrate macx +#TODO migrate linux + +include(${CMAKE_CURRENT_LIST_DIR}/../src/qtservice.cmake) + +message(${CMAKE_CURRENT_BINARY_DIR}) + +include_directories( + ${CMAKE_CURRENT_LIST_DIR}/../../client + ${CMAKE_CURRENT_LIST_DIR}/../../ipc + ${CMAKE_CURRENT_LIST_DIR} + ${CMAKE_CURRENT_BINARY_DIR} +) + +add_executable(${PROJECT} ${SOURCES} ${HEADERS}) +target_link_libraries(${PROJECT} PRIVATE Qt6::Core Qt6::Network Qt6::RemoteObjects Qt6::Core5Compat ${LIBS}) + +qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_interface.rep) +if(NOT IOS) + qt_add_repc_sources(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../../ipc/ipc_process_interface.rep) +endif() diff --git a/service/src/qtservice.cmake b/service/src/qtservice.cmake new file mode 100644 index 00000000..95559481 --- /dev/null +++ b/service/src/qtservice.cmake @@ -0,0 +1,24 @@ +include_directories(${CMAKE_CURRENT_LIST_DIR}) + +include(${CMAKE_CURRENT_LIST_DIR}/../common.cmake) + +if(NOT WIN32) + set(LIBS ${LIBS} Qt6::Network) +elseif(WIN32) + set(LIBS ${LIBS} user32) +endif() + +set(HEADERS ${HEADERS} + ${CMAKE_CURRENT_LIST_DIR}/qtservice.h + ${CMAKE_CURRENT_LIST_DIR}/qtservice_p.h +) + +set(SOURCES ${SOURCES} + ${CMAKE_CURRENT_LIST_DIR}/qtservice.cpp +) + +if(WIN32) + set(SOURCES ${SOURCES} + ${CMAKE_CURRENT_LIST_DIR}/qtservice_win.cpp + ) +endif() diff --git a/service/wireguard-service/CMakeLists.txt b/service/wireguard-service/CMakeLists.txt new file mode 100644 index 00000000..4629aad2 --- /dev/null +++ b/service/wireguard-service/CMakeLists.txt @@ -0,0 +1,31 @@ +cmake_minimum_required(VERSION 3.23.0 FATAL_ERROR) + +set(PROJECT wireguard-service) +project(${PROJECT} LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Qt6 REQUIRED COMPONENTS Core) +qt_standard_project_setup() + +set(SOURCES + ${CMAKE_CURRENT_LIST_DIR}/main.cpp + ${CMAKE_CURRENT_LIST_DIR}/wireguardtunnelservice.cpp) + +set(HEADERS + ${CMAKE_CURRENT_LIST_DIR}/wireguardtunnelservice.h) + +set(LIBS + user32 + rasapi32 + shlwapi + iphlpapi + ws2_32 + iphlpapi + gdi32 + Advapi32 + Kernel32) + +add_executable(${PROJECT} ${SOURCES} ${HEADERS}) +target_link_libraries(${PROJECT} PRIVATE Qt6::Core ${LIBS})