Skip to content

Commit b1a4007

Browse files
committed
Project import
GitOrigin-RevId: 099cb182c4ae523cb5bec0a0f3dd65fe7a6134ec
0 parents  commit b1a4007

37 files changed

Lines changed: 4654 additions & 0 deletions

.github/workflows/ci.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
pull_request:
6+
7+
jobs:
8+
build-test:
9+
runs-on: ubuntu-latest
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
compiler: [gcc, clang]
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
18+
- name: Install build dependencies
19+
run: |
20+
sudo apt-get update
21+
sudo apt-get install -y cmake ninja-build build-essential pkg-config clang
22+
23+
- name: Setup vcpkg
24+
uses: lukka/run-vcpkg@v11
25+
with:
26+
vcpkgGitCommitId: 84bab45d415d22042bd0b9081aea57f362da3f35
27+
28+
- name: Configure
29+
run: >
30+
cmake -S . -B build
31+
-DCMAKE_BUILD_TYPE=Release
32+
-DCMAKE_TOOLCHAIN_FILE="${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
33+
-DBUILD_TESTING=ON
34+
-DCMAKE_C_COMPILER=${{ matrix.compiler == 'clang' && 'clang' || 'gcc' }}
35+
-DCMAKE_CXX_COMPILER=${{ matrix.compiler == 'clang' && 'clang++' || 'g++' }}
36+
37+
- name: Build
38+
run: cmake --build build --config Release
39+
40+
- name: Test
41+
run: ctest --test-dir build --output-on-failure

.gitignore

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Prerequisites
2+
*.d
3+
4+
# Compiled Object files
5+
*.slo
6+
*.lo
7+
*.o
8+
*.obj
9+
10+
# Precompiled Headers
11+
*.gch
12+
*.pch
13+
14+
# Linker files
15+
*.ilk
16+
17+
# Debugger Files
18+
*.pdb
19+
20+
# Compiled Dynamic libraries
21+
*.so
22+
*.dylib
23+
*.dll
24+
25+
# Fortran module files
26+
*.mod
27+
*.smod
28+
29+
# Compiled Static libraries
30+
*.lai
31+
*.la
32+
*.a
33+
*.lib
34+
35+
# Executables
36+
*.exe
37+
*.out
38+
*.app
39+
40+
# debug information files
41+
*.dwo
42+
43+
44+
/build

CMakeLists.txt

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
3+
# set(VCPKG_LIBRARY_LINKAGE static)
4+
# set(VCPKG_TARGET_TRIPET x64-windows-static)
5+
# set(VCPKG_INSTALL_OPTIONS --allow-unsupported)
6+
7+
message("VCPKG_ROOT: $ENV{VCPKG_ROOT}")
8+
message("CMAKE_TOOLCHAIN_FILE: $ENV{CMAKE_TOOLCHAIN_FILE}")
9+
10+
list(APPEND CMAKE_PROJECT_TOP_LEVEL_INCLUDES "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
11+
list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_PROJECT_TOP_LEVEL_INCLUDES)
12+
13+
if(POLICY CMP0167)
14+
cmake_policy(SET CMP0167 NEW)
15+
endif()
16+
17+
project(pulsescan_cpp LANGUAGES CXX)
18+
19+
option(ENABLE_STACKTRACE "Enable Boost stacktrace logging" OFF)
20+
21+
set(CMAKE_CXX_STANDARD 20)
22+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
23+
set(CMAKE_CXX_EXTENSIONS OFF)
24+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
25+
26+
find_package(CLI11 CONFIG REQUIRED)
27+
find_package(Boost REQUIRED COMPONENTS asio)
28+
if(ENABLE_STACKTRACE)
29+
find_package(Boost REQUIRED COMPONENTS stacktrace_basic)
30+
endif()
31+
32+
33+
add_executable(pulsescan_cpp
34+
src/core/cli.cpp
35+
src/main.cpp
36+
src/core/logging.cpp
37+
src/net/icmp_packet.cpp
38+
src/core/resolve.cpp
39+
src/core/scan_runner.cpp
40+
src/net/scan_tcp.cpp
41+
src/net/scan_udp.cpp
42+
)
43+
set_target_properties(pulsescan_cpp PROPERTIES OUTPUT_NAME "pulsescan-cpp")
44+
45+
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
46+
target_sources(pulsescan_cpp PRIVATE src/net/icmp_ping.cpp)
47+
target_sources(pulsescan_cpp PRIVATE src/platform/sandbox_landlock.cpp)
48+
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
49+
target_sources(pulsescan_cpp PRIVATE src/net/icmp_ping.cpp)
50+
target_sources(pulsescan_cpp PRIVATE src/platform/sandbox_capsicum.cpp)
51+
else()
52+
target_sources(pulsescan_cpp PRIVATE src/net/icmp_ping_stub.cpp)
53+
target_sources(pulsescan_cpp PRIVATE src/platform/sandbox_none.cpp)
54+
endif()
55+
target_include_directories(pulsescan_cpp PRIVATE src)
56+
57+
find_package(CURL REQUIRED)
58+
target_link_libraries(pulsescan_cpp PRIVATE CURL::libcurl)
59+
60+
# this is heuristically generated, and may not be correct
61+
find_package(cpr CONFIG REQUIRED)
62+
target_link_libraries(pulsescan_cpp PRIVATE cpr::cpr)
63+
64+
target_link_libraries(pulsescan_cpp PRIVATE Boost::asio CLI11::CLI11)
65+
if(ENABLE_STACKTRACE)
66+
target_link_libraries(pulsescan_cpp PRIVATE Boost::stacktrace_basic)
67+
target_compile_definitions(pulsescan_cpp PRIVATE ENABLE_STACKTRACE)
68+
endif()
69+
70+
include(CTest)
71+
if(BUILD_TESTING)
72+
find_package(Catch2 CONFIG REQUIRED)
73+
include(Catch)
74+
75+
add_executable(pulsescan_cpp_tests
76+
tests/test_network.cpp
77+
tests/test_parsing.cpp
78+
src/core/cli.cpp
79+
src/core/logging.cpp
80+
src/core/resolve.cpp
81+
src/net/icmp_packet.cpp
82+
)
83+
target_include_directories(pulsescan_cpp_tests PRIVATE src)
84+
target_link_libraries(pulsescan_cpp_tests PRIVATE Boost::asio CLI11::CLI11 Catch2::Catch2WithMain)
85+
if(ENABLE_STACKTRACE)
86+
target_link_libraries(pulsescan_cpp_tests PRIVATE Boost::stacktrace_basic)
87+
target_compile_definitions(pulsescan_cpp_tests PRIVATE ENABLE_STACKTRACE)
88+
endif()
89+
catch_discover_tests(pulsescan_cpp_tests)
90+
endif()

0 commit comments

Comments
 (0)