Compare commits
47 Commits
tmp_tox_lo
...
2f44996edc
Author | SHA1 | Date | |
---|---|---|---|
2f44996edc | |||
b1fe064484 | |||
18ca88a0d4 | |||
565aa4b7eb | |||
b117da5ccf | |||
8eb4892b49 | |||
82fe4c3dd7 | |||
78b0e9a77f | |||
7fa6aa7ac2 | |||
20b4cdc5f1 | |||
7c576dd4d0 | |||
f6cda522ca | |||
3d2f5b644b | |||
9ace11a0e2 | |||
6104d3b6d1 | |||
f637c7c942 | |||
afb886ea7c | |||
74129cabef | |||
be8ceb861c | |||
da0f59a3f5 | |||
000254320e | |||
2fac7206d2 | |||
e8234f2a4a | |||
a0ba0b39d8 | |||
845967cf12 | |||
92b58cbfa9 | |||
5a0651eaf0 | |||
14fcaf1d7e | |||
5a0252d8d0 | |||
9c0ffd38ce | |||
b2ae9530a4 | |||
ae1fb0fde3 | |||
35ebbbef93 | |||
83e200df43 | |||
260d3b7818 | |||
4ebffd8c63 | |||
8923e09b36 | |||
ec4195f18a | |||
062ad7ae80 | |||
aad07611c7 | |||
0dcb66f143 | |||
331c25b0e6 | |||
e50844be06 | |||
4dd7c98c1a | |||
63bad2e99a | |||
9ddeea3d06 | |||
b95f0498b6 |
72
.github/workflows/cd.yml
vendored
72
.github/workflows/cd.yml
vendored
@@ -10,10 +10,40 @@ env:
|
|||||||
BUILD_TYPE: Release
|
BUILD_TYPE: Release
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
linux-ubuntu:
|
||||||
|
timeout-minutes: 10
|
||||||
|
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: sudo apt update && sudo apt -y install libsodium-dev
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
||||||
|
|
||||||
|
- name: temp test
|
||||||
|
run: ${{github.workspace}}/build/bin/mono_time_test
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: ${{ github.event.repository.name }}-ubuntu20.04-x86_64
|
||||||
|
# TODO: do propper packing
|
||||||
|
path: |
|
||||||
|
${{github.workspace}}/build/bin/
|
||||||
|
|
||||||
|
|
||||||
windows:
|
windows:
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
|
|
||||||
runs-on: windows-latest
|
runs-on: windows-2019
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
@@ -34,10 +64,50 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
||||||
|
|
||||||
|
- name: temp test
|
||||||
|
run: ${{github.workspace}}/build/bin/mono_time_test.exe
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: success() || failure()
|
||||||
with:
|
with:
|
||||||
name: ${{ github.event.repository.name }}-windows-msvc-x86_64
|
name: ${{ github.event.repository.name }}-windows-msvc-x86_64
|
||||||
# TODO: do propper packing
|
# TODO: do propper packing
|
||||||
path: |
|
path: |
|
||||||
${{github.workspace}}/build/bin/
|
${{github.workspace}}/build/bin/
|
||||||
|
|
||||||
|
windows-asan:
|
||||||
|
timeout-minutes: 15
|
||||||
|
|
||||||
|
runs-on: windows-2019
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: vcpkg install libsodium:x64-windows-static pthreads:x64-windows-static
|
||||||
|
|
||||||
|
# setup vs env
|
||||||
|
- uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
with:
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
- name: Configure CMake
|
||||||
|
run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DTOMATO_ASAN=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
||||||
|
|
||||||
|
- name: temp test
|
||||||
|
run: ${{github.workspace}}/build/bin/mono_time_test.exe
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: success() || failure()
|
||||||
|
with:
|
||||||
|
name: ${{ github.event.repository.name }}-windows-msvc-asan-x86_64
|
||||||
|
# TODO: do propper packing
|
||||||
|
# TODO: also switch to asan dlls
|
||||||
|
path: |
|
||||||
|
${{github.workspace}}/build/bin/
|
||||||
|
|
||||||
|
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -29,6 +29,9 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
||||||
|
|
||||||
|
- name: temp test
|
||||||
|
run: ${{github.workspace}}/build/bin/mono_time_test
|
||||||
|
|
||||||
macos:
|
macos:
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
|
|
||||||
@@ -72,3 +75,6 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4
|
||||||
|
|
||||||
|
- name: temp test
|
||||||
|
run: ${{github.workspace}}/build/bin/mono_time_test.exe
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.14...3.24 FATAL_ERROR)
|
||||||
|
|
||||||
# cmake setup begin
|
# cmake setup begin
|
||||||
project(tomato)
|
project(tomato)
|
||||||
@@ -18,6 +18,26 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
|||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||||
|
|
||||||
|
option(TOMATO_ASAN "Build tomato with asan (gcc/clang/msvc)" OFF)
|
||||||
|
|
||||||
|
if (TOMATO_ASAN)
|
||||||
|
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
if (NOT WIN32) # exclude mingw
|
||||||
|
link_libraries(-fsanitize=address)
|
||||||
|
#link_libraries(-fsanitize=address,undefined)
|
||||||
|
#link_libraries(-fsanitize=undefined)
|
||||||
|
message("II enabled ASAN")
|
||||||
|
else()
|
||||||
|
message("!! can not enable ASAN on this platform (gcc/clang + win)")
|
||||||
|
endif()
|
||||||
|
elseif (MSVC)
|
||||||
|
add_compile_options("/fsanitize=address")
|
||||||
|
message("II enabled ASAN")
|
||||||
|
else()
|
||||||
|
message("!! can not enable ASAN on this platform")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
# external libs
|
# external libs
|
||||||
add_subdirectory(./external) # before increasing warn levels, sad :(
|
add_subdirectory(./external) # before increasing warn levels, sad :(
|
||||||
|
|
||||||
@@ -33,13 +53,8 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL
|
|||||||
#-Wsign-conversion # Warn on sign conversions
|
#-Wsign-conversion # Warn on sign conversions
|
||||||
-Wshadow # Warn if a variable declaration shadows one from a parent context
|
-Wshadow # Warn if a variable declaration shadows one from a parent context
|
||||||
)
|
)
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
#link_libraries(-fsanitize=address,undefined)
|
|
||||||
#link_libraries(-fsanitize=undefined)
|
|
||||||
endif()
|
|
||||||
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
|
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
|
||||||
if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
if (MSVC)
|
||||||
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
||||||
|
2
external/solanaceae_message3
vendored
2
external/solanaceae_message3
vendored
Submodule external/solanaceae_message3 updated: 1a036c2321...60fc0d34eb
2
external/solanaceae_plugin
vendored
2
external/solanaceae_plugin
vendored
Submodule external/solanaceae_plugin updated: eeab3109e7...b502690621
2
external/solanaceae_tox
vendored
2
external/solanaceae_tox
vendored
Submodule external/solanaceae_tox updated: 89e74b35f8...ce760a800c
2
external/solanaceae_toxcore
vendored
2
external/solanaceae_toxcore
vendored
Submodule external/solanaceae_toxcore updated: d05875f489...3df9125877
2
external/solanaceae_util
vendored
2
external/solanaceae_util
vendored
Submodule external/solanaceae_util updated: 2b20c2d2a4...fa0a09df87
8
external/toxcore/CMakeLists.txt
vendored
8
external/toxcore/CMakeLists.txt
vendored
@@ -127,6 +127,8 @@ add_library(toxcore STATIC
|
|||||||
${TOX_DIR}toxcore/tox.c
|
${TOX_DIR}toxcore/tox.c
|
||||||
${TOX_DIR}toxcore/tox_dispatch.c
|
${TOX_DIR}toxcore/tox_dispatch.c
|
||||||
${TOX_DIR}toxcore/tox_dispatch.h
|
${TOX_DIR}toxcore/tox_dispatch.h
|
||||||
|
${TOX_DIR}toxcore/tox_event.c
|
||||||
|
${TOX_DIR}toxcore/tox_event.h
|
||||||
${TOX_DIR}toxcore/tox_events.c
|
${TOX_DIR}toxcore/tox_events.c
|
||||||
${TOX_DIR}toxcore/tox_events.h
|
${TOX_DIR}toxcore/tox_events.h
|
||||||
${TOX_DIR}toxcore/tox.h
|
${TOX_DIR}toxcore/tox.h
|
||||||
@@ -203,6 +205,10 @@ add_executable(DHT_Bootstrap EXCLUDE_FROM_ALL
|
|||||||
${TOX_DIR}testing/misc_tools.h
|
${TOX_DIR}testing/misc_tools.h
|
||||||
${TOX_DIR}testing/misc_tools.c
|
${TOX_DIR}testing/misc_tools.c
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(DHT_Bootstrap toxcore)
|
target_link_libraries(DHT_Bootstrap toxcore)
|
||||||
|
|
||||||
|
add_executable(mono_time_test
|
||||||
|
./mono_time_test.cc
|
||||||
|
)
|
||||||
|
target_link_libraries(mono_time_test toxcore)
|
||||||
|
target_compile_features(mono_time_test PUBLIC cxx_std_11)
|
||||||
|
@@ -6,6 +6,7 @@ CACHEDIR="$HOME/cache"
|
|||||||
|
|
||||||
. ".github/scripts/flags-$CC.sh"
|
. ".github/scripts/flags-$CC.sh"
|
||||||
add_flag -Werror
|
add_flag -Werror
|
||||||
|
add_flag -D_DEBUG
|
||||||
add_flag -fdiagnostics-color=always
|
add_flag -fdiagnostics-color=always
|
||||||
add_flag -fno-omit-frame-pointer
|
add_flag -fno-omit-frame-pointer
|
||||||
add_flag -fno-sanitize-recover=all
|
add_flag -fno-sanitize-recover=all
|
||||||
|
44
external/toxcore/c-toxcore/.circleci/config.yml
vendored
44
external/toxcore/c-toxcore/.circleci/config.yml
vendored
@@ -15,9 +15,7 @@ workflows:
|
|||||||
- ubsan
|
- ubsan
|
||||||
# Static analysis
|
# Static analysis
|
||||||
- clang-analyze
|
- clang-analyze
|
||||||
- clang-tidy
|
|
||||||
- cpplint
|
- cpplint
|
||||||
- infer
|
|
||||||
- static-analysis
|
- static-analysis
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -70,6 +68,7 @@ jobs:
|
|||||||
cmake
|
cmake
|
||||||
git
|
git
|
||||||
libconfig-dev
|
libconfig-dev
|
||||||
|
libgmock-dev
|
||||||
libgtest-dev
|
libgtest-dev
|
||||||
libopus-dev
|
libopus-dev
|
||||||
libsodium-dev
|
libsodium-dev
|
||||||
@@ -103,27 +102,6 @@ jobs:
|
|||||||
- run: git submodule update --init --recursive
|
- run: git submodule update --init --recursive
|
||||||
- run: CC=clang .circleci/cmake-ubsan
|
- run: CC=clang .circleci/cmake-ubsan
|
||||||
|
|
||||||
infer:
|
|
||||||
working_directory: ~/work
|
|
||||||
docker:
|
|
||||||
- image: toxchat/infer
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- run: *apt_install
|
|
||||||
- checkout
|
|
||||||
- run: git submodule update --init --recursive
|
|
||||||
- run: infer --no-progress-bar -- cc
|
|
||||||
auto_tests/auto_test_support.c
|
|
||||||
auto_tests/lossless_packet_test.c
|
|
||||||
testing/misc_tools.c
|
|
||||||
toxav/*.c
|
|
||||||
toxcore/*.c
|
|
||||||
toxcore/*/*.c
|
|
||||||
toxencryptsave/*.c
|
|
||||||
third_party/cmp/*.c
|
|
||||||
-lpthread
|
|
||||||
$(pkg-config --cflags --libs libsodium opus vpx)
|
|
||||||
|
|
||||||
static-analysis:
|
static-analysis:
|
||||||
working_directory: ~/work
|
working_directory: ~/work
|
||||||
docker:
|
docker:
|
||||||
@@ -134,7 +112,6 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
apt-get install -y --no-install-recommends
|
apt-get install -y --no-install-recommends
|
||||||
ca-certificates
|
ca-certificates
|
||||||
cppcheck
|
|
||||||
g++
|
g++
|
||||||
llvm-dev
|
llvm-dev
|
||||||
- checkout
|
- checkout
|
||||||
@@ -142,7 +119,6 @@ jobs:
|
|||||||
- run: other/analysis/check_includes
|
- run: other/analysis/check_includes
|
||||||
- run: other/analysis/check_logger_levels
|
- run: other/analysis/check_logger_levels
|
||||||
- run: other/analysis/run-clang
|
- run: other/analysis/run-clang
|
||||||
- run: other/analysis/run-cppcheck
|
|
||||||
- run: other/analysis/run-gcc
|
- run: other/analysis/run-gcc
|
||||||
|
|
||||||
clang-analyze:
|
clang-analyze:
|
||||||
@@ -156,24 +132,6 @@ jobs:
|
|||||||
- run: git submodule update --init --recursive
|
- run: git submodule update --init --recursive
|
||||||
- run: other/analysis/run-clang-analyze
|
- run: other/analysis/run-clang-analyze
|
||||||
|
|
||||||
clang-tidy:
|
|
||||||
working_directory: ~/work
|
|
||||||
docker:
|
|
||||||
- image: ubuntu
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- run: *apt_install
|
|
||||||
- run:
|
|
||||||
apt-get install -y --no-install-recommends
|
|
||||||
ca-certificates
|
|
||||||
clang-tidy-14
|
|
||||||
- checkout
|
|
||||||
- run: git submodule update --init --recursive
|
|
||||||
- run:
|
|
||||||
other/analysis/run-clang-tidy ||
|
|
||||||
other/analysis/run-clang-tidy ||
|
|
||||||
other/analysis/run-clang-tidy
|
|
||||||
|
|
||||||
cpplint:
|
cpplint:
|
||||||
working_directory: ~/work
|
working_directory: ~/work
|
||||||
docker:
|
docker:
|
||||||
|
15
external/toxcore/c-toxcore/.cirrus.yml
vendored
15
external/toxcore/c-toxcore/.cirrus.yml
vendored
@@ -9,7 +9,6 @@ bazel-opt_task:
|
|||||||
- /src/workspace/tools/inject-repo c-toxcore
|
- /src/workspace/tools/inject-repo c-toxcore
|
||||||
test_all_script:
|
test_all_script:
|
||||||
- cd /src/workspace && bazel test -k
|
- cd /src/workspace && bazel test -k
|
||||||
--config=ci
|
|
||||||
--build_tag_filters=-haskell
|
--build_tag_filters=-haskell
|
||||||
--test_tag_filters=-haskell
|
--test_tag_filters=-haskell
|
||||||
--
|
--
|
||||||
@@ -26,7 +25,6 @@ bazel-dbg_task:
|
|||||||
- /src/workspace/tools/inject-repo c-toxcore
|
- /src/workspace/tools/inject-repo c-toxcore
|
||||||
test_all_script:
|
test_all_script:
|
||||||
- cd /src/workspace && bazel test -k
|
- cd /src/workspace && bazel test -k
|
||||||
--config=ci
|
|
||||||
--build_tag_filters=-haskell
|
--build_tag_filters=-haskell
|
||||||
--test_tag_filters=-haskell
|
--test_tag_filters=-haskell
|
||||||
--
|
--
|
||||||
@@ -43,8 +41,19 @@ cimple_task:
|
|||||||
- /src/workspace/tools/inject-repo c-toxcore
|
- /src/workspace/tools/inject-repo c-toxcore
|
||||||
test_all_script:
|
test_all_script:
|
||||||
- cd /src/workspace && bazel test -k
|
- cd /src/workspace && bazel test -k
|
||||||
--config=ci
|
|
||||||
--build_tag_filters=haskell
|
--build_tag_filters=haskell
|
||||||
--test_tag_filters=haskell
|
--test_tag_filters=haskell
|
||||||
--
|
--
|
||||||
//c-toxcore/...
|
//c-toxcore/...
|
||||||
|
|
||||||
|
freebsd_task:
|
||||||
|
container:
|
||||||
|
image: toxchat/freebsd:latest
|
||||||
|
cpu: 2
|
||||||
|
memory: 4G
|
||||||
|
kvm: true
|
||||||
|
configure_script:
|
||||||
|
- git submodule update --init --recursive
|
||||||
|
- cd .. && mv cirrus-ci-build /work/c-toxcore && mkdir cirrus-ci-build
|
||||||
|
test_all_script:
|
||||||
|
- cd /work/c-toxcore && .github/scripts/cmake-freebsd
|
||||||
|
9
external/toxcore/c-toxcore/.clang-tidy
vendored
9
external/toxcore/c-toxcore/.clang-tidy
vendored
@@ -1,4 +1,5 @@
|
|||||||
# vim:ft=yaml
|
# vim:ft=yaml
|
||||||
|
HeaderFilterRegex: "/c-toxcore/[^/]+/[^.].+"
|
||||||
CheckOptions:
|
CheckOptions:
|
||||||
- key: readability-identifier-naming.ClassCase
|
- key: readability-identifier-naming.ClassCase
|
||||||
value: Camel_Snake_Case
|
value: Camel_Snake_Case
|
||||||
@@ -35,6 +36,12 @@ CheckOptions:
|
|||||||
value: lower_case
|
value: lower_case
|
||||||
|
|
||||||
- key: llvmlibc-restrict-system-libc-headers.Includes
|
- key: llvmlibc-restrict-system-libc-headers.Includes
|
||||||
value: "arpa/inet.h,assert.h,ctype.h,errno.h,fcntl.h,getopt.h,libconfig.h,linux/netdevice.h,math.h,netdb.h,netinet/in.h,opus.h,pthread.h,signal.h,sodium/crypto_scalarmult_curve25519.h,sodium.h,sodium/randombytes.h,stdio.h,stdlib.h,string.h,sys/ioctl.h,syslog.h,sys/resource.h,sys/socket.h,sys/stat.h,sys/time.h,sys/types.h,time.h,unistd.h,vpx/vp8cx.h,vpx/vp8dx.h,vpx/vpx_decoder.h,vpx/vpx_encoder.h,vpx/vpx_image.h"
|
value: "arpa/inet.h,assert.h,ctype.h,errno.h,fcntl.h,getopt.h,libconfig.h,limits.h,linux/if.h,math.h,netdb.h,netinet/in.h,opus.h,pthread.h,signal.h,sodium/crypto_scalarmult_curve25519.h,sodium.h,sodium/randombytes.h,stdarg.h,stdbool.h,stddef.h,stdint.h,stdio.h,stdlib.h,string.h,sys/ioctl.h,syslog.h,sys/resource.h,sys/socket.h,sys/stat.h,sys/time.h,sys/types.h,time.h,unistd.h,vpx/vp8cx.h,vpx/vp8dx.h,vpx/vpx_decoder.h,vpx/vpx_encoder.h,vpx/vpx_image.h"
|
||||||
- key: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals
|
- key: hicpp-signed-bitwise.IgnorePositiveIntegerLiterals
|
||||||
value: true
|
value: true
|
||||||
|
- key: concurrency-mt-unsafe.FunctionSet
|
||||||
|
value: posix
|
||||||
|
- key: misc-include-cleaner.IgnoreHeaders
|
||||||
|
value: "pthread.h;stdbool.h;stddef.h;stdint.;stdint.h;stdint...;cstdint;sodium.*;sys/.*;unistd.h;opus.*;vpx.*;attributes.h;tox_struct.h"
|
||||||
|
- key: readability-function-cognitive-complexity.Threshold
|
||||||
|
value: 153 # TODO(iphydf): Decrease. tox_new is the highest at the moment.
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -eu
|
#!/bin/bash -eu
|
||||||
|
|
||||||
FUZZ_TARGETS="bootstrap_fuzzer toxsave_fuzzer"
|
FUZZ_TARGETS="bootstrap_fuzz_test toxsave_fuzz_test"
|
||||||
|
|
||||||
# out of tree build
|
# out of tree build
|
||||||
cd "$WORK"
|
cd "$WORK"
|
||||||
|
2
external/toxcore/c-toxcore/.dockerignore
vendored
Normal file
2
external/toxcore/c-toxcore/.dockerignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/_build
|
||||||
|
/_install
|
@@ -11,10 +11,7 @@ add_ld_flag -Wl,-z,defs
|
|||||||
# Make compilation error on a warning
|
# Make compilation error on a warning
|
||||||
add_flag -Werror
|
add_flag -Werror
|
||||||
|
|
||||||
add_config_flag --with-nacl-libs="$CACHEDIR/lib/amd64"
|
|
||||||
add_config_flag --with-nacl-headers="$CACHEDIR/include/amd64"
|
|
||||||
add_config_flag --disable-ipv6
|
add_config_flag --disable-ipv6
|
||||||
add_config_flag --enable-nacl
|
|
||||||
add_config_flag --enable-daemon
|
add_config_flag --enable-daemon
|
||||||
add_config_flag --with-log-level=TRACE
|
add_config_flag --with-log-level=TRACE
|
||||||
|
|
||||||
|
55
external/toxcore/c-toxcore/.github/scripts/cmake-alpine-s390x
vendored
Executable file
55
external/toxcore/c-toxcore/.github/scripts/cmake-alpine-s390x
vendored
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright (C) 2018-2023 nurupo
|
||||||
|
|
||||||
|
# Toxcore building
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
cd .. # /work
|
||||||
|
. cmake-alpine-run.sh
|
||||||
|
|
||||||
|
# === Get VM ready to build the code ===
|
||||||
|
|
||||||
|
start_vm
|
||||||
|
|
||||||
|
RUN apk add cmake g++ ninja
|
||||||
|
|
||||||
|
mv c-toxcore /
|
||||||
|
|
||||||
|
# Copy over toxcore code from host to qemu
|
||||||
|
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P "$SSH_PORT" -r /c-toxcore root@localhost:~
|
||||||
|
|
||||||
|
cd /c-toxcore
|
||||||
|
. ".github/scripts/flags-gcc.sh"
|
||||||
|
|
||||||
|
# Make compilation error on a warning
|
||||||
|
add_flag -Werror
|
||||||
|
|
||||||
|
# - disabling toxav because vpx doesn't work on s390x.
|
||||||
|
# - disabling bootstrap daemons because we don't need them for testing (saving time).
|
||||||
|
# - disabling shared libraries because it saves a lot of time on building PIC objects.
|
||||||
|
# - enable unity build because it saves a lot of time as well (fewer objects to build).
|
||||||
|
RUN "cmake -B_build -Hc-toxcore -GNinja \
|
||||||
|
-DCMAKE_C_FLAGS='$C_FLAGS' \
|
||||||
|
-DCMAKE_CXX_FLAGS='$CXX_FLAGS' \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS='$LD_FLAGS' \
|
||||||
|
-DCMAKE_SHARED_LINKER_FLAGS='$LD_FLAGS' \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH='_install' \
|
||||||
|
-DCMAKE_UNITY_BUILD=ON \
|
||||||
|
-DMIN_LOGGER_LEVEL=TRACE \
|
||||||
|
-DNON_HERMETIC_TESTS=ON \
|
||||||
|
-DENABLE_SHARED=OFF \
|
||||||
|
-DBUILD_TOXAV=OFF \
|
||||||
|
-DDHT_BOOTSTRAP=OFF \
|
||||||
|
-DBOOTSTRAP_DAEMON=OFF \
|
||||||
|
-DSTRICT_ABI=ON \
|
||||||
|
-DTEST_TIMEOUT_SECONDS=90 \
|
||||||
|
-DUSE_IPV6=OFF \
|
||||||
|
-DAUTOTEST=ON"
|
||||||
|
|
||||||
|
RUN 'cmake --build _build --parallel 2 --target install -- -k 0'
|
||||||
|
RUN 'cd _build && ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:1 --timeout 90 || true' &
|
||||||
|
|
||||||
|
# Give the tests 5 minutes to run. Sometimes, the per-test timeout doesn't
|
||||||
|
# work, so we put a global timeout here for everything.
|
||||||
|
sleep 300
|
58
external/toxcore/c-toxcore/.github/scripts/cmake-freebsd
vendored
Executable file
58
external/toxcore/c-toxcore/.github/scripts/cmake-freebsd
vendored
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright (C) 2018-2023 nurupo
|
||||||
|
|
||||||
|
# Toxcore building
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
cd .. # /work
|
||||||
|
. cmake-freebsd-run.sh
|
||||||
|
|
||||||
|
# === Get VM ready to build the code ===
|
||||||
|
|
||||||
|
# Unpack image only if it's compressed.
|
||||||
|
if [ -f "$IMAGE_NAME.gz" ]; then
|
||||||
|
gunzip "$IMAGE_NAME.gz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mv c-toxcore /
|
||||||
|
|
||||||
|
start_vm
|
||||||
|
|
||||||
|
# Copy over toxcore code from host to qemu
|
||||||
|
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P "$SSH_PORT" -r /c-toxcore root@localhost:~
|
||||||
|
|
||||||
|
RUN ls -lh
|
||||||
|
|
||||||
|
cd /c-toxcore
|
||||||
|
. '.github/scripts/flags-clang.sh'
|
||||||
|
|
||||||
|
add_ld_flag -Wl,-z,defs
|
||||||
|
|
||||||
|
# Make compilation error on a warning.
|
||||||
|
add_flag -Werror
|
||||||
|
|
||||||
|
# This triggers on FreeBSD's clang.
|
||||||
|
add_flag -Wno-format
|
||||||
|
add_flag -Wno-unsafe-buffer-usage
|
||||||
|
|
||||||
|
RUN "cmake -B_build -Hc-toxcore \
|
||||||
|
-DCMAKE_C_FLAGS='$C_FLAGS' \
|
||||||
|
-DCMAKE_CXX_FLAGS='$CXX_FLAGS' \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS='$LD_FLAGS' \
|
||||||
|
-DCMAKE_SHARED_LINKER_FLAGS='$LD_FLAGS' \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH='_install' \
|
||||||
|
-DMIN_LOGGER_LEVEL=TRACE \
|
||||||
|
-DMUST_BUILD_TOXAV=ON \
|
||||||
|
-DNON_HERMETIC_TESTS=ON \
|
||||||
|
-DSTRICT_ABI=ON \
|
||||||
|
-DTEST_TIMEOUT_SECONDS=120 \
|
||||||
|
-DUSE_IPV6=OFF \
|
||||||
|
-DAUTOTEST=ON"
|
||||||
|
|
||||||
|
# We created the VM with the same number of cores as the host, so the host-ran `nproc` here is fine.
|
||||||
|
RUN 'cmake --build _build --parallel "$NPROC" --target install -- -k'
|
||||||
|
RUN 'cd _build && ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:2 --timeout 120 || true'
|
||||||
|
|
||||||
|
# Gracefully shut down the VM.
|
||||||
|
stop_vm
|
@@ -1,52 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Copyright (C) 2018-2021 nurupo
|
|
||||||
|
|
||||||
# Toxcore building
|
|
||||||
|
|
||||||
set -eux
|
|
||||||
|
|
||||||
if [ "$PWD" != "/work" ]; then
|
|
||||||
cd ..
|
|
||||||
mv c-toxcore /
|
|
||||||
mkdir c-toxcore
|
|
||||||
cd /work
|
|
||||||
fi
|
|
||||||
|
|
||||||
. cmake-freebsd-run.sh
|
|
||||||
|
|
||||||
# === Get VM ready to build the code ===
|
|
||||||
|
|
||||||
gunzip "$IMAGE_NAME.gz"
|
|
||||||
|
|
||||||
start_vm
|
|
||||||
|
|
||||||
# Copy over toxcore code from host to qemu
|
|
||||||
scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -P "$SSH_PORT" -r /c-toxcore root@localhost:~
|
|
||||||
|
|
||||||
RUN ls -lh
|
|
||||||
|
|
||||||
cd /c-toxcore
|
|
||||||
. ".github/scripts/flags-clang.sh"
|
|
||||||
|
|
||||||
add_ld_flag -Wl,-z,defs
|
|
||||||
|
|
||||||
# Make compilation error on a warning
|
|
||||||
add_flag -Werror
|
|
||||||
|
|
||||||
RUN 'cmake -B_build -Hc-toxcore \
|
|
||||||
-DCMAKE_C_FLAGS="$C_FLAGS" \
|
|
||||||
-DCMAKE_CXX_FLAGS="$CXX_FLAGS" \
|
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="$LD_FLAGS" \
|
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS="$LD_FLAGS" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH="_install" \
|
|
||||||
-DMIN_LOGGER_LEVEL=TRACE \
|
|
||||||
-DMUST_BUILD_TOXAV=ON \
|
|
||||||
-DNON_HERMETIC_TESTS=ON \
|
|
||||||
-DSTRICT_ABI=ON \
|
|
||||||
-DTEST_TIMEOUT_SECONDS=90 \
|
|
||||||
-DUSE_IPV6=OFF \
|
|
||||||
-DAUTOTEST=ON'
|
|
||||||
|
|
||||||
# We created the VM with the same number of cores as the host, so the host-ran `nproc` here is fine
|
|
||||||
RUN 'gmake "-j$NPROC" -k install -C_build'
|
|
||||||
RUN 'gmake "-j$NPROC" test ARGS="-j50" -C_build || true'
|
|
@@ -1,61 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
NPROC=$(nproc)
|
|
||||||
|
|
||||||
sudo apt-get install -y --no-install-recommends \
|
|
||||||
libgtest-dev \
|
|
||||||
libopus-dev \
|
|
||||||
libsodium-dev \
|
|
||||||
libvpx-dev \
|
|
||||||
llvm-14 \
|
|
||||||
ninja-build
|
|
||||||
git clone --depth=1 https://github.com/ralight/mallocfail /tmp/mallocfail
|
|
||||||
cd /tmp/mallocfail # pushd
|
|
||||||
make
|
|
||||||
sudo make install
|
|
||||||
cd - # popd
|
|
||||||
|
|
||||||
export CC=clang
|
|
||||||
export CXX=clang++
|
|
||||||
|
|
||||||
sudo install other/docker/coverage/run_mallocfail /usr/local/bin/run_mallocfail
|
|
||||||
(cd other/proxy && go get && go build)
|
|
||||||
other/proxy/proxy &
|
|
||||||
|
|
||||||
. ".github/scripts/flags-coverage.sh"
|
|
||||||
|
|
||||||
cmake -B_build -H. -GNinja \
|
|
||||||
-DCMAKE_C_FLAGS="$C_FLAGS" \
|
|
||||||
-DCMAKE_CXX_FLAGS="$CXX_FLAGS" \
|
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="$LD_FLAGS" \
|
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS="$LD_FLAGS" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH="$PWD/_install" \
|
|
||||||
-DENABLE_SHARED=OFF \
|
|
||||||
-DMIN_LOGGER_LEVEL=TRACE \
|
|
||||||
-DMUST_BUILD_TOXAV=ON \
|
|
||||||
-DNON_HERMETIC_TESTS=OFF \
|
|
||||||
-DSTRICT_ABI=ON \
|
|
||||||
-DTEST_TIMEOUT_SECONDS=120 \
|
|
||||||
-DUSE_IPV6=OFF \
|
|
||||||
-DAUTOTEST=ON \
|
|
||||||
-DPROXY_TEST=ON
|
|
||||||
|
|
||||||
cmake --build _build --parallel "$NPROC" --target install -- -k 0
|
|
||||||
|
|
||||||
cd _build # pushd
|
|
||||||
ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:6 ||
|
|
||||||
ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:6
|
|
||||||
|
|
||||||
export PYTHONUNBUFFERED=1
|
|
||||||
run_mallocfail --ctest=2 --jobs=8
|
|
||||||
cd - # popd
|
|
||||||
|
|
||||||
#coveralls \
|
|
||||||
# --exclude auto_tests \
|
|
||||||
# --exclude other \
|
|
||||||
# --exclude testing \
|
|
||||||
# --gcov-options '\-lp'
|
|
||||||
|
|
||||||
bash <(curl -s https://codecov.io/bash) -x "llvm-cov-14 gcov"
|
|
@@ -65,6 +65,8 @@ add_cxx_flag -Wno-c++98-compat-pedantic
|
|||||||
add_cxx_flag -Wno-c99-extensions
|
add_cxx_flag -Wno-c99-extensions
|
||||||
# We're C-compatible, so use C style casts.
|
# We're C-compatible, so use C style casts.
|
||||||
add_cxx_flag -Wno-old-style-cast
|
add_cxx_flag -Wno-old-style-cast
|
||||||
|
# GTest does this.
|
||||||
|
add_cxx_flag -Wno-global-constructors
|
||||||
|
|
||||||
# Downgrade to warning so we still see it.
|
# Downgrade to warning so we still see it.
|
||||||
add_flag -Wno-error=unreachable-code
|
add_flag -Wno-error=unreachable-code
|
||||||
|
@@ -5,16 +5,16 @@
|
|||||||
add_ld_flag -Wl,-z,defs
|
add_ld_flag -Wl,-z,defs
|
||||||
|
|
||||||
# Make compilation error on a warning
|
# Make compilation error on a warning
|
||||||
add_flag -Werror
|
add_flag -Werror -Wno-unsafe-buffer-usage
|
||||||
|
|
||||||
# Coverage flags.
|
# Coverage flags.
|
||||||
add_flag --coverage
|
add_flag -fprofile-instr-generate -fcoverage-mapping
|
||||||
|
|
||||||
# Optimisation, but keep stack traces useful.
|
# Optimisation, but keep stack traces useful.
|
||||||
add_c_flag -fno-inline -fno-omit-frame-pointer
|
add_c_flag -fno-inline -fno-omit-frame-pointer
|
||||||
|
|
||||||
# Show useful stack traces on crash.
|
# Show useful stack traces on crash.
|
||||||
add_flag -fsanitize=undefined -fno-sanitize-recover=all
|
add_flag -fsanitize=undefined -fno-sanitize-recover=all -D_DEBUG
|
||||||
|
|
||||||
# In test code (_test.cc and libgtest), throw away all debug information.
|
# In test code (_test.cc and libgtest), throw away all debug information.
|
||||||
# We only care about stack frames inside toxcore (which is C). Without this,
|
# We only care about stack frames inside toxcore (which is C). Without this,
|
||||||
|
@@ -28,8 +28,6 @@ add_flag -O3 -march=native
|
|||||||
|
|
||||||
# Warn on non-ISO C.
|
# Warn on non-ISO C.
|
||||||
add_c_flag -pedantic
|
add_c_flag -pedantic
|
||||||
add_c_flag -std=c99
|
|
||||||
add_cxx_flag -std=c++11
|
|
||||||
|
|
||||||
add_flag -g3
|
add_flag -g3
|
||||||
add_flag -ftrapv
|
add_flag -ftrapv
|
||||||
|
@@ -1,12 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -exu
|
set -exu -o pipefail
|
||||||
|
|
||||||
LOCAL="${1:-}"
|
LOCAL="${1:-}"
|
||||||
|
|
||||||
readarray -t FILES <<<"$(git ls-files)"
|
readarray -t FILES <<<"$(git ls-files)"
|
||||||
|
|
||||||
tar c "${FILES[@]}" | docker build -f other/bootstrap_daemon/docker/Dockerfile -t toxchat/bootstrap-node -
|
if ! tar c "${FILES[@]}" | docker build -f other/bootstrap_daemon/docker/Dockerfile -t toxchat/bootstrap-node - 2>&1 | tee docker-build.log; then
|
||||||
|
grep -o "::error.*::[a-f0-9]* /usr/local/bin/tox-bootstrapd" docker-build.log
|
||||||
|
false
|
||||||
|
fi
|
||||||
docker tag toxchat/bootstrap-node:latest toxchat/bootstrap-node:"$(other/print-version)"
|
docker tag toxchat/bootstrap-node:latest toxchat/bootstrap-node:"$(other/print-version)"
|
||||||
|
|
||||||
sudo useradd \
|
sudo useradd \
|
||||||
|
70
external/toxcore/c-toxcore/.github/settings.yml
vendored
70
external/toxcore/c-toxcore/.github/settings.yml
vendored
@@ -1,70 +0,0 @@
|
|||||||
---
|
|
||||||
_extends: .github
|
|
||||||
|
|
||||||
repository:
|
|
||||||
name: c-toxcore
|
|
||||||
description: The future of online communications.
|
|
||||||
homepage: https://tox.chat/
|
|
||||||
topics: toxcore, network, p2p, security, encryption, cryptography
|
|
||||||
|
|
||||||
branches:
|
|
||||||
- name: "master"
|
|
||||||
protection:
|
|
||||||
required_status_checks:
|
|
||||||
contexts:
|
|
||||||
- "bazel-asan"
|
|
||||||
- "bazel-dbg"
|
|
||||||
- "bazel-opt"
|
|
||||||
- "bazel-tsan"
|
|
||||||
- "build-compcert"
|
|
||||||
- "build-macos"
|
|
||||||
- "build-nacl"
|
|
||||||
- "build-tcc"
|
|
||||||
- "build-win32"
|
|
||||||
- "build-win64"
|
|
||||||
- "CodeFactor"
|
|
||||||
- "common / buildifier"
|
|
||||||
- "coverage-linux"
|
|
||||||
- "ci/circleci: asan"
|
|
||||||
- "ci/circleci: clang-analyze"
|
|
||||||
- "ci/circleci: clang-tidy"
|
|
||||||
- "ci/circleci: cpplint"
|
|
||||||
- "ci/circleci: infer"
|
|
||||||
- "ci/circleci: msan"
|
|
||||||
- "ci/circleci: static-analysis"
|
|
||||||
- "ci/circleci: tsan"
|
|
||||||
- "ci/circleci: ubsan"
|
|
||||||
- "cimple"
|
|
||||||
- "code-review/reviewable"
|
|
||||||
- "continuous-integration/appveyor/pr"
|
|
||||||
- "docker-bootstrap-node"
|
|
||||||
- "docker-bootstrap-node-websocket"
|
|
||||||
- "docker-toxcore-js"
|
|
||||||
- "mypy"
|
|
||||||
- "sonar-scan"
|
|
||||||
|
|
||||||
# Labels specific to c-toxcore.
|
|
||||||
labels:
|
|
||||||
- name: "bootstrap"
|
|
||||||
color: "#01707f"
|
|
||||||
description: "Bootstrap"
|
|
||||||
|
|
||||||
- name: "crypto"
|
|
||||||
color: "#1d76db"
|
|
||||||
description: "Crypto"
|
|
||||||
|
|
||||||
- name: "file transfers"
|
|
||||||
color: "#e02abf"
|
|
||||||
description: "File Transfers"
|
|
||||||
|
|
||||||
- name: "messenger"
|
|
||||||
color: "#d93f0b"
|
|
||||||
description: "Messenger"
|
|
||||||
|
|
||||||
- name: "network"
|
|
||||||
color: "#d4c5f9"
|
|
||||||
description: "Network"
|
|
||||||
|
|
||||||
- name: "toxav"
|
|
||||||
color: "#0052cc"
|
|
||||||
description: "Audio/video"
|
|
286
external/toxcore/c-toxcore/.github/workflows/ci.yml
vendored
286
external/toxcore/c-toxcore/.github/workflows/ci.yml
vendored
@@ -13,14 +13,115 @@ jobs:
|
|||||||
common:
|
common:
|
||||||
uses: TokTok/ci-tools/.github/workflows/common-ci.yml@master
|
uses: TokTok/ci-tools/.github/workflows/common-ci.yml@master
|
||||||
|
|
||||||
|
analysis:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
tool: [autotools, clang-tidy, compcert, cppcheck, doxygen, infer, misra, tcc, tokstyle]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Docker Build
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
file: other/docker/${{ matrix.tool }}/Dockerfile
|
||||||
|
|
||||||
|
coverage-linux:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Build, test, and upload coverage
|
||||||
|
run: other/docker/coverage/run
|
||||||
|
|
||||||
|
generate-events:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Run generate_event_c
|
||||||
|
run: |
|
||||||
|
other/event_tooling/run
|
||||||
|
git diff --exit-code
|
||||||
|
|
||||||
|
cimplefmt:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Run cimplefmt
|
||||||
|
run: other/docker/cimplefmt/run -u $(find tox* -name "*.[ch]")
|
||||||
|
|
||||||
|
build-android:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- run: .github/scripts/cmake-android armeabi-v7a
|
||||||
|
- run: .github/scripts/cmake-android arm64-v8a
|
||||||
|
- run: .github/scripts/cmake-android x86
|
||||||
|
- run: .github/scripts/cmake-android x86_64
|
||||||
|
|
||||||
|
build-macos:
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Build and test
|
||||||
|
run: .github/scripts/cmake-osx
|
||||||
|
|
||||||
|
build-msvc:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
version: [2019, 2022]
|
||||||
|
runs-on: windows-${{ matrix.version }}
|
||||||
|
env:
|
||||||
|
VCPKG_ROOT: "C:/vcpkg"
|
||||||
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Export GitHub Actions cache environment variables
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||||
|
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||||
|
- name: Configure CMake
|
||||||
|
run: cmake --preset windows-default
|
||||||
|
- name: Build
|
||||||
|
run: cmake --build _build
|
||||||
|
- name: Test
|
||||||
|
run: |
|
||||||
|
cd _build
|
||||||
|
ctest -j50 --output-on-failure --rerun-failed --repeat until-pass:6 --build-config Debug
|
||||||
|
|
||||||
|
build-windows:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
bits: [32, 64]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: Cross compilation
|
||||||
|
run: .github/scripts/cmake-win${{ matrix.bits }} script
|
||||||
|
|
||||||
mypy:
|
mypy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: Set up Python 3.9
|
- name: Set up Python 3.9
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: 3.9
|
python-version: 3.9
|
||||||
- name: Install mypy
|
- name: Install mypy
|
||||||
@@ -29,184 +130,3 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
(find . -name "*.py" -and -not -name "conanfile.py"; grep -lR '^#!.*python') \
|
(find . -name "*.py" -and -not -name "conanfile.py"; grep -lR '^#!.*python') \
|
||||||
| xargs -n1 -P8 mypy --strict
|
| xargs -n1 -P8 mypy --strict
|
||||||
|
|
||||||
doxygen:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
- name: Docker Build
|
|
||||||
uses: docker/build-push-action@v2
|
|
||||||
with:
|
|
||||||
file: other/docker/doxygen/Dockerfile
|
|
||||||
|
|
||||||
tokstyle:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
- name: Docker Build
|
|
||||||
uses: docker/build-push-action@v2
|
|
||||||
with:
|
|
||||||
file: other/docker/tokstyle/Dockerfile
|
|
||||||
|
|
||||||
misra:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
- name: Docker Build
|
|
||||||
uses: docker/build-push-action@v2
|
|
||||||
with:
|
|
||||||
file: other/docker/misra/Dockerfile
|
|
||||||
|
|
||||||
cimplefmt:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Run cimplefmt
|
|
||||||
run: other/docker/cimplefmt/run -u $(find tox* -name "*.[ch]")
|
|
||||||
|
|
||||||
build-nacl:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
- name: Docker Build
|
|
||||||
uses: docker/build-push-action@v2
|
|
||||||
with:
|
|
||||||
file: other/docker/autotools/Dockerfile
|
|
||||||
|
|
||||||
build-win32:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Cross compilation
|
|
||||||
run: .github/scripts/cmake-win32 script
|
|
||||||
|
|
||||||
build-win64:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Cross compilation
|
|
||||||
run: .github/scripts/cmake-win64 script
|
|
||||||
|
|
||||||
build-freebsd:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container: toxchat/freebsd
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Build on FreeBSD
|
|
||||||
run: .github/scripts/cmake-freebsd-stage2
|
|
||||||
|
|
||||||
build-macos:
|
|
||||||
runs-on: macos-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Build and test
|
|
||||||
run: .github/scripts/cmake-osx
|
|
||||||
|
|
||||||
coverage-linux:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Build, test, and upload coverage
|
|
||||||
run: .github/scripts/coverage-linux
|
|
||||||
|
|
||||||
build-tcc:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Install dependencies
|
|
||||||
run:
|
|
||||||
sudo apt-get install -y --no-install-recommends
|
|
||||||
tcc
|
|
||||||
libconfig-dev
|
|
||||||
libopus-dev
|
|
||||||
libsodium-dev
|
|
||||||
libvpx-dev
|
|
||||||
- name: Build with TCC
|
|
||||||
run:
|
|
||||||
tcc
|
|
||||||
-Dinline=static
|
|
||||||
-o send_message_test
|
|
||||||
-Wall -Werror
|
|
||||||
-bench -g
|
|
||||||
auto_tests/auto_test_support.c
|
|
||||||
auto_tests/send_message_test.c
|
|
||||||
testing/misc_tools.c
|
|
||||||
toxav/*.c
|
|
||||||
toxcore/*.c
|
|
||||||
toxcore/*/*.c
|
|
||||||
toxencryptsave/*.c
|
|
||||||
third_party/cmp/*.c
|
|
||||||
$(pkg-config --cflags --libs libsodium opus vpx)
|
|
||||||
- name: Run the test
|
|
||||||
run: "./send_message_test | grep 'tox clients connected'"
|
|
||||||
- name: Build amalgamation file with TCC
|
|
||||||
run:
|
|
||||||
other/make_single_file
|
|
||||||
auto_tests/auto_test_support.c
|
|
||||||
auto_tests/send_message_test.c
|
|
||||||
testing/misc_tools.c |
|
|
||||||
tcc -
|
|
||||||
-o send_message_test
|
|
||||||
-Wall -Werror
|
|
||||||
-bench -g
|
|
||||||
$(pkg-config --cflags --libs libsodium opus vpx)
|
|
||||||
- name: Run the test again
|
|
||||||
run: "./send_message_test | grep 'tox clients connected'"
|
|
||||||
|
|
||||||
build-compcert:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
container: toxchat/compcert
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- name: Build with CompCert
|
|
||||||
run:
|
|
||||||
ccomp
|
|
||||||
-o send_message_test
|
|
||||||
-Wall -Werror
|
|
||||||
-Wno-c11-extensions
|
|
||||||
-Wno-unknown-pragmas
|
|
||||||
-Wno-unused-variable
|
|
||||||
-fstruct-passing -fno-unprototyped -g
|
|
||||||
auto_tests/auto_test_support.c
|
|
||||||
auto_tests/send_message_test.c
|
|
||||||
testing/misc_tools.c
|
|
||||||
toxav/*.c
|
|
||||||
toxcore/*.c
|
|
||||||
toxcore/*/*.c
|
|
||||||
toxencryptsave/*.c
|
|
||||||
third_party/cmp/*.c
|
|
||||||
-D__COMPCERT__ -DDISABLE_VLA -Dinline=
|
|
||||||
-lpthread $(pkg-config --cflags --libs libsodium opus vpx)
|
|
||||||
- name: Run the test
|
|
||||||
run: "./send_message_test | grep 'tox clients connected'"
|
|
||||||
|
|
||||||
build-android:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
- run: .github/scripts/cmake-android armeabi-v7a
|
|
||||||
- run: .github/scripts/cmake-android arm64-v8a
|
|
||||||
- run: .github/scripts/cmake-android x86
|
|
||||||
- run: .github/scripts/cmake-android x86_64
|
|
||||||
|
@@ -6,17 +6,22 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
|
|
||||||
|
# Cancel old PR builds when pushing new commits.
|
||||||
|
concurrency:
|
||||||
|
group: docker-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker-bootstrap-node:
|
docker-bootstrap-node:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: Docker Build
|
- name: Docker Build
|
||||||
@@ -33,15 +38,15 @@ jobs:
|
|||||||
needs: [docker-bootstrap-node]
|
needs: [docker-bootstrap-node]
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: "{{defaultContext}}:other/bootstrap_daemon/websocket"
|
context: "{{defaultContext}}:other/bootstrap_daemon/websocket"
|
||||||
push: ${{ github.event_name == 'push' }}
|
push: ${{ github.event_name == 'push' }}
|
||||||
@@ -52,17 +57,17 @@ jobs:
|
|||||||
docker-clusterfuzz:
|
docker-clusterfuzz:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: "."
|
context: "."
|
||||||
file: .clusterfuzzlite/Dockerfile
|
file: .clusterfuzzlite/Dockerfile
|
||||||
@@ -75,15 +80,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
file: testing/Dockerfile
|
file: testing/Dockerfile
|
||||||
push: ${{ github.event_name == 'push' }}
|
push: ${{ github.event_name == 'push' }}
|
||||||
@@ -95,15 +100,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
file: other/emscripten/Dockerfile
|
file: other/emscripten/Dockerfile
|
||||||
push: ${{ github.event_name == 'push' }}
|
push: ${{ github.event_name == 'push' }}
|
||||||
@@ -115,22 +120,22 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
with:
|
with:
|
||||||
driver: docker
|
driver: docker
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build toxchat/c-toxcore:sources
|
- name: Build toxchat/c-toxcore:sources
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
file: other/docker/sources/Dockerfile
|
file: other/docker/sources/Dockerfile
|
||||||
tags: toxchat/c-toxcore:sources
|
tags: toxchat/c-toxcore:sources
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
file: other/docker/esp32/Dockerfile
|
file: other/docker/esp32/Dockerfile
|
||||||
push: ${{ github.event_name == 'push' }}
|
push: ${{ github.event_name == 'push' }}
|
||||||
@@ -142,15 +147,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: "{{defaultContext}}:other/docker/windows"
|
context: "{{defaultContext}}:other/docker/windows"
|
||||||
push: ${{ github.event_name == 'push' }}
|
push: ${{ github.event_name == 'push' }}
|
||||||
@@ -166,15 +171,15 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
if: ${{ github.event_name == 'push' }}
|
if: ${{ github.event_name == 'push' }}
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: "{{defaultContext}}:other/docker/windows"
|
context: "{{defaultContext}}:other/docker/windows"
|
||||||
push: ${{ github.event_name == 'push' }}
|
push: ${{ github.event_name == 'push' }}
|
||||||
|
43
external/toxcore/c-toxcore/.github/workflows/post-submit.yml
vendored
Normal file
43
external/toxcore/c-toxcore/.github/workflows/post-submit.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: post-submit
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [master]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-alpine-s390x:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Docker Build
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
file: other/docker/alpine-s390x/Dockerfile
|
||||||
|
|
||||||
|
docker-coverage:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
with:
|
||||||
|
driver: docker
|
||||||
|
- name: Login to DockerHub
|
||||||
|
if: ${{ github.event_name == 'push' }}
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Build toxchat/c-toxcore:sources
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
file: other/docker/sources/Dockerfile
|
||||||
|
tags: toxchat/c-toxcore:sources
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
file: other/docker/coverage/Dockerfile
|
||||||
|
push: ${{ github.event_name == 'push' }}
|
||||||
|
tags: toxchat/c-toxcore:coverage
|
||||||
|
cache-from: type=registry,ref=toxchat/c-toxcore:coverage
|
||||||
|
cache-to: type=inline
|
@@ -6,22 +6,28 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
|
|
||||||
|
# Cancel old PR builds when pushing new commits.
|
||||||
|
concurrency:
|
||||||
|
group: scan-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
sonar-scan:
|
sonar-scan:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
env:
|
env:
|
||||||
SONAR_SCANNER_VERSION: 4.4.0.2170
|
SONAR_SCANNER_VERSION: 5.0.1.3006
|
||||||
SONAR_SERVER_URL: "https://sonarcloud.io"
|
SONAR_SERVER_URL: "https://sonarcloud.io"
|
||||||
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
|
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
- name: Set up JDK 11
|
- name: Set up JDK 17
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v2
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
distribution: "zulu"
|
||||||
|
java-version: 17
|
||||||
- name: Download and set up sonar-scanner
|
- name: Download and set up sonar-scanner
|
||||||
env:
|
env:
|
||||||
SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip
|
SONAR_SCANNER_DOWNLOAD_URL: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${{ env.SONAR_SCANNER_VERSION }}-linux.zip
|
||||||
|
3
external/toxcore/c-toxcore/.gitignore
vendored
3
external/toxcore/c-toxcore/.gitignore
vendored
@@ -14,6 +14,8 @@ Thumbs.db
|
|||||||
/_build
|
/_build
|
||||||
/_install
|
/_install
|
||||||
/tox-0.0.0*
|
/tox-0.0.0*
|
||||||
|
/.vs
|
||||||
|
/CppProperties.json
|
||||||
CMakeCache.txt
|
CMakeCache.txt
|
||||||
CMakeFiles
|
CMakeFiles
|
||||||
Makefile
|
Makefile
|
||||||
@@ -91,4 +93,5 @@ cscope.files
|
|||||||
# rpm
|
# rpm
|
||||||
tox.spec
|
tox.spec
|
||||||
|
|
||||||
|
/infer
|
||||||
.idea/
|
.idea/
|
||||||
|
7
external/toxcore/c-toxcore/BUILD.bazel
vendored
7
external/toxcore/c-toxcore/BUILD.bazel
vendored
@@ -1,25 +1,26 @@
|
|||||||
load("@rules_cc//cc:defs.bzl", "cc_library")
|
load("@rules_cc//cc:defs.bzl", "cc_library")
|
||||||
load("//tools/project:build_defs.bzl", "project")
|
load("//tools/project:build_defs.bzl", "project")
|
||||||
|
|
||||||
package(features = ["layering_check"])
|
project(license = "gpl3-https")
|
||||||
|
|
||||||
project()
|
|
||||||
|
|
||||||
genrule(
|
genrule(
|
||||||
name = "public_headers",
|
name = "public_headers",
|
||||||
srcs = [
|
srcs = [
|
||||||
"//c-toxcore/toxav:toxav.h",
|
"//c-toxcore/toxav:toxav.h",
|
||||||
"//c-toxcore/toxcore:tox.h",
|
"//c-toxcore/toxcore:tox.h",
|
||||||
|
"//c-toxcore/toxcore:tox_private.h",
|
||||||
"//c-toxcore/toxencryptsave:toxencryptsave.h",
|
"//c-toxcore/toxencryptsave:toxencryptsave.h",
|
||||||
],
|
],
|
||||||
outs = [
|
outs = [
|
||||||
"tox/toxav.h",
|
"tox/toxav.h",
|
||||||
"tox/tox.h",
|
"tox/tox.h",
|
||||||
|
"tox/tox_private.h",
|
||||||
"tox/toxencryptsave.h",
|
"tox/toxencryptsave.h",
|
||||||
],
|
],
|
||||||
cmd = """
|
cmd = """
|
||||||
cp $(location //c-toxcore/toxav:toxav.h) $(GENDIR)/c-toxcore/tox/toxav.h
|
cp $(location //c-toxcore/toxav:toxav.h) $(GENDIR)/c-toxcore/tox/toxav.h
|
||||||
cp $(location //c-toxcore/toxcore:tox.h) $(GENDIR)/c-toxcore/tox/tox.h
|
cp $(location //c-toxcore/toxcore:tox.h) $(GENDIR)/c-toxcore/tox/tox.h
|
||||||
|
cp $(location //c-toxcore/toxcore:tox_private.h) $(GENDIR)/c-toxcore/tox/tox_private.h
|
||||||
cp $(location //c-toxcore/toxencryptsave:toxencryptsave.h) $(GENDIR)/c-toxcore/tox/toxencryptsave.h
|
cp $(location //c-toxcore/toxencryptsave:toxencryptsave.h) $(GENDIR)/c-toxcore/tox/toxencryptsave.h
|
||||||
""",
|
""",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
|
178
external/toxcore/c-toxcore/CMakeLists.txt
vendored
178
external/toxcore/c-toxcore/CMakeLists.txt
vendored
@@ -14,8 +14,8 @@
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 2.8.12)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
cmake_policy(VERSION 2.8.12)
|
cmake_policy(VERSION 3.16)
|
||||||
project(toxcore)
|
project(toxcore)
|
||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH ${toxcore_SOURCE_DIR}/cmake)
|
list(APPEND CMAKE_MODULE_PATH ${toxcore_SOURCE_DIR}/cmake)
|
||||||
@@ -76,23 +76,51 @@ if(APPLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
find_package(GTest)
|
||||||
|
|
||||||
set(CMAKE_MACOSX_RPATH ON)
|
set(CMAKE_MACOSX_RPATH ON)
|
||||||
|
|
||||||
if(${CMAKE_VERSION} VERSION_LESS "3.1.0")
|
|
||||||
if(NOT MSVC)
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
# Set standard version for compiler.
|
# Set standard version for compiler.
|
||||||
|
if(MSVC AND MSVC_TOOLSET_VERSION LESS 143)
|
||||||
|
# https://developercommunity.visualstudio.com/t/older-winsdk-headers-are-incompatible-with-zcprepr/1593479
|
||||||
set(CMAKE_C_STANDARD 99)
|
set(CMAKE_C_STANDARD 99)
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
endif()
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_C_EXTENSIONS OFF)
|
set(CMAKE_C_EXTENSIONS OFF)
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
message(STATUS "Supported C compiler features = ${CMAKE_C_COMPILE_FEATURES}")
|
message(STATUS "Supported C compiler features = ${CMAKE_C_COMPILE_FEATURES}")
|
||||||
message(STATUS "Supported C++ compiler features = ${CMAKE_CXX_COMPILE_FEATURES}")
|
message(STATUS "Supported C++ compiler features = ${CMAKE_CXX_COMPILE_FEATURES}")
|
||||||
|
|
||||||
|
# Enable some warnings if we know the compiler.
|
||||||
|
if(MSVC)
|
||||||
|
add_compile_options(/W4 /analyze)
|
||||||
|
add_compile_options(/wd4100) # unreferenced formal parameter
|
||||||
|
add_compile_options(/wd4267) # narrowing conversion
|
||||||
|
add_compile_options(/wd4244) # narrowing conversion
|
||||||
|
add_compile_options(/wd4127) # conditional expression is constant
|
||||||
|
add_compile_options(/wd4995) # #pragma deprecated
|
||||||
|
add_compile_options(/wd4018) # signed/unsigned compare
|
||||||
|
add_compile_options(/wd4310) # cast truncates constant value
|
||||||
|
add_compile_options(/wd4389) # signed/unsigned compare
|
||||||
|
add_compile_options(/wd4245) # signed/unsigned assign/return/function call
|
||||||
|
add_compile_options(/wd4200) # nonstandard extension used: zero-sized array in struct/union
|
||||||
|
add_compile_options(/wd4702) # unreachable code
|
||||||
|
add_compile_options(/wd6340) # unsigned int passed to signed parameter
|
||||||
|
add_compile_options(/wd6326) # potential comparison of a constant with another constant
|
||||||
|
|
||||||
|
# TODO(iphydf): Look into these
|
||||||
|
add_compile_options(/wd4996) # use WSAAddressToStringW() instead of WSAAddressToStringA()
|
||||||
|
add_compile_options(/wd6255) # don't use alloca
|
||||||
|
add_compile_options(/wd6385) # reading invalid data
|
||||||
|
add_compile_options(/wd6001) # using uninitialized memory
|
||||||
|
add_compile_options(/wd6101) # returning uninitialized memory
|
||||||
|
add_compile_options(/wd6386) # buffer overrun
|
||||||
|
add_compile_options(/wd6011) # NULL dereference
|
||||||
|
add_compile_options(/wd6031) # sscanf return value ignored
|
||||||
|
add_compile_options(/wd6387) # passing NULL to fwrite
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(MIN_LOGGER_LEVEL "" CACHE STRING "Logging level to use (TRACE, DEBUG, INFO, WARNING, ERROR)")
|
set(MIN_LOGGER_LEVEL "" CACHE STRING "Logging level to use (TRACE, DEBUG, INFO, WARNING, ERROR)")
|
||||||
@@ -113,11 +141,6 @@ if(NOT USE_IPV6)
|
|||||||
add_definitions(-DUSE_IPV6=0)
|
add_definitions(-DUSE_IPV6=0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_TEST_NETWORK "Use a separate test network with different packet IDs" OFF)
|
|
||||||
if(USE_TEST_NETWORK)
|
|
||||||
add_definitions(-DUSE_TEST_NETWORK=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
option(BUILD_MISC_TESTS "Build additional tests and utilities" OFF)
|
option(BUILD_MISC_TESTS "Build additional tests and utilities" OFF)
|
||||||
option(BUILD_FUN_UTILS "Build additional just for fun utilities" OFF)
|
option(BUILD_FUN_UTILS "Build additional just for fun utilities" OFF)
|
||||||
|
|
||||||
@@ -137,21 +160,7 @@ if(BOOTSTRAP_DAEMON AND WIN32)
|
|||||||
set(BOOTSTRAP_DAEMON OFF)
|
set(BOOTSTRAP_DAEMON OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Enabling this breaks all other tests and no network connections will be possible
|
|
||||||
option(BUILD_FUZZ_TESTS "Build fuzzing harnesses" OFF)
|
option(BUILD_FUZZ_TESTS "Build fuzzing harnesses" OFF)
|
||||||
if(BUILD_FUZZ_TESTS)
|
|
||||||
message(STATUS "Building in fuzz testing mode, no network connection will be possible")
|
|
||||||
# Disable everything we can
|
|
||||||
set(AUTOTEST OFF)
|
|
||||||
set(BUILD_MISC_TESTS OFF)
|
|
||||||
set(BUILD_FUN_UTILS OFF)
|
|
||||||
set(ENABLE_SHARED OFF)
|
|
||||||
set(MUST_BUILD_TOXAV OFF)
|
|
||||||
set(BUILD_TOXAV OFF)
|
|
||||||
set(BOOTSTRAP_DAEMON OFF)
|
|
||||||
set(DHT_BOOTSTRAP OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
option(MSVC_STATIC_SODIUM "Whether to link libsodium statically for MSVC" OFF)
|
option(MSVC_STATIC_SODIUM "Whether to link libsodium statically for MSVC" OFF)
|
||||||
@@ -322,6 +331,8 @@ set(toxcore_SOURCES
|
|||||||
toxcore/tox.c
|
toxcore/tox.c
|
||||||
toxcore/tox_dispatch.c
|
toxcore/tox_dispatch.c
|
||||||
toxcore/tox_dispatch.h
|
toxcore/tox_dispatch.h
|
||||||
|
toxcore/tox_event.c
|
||||||
|
toxcore/tox_event.h
|
||||||
toxcore/tox_events.c
|
toxcore/tox_events.c
|
||||||
toxcore/tox_events.h
|
toxcore/tox_events.h
|
||||||
toxcore/tox.h
|
toxcore/tox.h
|
||||||
@@ -331,12 +342,20 @@ set(toxcore_SOURCES
|
|||||||
toxcore/tox_unpack.h
|
toxcore/tox_unpack.h
|
||||||
toxcore/util.c
|
toxcore/util.c
|
||||||
toxcore/util.h)
|
toxcore/util.h)
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${LIBSODIUM_LIBRARIES})
|
if(TARGET unofficial-sodium::sodium)
|
||||||
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} unofficial-sodium::sodium)
|
||||||
|
else()
|
||||||
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} ${LIBSODIUM_LIBRARIES})
|
||||||
|
set(toxcore_LINK_DIRECTORIES ${toxcore_LINK_DIRECTORIES} ${LIBSODIUM_LIBRARY_DIRS})
|
||||||
|
set(toxcore_INCLUDE_DIRECTORIES ${toxcore_INCLUDE_DIRECTORIES} ${LIBSODIUM_INCLUDE_DIRS})
|
||||||
|
set(toxcore_COMPILE_OPTIONS ${toxcore_COMPILE_OPTIONS} ${LIBSODIUM_CFLAGS_OTHER})
|
||||||
|
endif()
|
||||||
set(toxcore_PKGCONFIG_REQUIRES ${toxcore_PKGCONFIG_REQUIRES} libsodium)
|
set(toxcore_PKGCONFIG_REQUIRES ${toxcore_PKGCONFIG_REQUIRES} libsodium)
|
||||||
set(toxcore_API_HEADERS
|
set(toxcore_API_HEADERS
|
||||||
${toxcore_SOURCE_DIR}/toxcore/tox.h^tox
|
${toxcore_SOURCE_DIR}/toxcore/tox.h^tox
|
||||||
${toxcore_SOURCE_DIR}/toxcore/tox_events.h^tox
|
${toxcore_SOURCE_DIR}/toxcore/tox_events.h^tox
|
||||||
${toxcore_SOURCE_DIR}/toxcore/tox_dispatch.h^tox)
|
${toxcore_SOURCE_DIR}/toxcore/tox_dispatch.h^tox
|
||||||
|
${toxcore_SOURCE_DIR}/toxcore/tox_private.h^tox)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
@@ -366,7 +385,14 @@ if(BUILD_TOXAV)
|
|||||||
set(toxcore_API_HEADERS ${toxcore_API_HEADERS}
|
set(toxcore_API_HEADERS ${toxcore_API_HEADERS}
|
||||||
${toxcore_SOURCE_DIR}/toxav/toxav.h^toxav)
|
${toxcore_SOURCE_DIR}/toxav/toxav.h^toxav)
|
||||||
|
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${OPUS_LIBRARIES} ${VPX_LIBRARIES})
|
if(MSVC)
|
||||||
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} PkgConfig::OPUS PkgConfig::VPX)
|
||||||
|
else()
|
||||||
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} ${OPUS_LIBRARIES} ${VPX_LIBRARIES})
|
||||||
|
set(toxcore_LINK_DIRECTORIES ${toxcore_LINK_DIRECTORIES} ${OPUS_LIBRARY_DIRS} ${VPX_LIBRARY_DIRS})
|
||||||
|
set(toxcore_INCLUDE_DIRECTORIES ${toxcore_INCLUDE_DIRECTORIES} ${OPUS_INCLUDE_DIRS} ${VPX_INCLUDE_DIRS})
|
||||||
|
set(toxcore_COMPILE_OPTIONS ${toxcore_COMPILE_OPTIONS} ${OPUS_CFLAGS_OTHER} ${VPX_CFLAGS_OTHER})
|
||||||
|
endif()
|
||||||
set(toxcore_PKGCONFIG_REQUIRES ${toxcore_PKGCONFIG_REQUIRES} opus vpx)
|
set(toxcore_PKGCONFIG_REQUIRES ${toxcore_PKGCONFIG_REQUIRES} opus vpx)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -393,29 +419,32 @@ set(toxcore_API_HEADERS ${toxcore_API_HEADERS}
|
|||||||
# any potential libvpx linking.
|
# any potential libvpx linking.
|
||||||
message("CMAKE_THREAD_LIBS_INIT: ${CMAKE_THREAD_LIBS_INIT}")
|
message("CMAKE_THREAD_LIBS_INIT: ${CMAKE_THREAD_LIBS_INIT}")
|
||||||
if(CMAKE_THREAD_LIBS_INIT)
|
if(CMAKE_THREAD_LIBS_INIT)
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${CMAKE_THREAD_LIBS_INIT})
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if(NSL_LIBRARIES)
|
if(NSL_LIBRARIES)
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${NSL_LIBRARIES})
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} ${NSL_LIBRARIES})
|
||||||
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lnsl)
|
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lnsl)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(RT_LIBRARIES)
|
if(RT_LIBRARIES)
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${RT_LIBRARIES})
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} ${RT_LIBRARIES})
|
||||||
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lrt)
|
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lrt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SOCKET_LIBRARIES)
|
if(SOCKET_LIBRARIES)
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ${SOCKET_LIBRARIES})
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} ${SOCKET_LIBRARIES})
|
||||||
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lsocket)
|
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lsocket)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(TARGET PThreads4W::PThreads4W)
|
||||||
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} PThreads4W::PThreads4W)
|
||||||
|
elseif(TARGET Threads::Threads)
|
||||||
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} Threads::Threads)
|
||||||
|
endif()
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(toxcore_LINK_MODULES ${toxcore_LINK_MODULES} ws2_32 iphlpapi)
|
set(toxcore_LINK_LIBRARIES ${toxcore_LINK_LIBRARIES} iphlpapi wsock32 ws2_32)
|
||||||
set(toxcore_PKGCONFIG_LIBS ${toxcore_PKGCONFIG_LIBS} -lws2_32 -liphlpapi)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -425,10 +454,34 @@ endif()
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
# Create combined library from all the sources.
|
# Create combined library from all the sources.
|
||||||
add_module(toxcore ${toxcore_SOURCES})
|
if(ENABLE_SHARED)
|
||||||
|
add_library(toxcore_shared SHARED ${toxcore_SOURCES})
|
||||||
|
set_target_properties(toxcore_shared PROPERTIES OUTPUT_NAME toxcore)
|
||||||
|
target_link_libraries(toxcore_shared PRIVATE ${toxcore_LINK_LIBRARIES})
|
||||||
|
target_link_directories(toxcore_shared PUBLIC ${toxcore_LINK_DIRECTORIES})
|
||||||
|
target_include_directories(toxcore_shared SYSTEM PRIVATE ${toxcore_INCLUDE_DIRECTORIES})
|
||||||
|
target_compile_options(toxcore_shared PRIVATE ${toxcore_COMPILE_OPTIONS})
|
||||||
|
endif()
|
||||||
|
|
||||||
# Link it to all dependencies.
|
if(ENABLE_STATIC)
|
||||||
target_link_modules(toxcore ${toxcore_LINK_MODULES})
|
add_library(toxcore_static STATIC ${toxcore_SOURCES})
|
||||||
|
if(NOT MSVC)
|
||||||
|
set_target_properties(toxcore_static PROPERTIES OUTPUT_NAME toxcore)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(toxcore_static PRIVATE ${toxcore_LINK_LIBRARIES})
|
||||||
|
target_link_directories(toxcore_static PUBLIC ${toxcore_LINK_DIRECTORIES})
|
||||||
|
target_include_directories(toxcore_static SYSTEM PRIVATE ${toxcore_INCLUDE_DIRECTORIES})
|
||||||
|
target_compile_options(toxcore_static PRIVATE ${toxcore_COMPILE_OPTIONS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_FUZZ_TESTS)
|
||||||
|
add_library(toxcore_fuzz STATIC ${toxcore_SOURCES})
|
||||||
|
target_link_libraries(toxcore_fuzz PRIVATE ${toxcore_LINK_LIBRARIES})
|
||||||
|
target_link_directories(toxcore_fuzz PUBLIC ${toxcore_LINK_DIRECTORIES})
|
||||||
|
target_include_directories(toxcore_fuzz SYSTEM PRIVATE ${toxcore_INCLUDE_DIRECTORIES})
|
||||||
|
target_compile_options(toxcore_fuzz PRIVATE ${toxcore_COMPILE_OPTIONS})
|
||||||
|
target_compile_definitions(toxcore_fuzz PUBLIC "FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Make version script (on systems that support it) to limit symbol visibility.
|
# Make version script (on systems that support it) to limit symbol visibility.
|
||||||
make_version_script(toxcore ${toxcore_API_HEADERS})
|
make_version_script(toxcore ${toxcore_API_HEADERS})
|
||||||
@@ -443,10 +496,35 @@ install_module(toxcore DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/tox)
|
|||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
include(CompileGTest)
|
add_library(test_util STATIC
|
||||||
|
toxcore/DHT_test_util.cc
|
||||||
|
toxcore/DHT_test_util.hh
|
||||||
|
toxcore/crypto_core_test_util.cc
|
||||||
|
toxcore/crypto_core_test_util.hh
|
||||||
|
toxcore/mem_test_util.cc
|
||||||
|
toxcore/mem_test_util.hh
|
||||||
|
toxcore/network_test_util.cc
|
||||||
|
toxcore/network_test_util.hh
|
||||||
|
toxcore/test_util.cc
|
||||||
|
toxcore/test_util.hh)
|
||||||
|
|
||||||
|
function(unit_test subdir target)
|
||||||
|
add_executable(unit_${target}_test ${subdir}/${target}_test.cc)
|
||||||
|
target_link_libraries(unit_${target}_test PRIVATE test_util)
|
||||||
|
if(TARGET toxcore_static)
|
||||||
|
target_link_libraries(unit_${target}_test PRIVATE toxcore_static)
|
||||||
|
else()
|
||||||
|
target_link_libraries(unit_${target}_test PRIVATE toxcore_shared)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(unit_${target}_test PRIVATE GTest::gtest GTest::gtest_main GTest::gmock)
|
||||||
|
set_target_properties(unit_${target}_test PROPERTIES COMPILE_FLAGS "${TEST_CXX_FLAGS}")
|
||||||
|
add_test(NAME ${target} COMMAND ${CROSSCOMPILING_EMULATOR} unit_${target}_test)
|
||||||
|
set_property(TEST ${target} PROPERTY ENVIRONMENT "LLVM_PROFILE_FILE=${target}.profraw")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# The actual unit tests follow.
|
# The actual unit tests follow.
|
||||||
#
|
#
|
||||||
|
if(GTEST_FOUND)
|
||||||
unit_test(toxav ring_buffer)
|
unit_test(toxav ring_buffer)
|
||||||
unit_test(toxav rtp)
|
unit_test(toxav rtp)
|
||||||
unit_test(toxcore DHT)
|
unit_test(toxcore DHT)
|
||||||
@@ -454,11 +532,14 @@ unit_test(toxcore bin_pack)
|
|||||||
unit_test(toxcore crypto_core)
|
unit_test(toxcore crypto_core)
|
||||||
unit_test(toxcore group_announce)
|
unit_test(toxcore group_announce)
|
||||||
unit_test(toxcore group_moderation)
|
unit_test(toxcore group_moderation)
|
||||||
|
unit_test(toxcore list)
|
||||||
unit_test(toxcore mem)
|
unit_test(toxcore mem)
|
||||||
unit_test(toxcore mono_time)
|
unit_test(toxcore mono_time)
|
||||||
unit_test(toxcore ping_array)
|
unit_test(toxcore ping_array)
|
||||||
|
unit_test(toxcore test_util)
|
||||||
unit_test(toxcore tox)
|
unit_test(toxcore tox)
|
||||||
unit_test(toxcore util)
|
unit_test(toxcore util)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(testing)
|
add_subdirectory(testing)
|
||||||
|
|
||||||
@@ -482,7 +563,20 @@ if(DHT_BOOTSTRAP)
|
|||||||
add_executable(DHT_bootstrap
|
add_executable(DHT_bootstrap
|
||||||
other/DHT_bootstrap.c
|
other/DHT_bootstrap.c
|
||||||
other/bootstrap_node_packets.c)
|
other/bootstrap_node_packets.c)
|
||||||
target_link_modules(DHT_bootstrap toxcore misc_tools)
|
if(TARGET toxcore_static)
|
||||||
|
target_link_libraries(DHT_bootstrap PRIVATE toxcore_static)
|
||||||
|
else()
|
||||||
|
target_link_libraries(DHT_bootstrap PRIVATE toxcore_shared)
|
||||||
|
endif()
|
||||||
|
target_link_libraries(DHT_bootstrap PRIVATE misc_tools)
|
||||||
|
if(TARGET unofficial-sodium::sodium)
|
||||||
|
target_link_libraries(DHT_bootstrap PRIVATE unofficial-sodium::sodium)
|
||||||
|
endif()
|
||||||
|
if(TARGET PThreads4W::PThreads4W)
|
||||||
|
target_link_libraries(DHT_bootstrap PRIVATE PThreads4W::PThreads4W)
|
||||||
|
elseif(TARGET Threads::Threads)
|
||||||
|
target_link_libraries(DHT_bootstrap PRIVATE Threads::Threads)
|
||||||
|
endif()
|
||||||
install(TARGETS DHT_bootstrap RUNTIME DESTINATION bin)
|
install(TARGETS DHT_bootstrap RUNTIME DESTINATION bin)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
21
external/toxcore/c-toxcore/CMakePresets.json
vendored
Normal file
21
external/toxcore/c-toxcore/CMakePresets.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"configurePresets": [
|
||||||
|
{
|
||||||
|
"name": "windows-default",
|
||||||
|
"binaryDir": "${sourceDir}/_build",
|
||||||
|
"cacheVariables": {
|
||||||
|
"ENABLE_SHARED": true,
|
||||||
|
"ENABLE_STATIC": true,
|
||||||
|
"AUTOTEST": true,
|
||||||
|
"BUILD_MISC_TESTS": true,
|
||||||
|
"BOOTSTRAP_DAEMON": false,
|
||||||
|
"MUST_BUILD_TOXAV": true,
|
||||||
|
"TEST_TIMEOUT_SECONDS": "60",
|
||||||
|
"CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS": true,
|
||||||
|
"CMAKE_COMPILE_WARNING_AS_ERROR": true,
|
||||||
|
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
6
external/toxcore/c-toxcore/INSTALL.md
vendored
6
external/toxcore/c-toxcore/INSTALL.md
vendored
@@ -33,10 +33,10 @@ These instructions will guide you through the process of building and installing
|
|||||||
This repository, although called `toxcore`, in fact contains several libraries besides `toxcore` which complement it, as well as several executables. However, note that although these are separate libraries, at the moment, when building the libraries, they are all merged into a single `toxcore` library. Here is the full list of the main components that can be built using the CMake, their dependencies and descriptions.
|
This repository, although called `toxcore`, in fact contains several libraries besides `toxcore` which complement it, as well as several executables. However, note that although these are separate libraries, at the moment, when building the libraries, they are all merged into a single `toxcore` library. Here is the full list of the main components that can be built using the CMake, their dependencies and descriptions.
|
||||||
|
|
||||||
| Name | Type | Dependencies | Platform | Description |
|
| Name | Type | Dependencies | Platform | Description |
|
||||||
|------------------|------------|-----------------------------------------------|----------------|----------------------------------------------------------------------------|
|
|------------------|------------|------------------------------------|----------------|----------------------------------------------------------------------------|
|
||||||
| `toxcore` | Library | libnacl or libsodium, libm, libpthread, librt | Cross-platform | The main Tox library that provides the messenger functionality. |
|
| `toxcore` | Library | libsodium, libm, libpthread, librt | Cross-platform | The main Tox library that provides the messenger functionality. |
|
||||||
| `toxav` | Library | libtoxcore, libopus, libvpx | Cross-platform | Provides audio/video functionality. |
|
| `toxav` | Library | libtoxcore, libopus, libvpx | Cross-platform | Provides audio/video functionality. |
|
||||||
| `toxencryptsave` | Library | libtoxcore, libnacl or libsodium | Cross-platform | Provides encryption of Tox profiles (savedata), as well as arbitrary data. |
|
| `toxencryptsave` | Library | libtoxcore, libsodium | Cross-platform | Provides encryption of Tox profiles (savedata), as well as arbitrary data. |
|
||||||
| `DHT_bootstrap` | Executable | libtoxcore | Cross-platform | A simple DHT bootstrap node. |
|
| `DHT_bootstrap` | Executable | libtoxcore | Cross-platform | A simple DHT bootstrap node. |
|
||||||
| `tox-bootstrapd` | Executable | libtoxcore, libconfig | Unix-like | Highly configurable DHT bootstrap node daemon (systemd, SysVinit, Docker). |
|
| `tox-bootstrapd` | Executable | libtoxcore, libconfig | Unix-like | Highly configurable DHT bootstrap node daemon (systemd, SysVinit, Docker). |
|
||||||
| `cmp` | Library | | Cross-platform | C implementation of the MessagePack serialization format. [https://github.com/camgunz/cmp](https://github.com/camgunz/cmp) |
|
| `cmp` | Library | | Cross-platform | C implementation of the MessagePack serialization format. [https://github.com/camgunz/cmp](https://github.com/camgunz/cmp) |
|
||||||
|
9
external/toxcore/c-toxcore/LICENSE
vendored
9
external/toxcore/c-toxcore/LICENSE
vendored
@@ -1,7 +1,7 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
@@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
@@ -664,12 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
|
|||||||
You should also get your employer (if you work as a programmer) or school,
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
<http://www.gnu.org/licenses/>.
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
The GNU General Public License does not permit incorporating your program
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
may consider it more useful to permit linking proprietary applications with
|
may consider it more useful to permit linking proprietary applications with
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
Public License instead of this License. But first, please read
|
Public License instead of this License. But first, please read
|
||||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
|
|
||||||
|
17
external/toxcore/c-toxcore/README.md
vendored
17
external/toxcore/c-toxcore/README.md
vendored
@@ -4,13 +4,12 @@
|
|||||||
|
|
||||||
[**Website**](https://tox.chat) **|** [**Wiki**](https://wiki.tox.chat/) **|** [**Blog**](https://blog.tox.chat/) **|** [**FAQ**](https://wiki.tox.chat/doku.php?id=users:faq) **|** [**Binaries/Downloads**](https://tox.chat/download.html) **|** [**Clients**](https://wiki.tox.chat/doku.php?id=clients) **|** [**Compiling**](/INSTALL.md)
|
[**Website**](https://tox.chat) **|** [**Wiki**](https://wiki.tox.chat/) **|** [**Blog**](https://blog.tox.chat/) **|** [**FAQ**](https://wiki.tox.chat/doku.php?id=users:faq) **|** [**Binaries/Downloads**](https://tox.chat/download.html) **|** [**Clients**](https://wiki.tox.chat/doku.php?id=clients) **|** [**Compiling**](/INSTALL.md)
|
||||||
|
|
||||||
**IRC Channels:** Users: [#tox@libera.chat](https://web.libera.chat/#tox), Developers: [#toktok@libera.chat](https://web.libera.chat/#toktok)
|
|
||||||
|
|
||||||
## What is Tox
|
## What is Tox
|
||||||
|
|
||||||
Tox is a peer to peer (serverless) instant messenger aimed at making security
|
Tox is a peer to peer (serverless) instant messenger aimed at making security
|
||||||
and privacy easy to obtain for regular users. It uses
|
and privacy easy to obtain for regular users. It uses
|
||||||
[NaCl](https://nacl.cr.yp.to/) for its encryption and authentication.
|
[libsodium](https://doc.libsodium.org/) (based on
|
||||||
|
[NaCl](https://nacl.cr.yp.to/)) for its encryption and authentication.
|
||||||
|
|
||||||
## IMPORTANT!
|
## IMPORTANT!
|
||||||
|
|
||||||
@@ -20,12 +19,12 @@ This is an **experimental** cryptographic network library. It has not been
|
|||||||
formally audited by an independent third party that specializes in
|
formally audited by an independent third party that specializes in
|
||||||
cryptography or cryptanalysis. **Use this library at your own risk.**
|
cryptography or cryptanalysis. **Use this library at your own risk.**
|
||||||
|
|
||||||
The underlying crypto library [NaCl](https://nacl.cr.yp.to/install.html)
|
The underlying crypto library [libsodium](https://doc.libsodium.org/) provides
|
||||||
provides reliable encryption, but the security model has not yet been fully
|
reliable encryption, but the security model has not yet been fully specified.
|
||||||
specified. See [issue 210](https://github.com/TokTok/c-toxcore/issues/210) for
|
See [issue 210](https://github.com/TokTok/c-toxcore/issues/210) for a
|
||||||
a discussion on developing a threat model. See other issues for known
|
discussion on developing a threat model. See other issues for known weaknesses
|
||||||
weaknesses (e.g. [issue 426](https://github.com/TokTok/c-toxcore/issues/426)
|
(e.g. [issue 426](https://github.com/TokTok/c-toxcore/issues/426) describes
|
||||||
describes what can happen if your secret key is stolen).
|
what can happen if your secret key is stolen).
|
||||||
|
|
||||||
## Toxcore Development Roadmap
|
## Toxcore Development Roadmap
|
||||||
|
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
|
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
|
||||||
|
|
||||||
package(features = ["layering_check"])
|
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "check_compat",
|
name = "check_compat",
|
||||||
testonly = True,
|
testonly = True,
|
||||||
|
@@ -3,19 +3,35 @@ set(TEST_TIMEOUT_SECONDS "" CACHE STRING "Limit runtime of each test to the numb
|
|||||||
add_library(auto_test_support
|
add_library(auto_test_support
|
||||||
auto_test_support.c
|
auto_test_support.c
|
||||||
auto_test_support.h)
|
auto_test_support.h)
|
||||||
target_link_modules(auto_test_support toxcore misc_tools)
|
target_link_libraries(auto_test_support PRIVATE misc_tools)
|
||||||
|
if(TARGET toxcore_static)
|
||||||
|
target_link_libraries(auto_test_support PRIVATE toxcore_static)
|
||||||
|
else()
|
||||||
|
target_link_libraries(auto_test_support PRIVATE toxcore_shared)
|
||||||
|
endif()
|
||||||
|
if(TARGET PThreads4W::PThreads4W)
|
||||||
|
target_link_libraries(auto_test_support PRIVATE PThreads4W::PThreads4W)
|
||||||
|
elseif(TARGET Threads::Threads)
|
||||||
|
target_link_libraries(auto_test_support PRIVATE Threads::Threads)
|
||||||
|
endif()
|
||||||
|
|
||||||
function(auto_test target)
|
function(auto_test target)
|
||||||
if(AUTOTEST AND NOT (MSVC AND ARGV1 STREQUAL "MSVC_DONT_BUILD"))
|
|
||||||
add_executable(auto_${target}_test ${target}_test.c)
|
add_executable(auto_${target}_test ${target}_test.c)
|
||||||
target_link_modules(auto_${target}_test toxcore misc_tools auto_test_support)
|
target_link_libraries(auto_${target}_test PRIVATE misc_tools auto_test_support)
|
||||||
if(NOT ARGV1 STREQUAL "DONT_RUN")
|
if(TARGET toxcore_static)
|
||||||
|
target_link_libraries(auto_${target}_test PRIVATE toxcore_static)
|
||||||
|
else()
|
||||||
|
target_link_libraries(auto_${target}_test PRIVATE toxcore_shared)
|
||||||
|
endif()
|
||||||
|
if(TARGET PThreads4W::PThreads4W)
|
||||||
|
target_link_libraries(auto_${target}_test PRIVATE PThreads4W::PThreads4W)
|
||||||
|
elseif(TARGET Threads::Threads)
|
||||||
|
target_link_libraries(auto_${target}_test PRIVATE Threads::Threads)
|
||||||
|
endif()
|
||||||
add_test(NAME ${target} COMMAND ${CROSSCOMPILING_EMULATOR} auto_${target}_test)
|
add_test(NAME ${target} COMMAND ${CROSSCOMPILING_EMULATOR} auto_${target}_test)
|
||||||
set_tests_properties(${target} PROPERTIES TIMEOUT "${TEST_TIMEOUT_SECONDS}")
|
set_tests_properties(${target} PROPERTIES TIMEOUT "${TEST_TIMEOUT_SECONDS}")
|
||||||
# add the source dir as environment variable, so the testdata can be found
|
# add the source dir as environment variable, so the testdata can be found
|
||||||
set_tests_properties(${target} PROPERTIES ENVIRONMENT "LLVM_PROFILE_FILE=${target}.profraw;srcdir=${CMAKE_CURRENT_SOURCE_DIR}")
|
set_tests_properties(${target} PROPERTIES ENVIRONMENT "LLVM_PROFILE_FILE=${target}.profraw;srcdir=${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
auto_test(TCP)
|
auto_test(TCP)
|
||||||
@@ -69,17 +85,33 @@ auto_test(typing)
|
|||||||
auto_test(version)
|
auto_test(version)
|
||||||
auto_test(save_compatibility)
|
auto_test(save_compatibility)
|
||||||
|
|
||||||
|
target_include_directories(auto_encryptsave_test SYSTEM PRIVATE ${LIBSODIUM_INCLUDE_DIRS})
|
||||||
|
|
||||||
if(NON_HERMETIC_TESTS)
|
if(NON_HERMETIC_TESTS)
|
||||||
auto_test(bootstrap)
|
auto_test(bootstrap)
|
||||||
auto_test(tcp_relay)
|
auto_test(tcp_relay)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(BUILD_TOXAV)
|
if(BUILD_TOXAV)
|
||||||
auto_test(conference_av MSVC_DONT_BUILD)
|
auto_test(conference_av)
|
||||||
auto_test(toxav_basic)
|
auto_test(toxav_basic)
|
||||||
auto_test(toxav_many)
|
auto_test(toxav_many)
|
||||||
endif()
|
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
target_link_libraries(auto_toxav_basic_test PRIVATE PkgConfig::VPX)
|
||||||
|
target_link_libraries(auto_toxav_many_test PRIVATE PkgConfig::VPX)
|
||||||
|
else()
|
||||||
|
target_link_libraries(auto_toxav_basic_test PRIVATE ${VPX_LIBRARIES})
|
||||||
|
target_link_directories(auto_toxav_basic_test PRIVATE ${VPX_LIBRARY_DIRS})
|
||||||
|
target_include_directories(auto_toxav_basic_test SYSTEM PRIVATE ${VPX_INCLUDE_DIRS})
|
||||||
|
target_compile_options(auto_toxav_basic_test PRIVATE ${VPX_CFLAGS_OTHER})
|
||||||
|
|
||||||
|
target_link_libraries(auto_toxav_many_test PRIVATE ${VPX_LIBRARIES})
|
||||||
|
target_link_directories(auto_toxav_many_test PRIVATE ${VPX_LIBRARY_DIRS})
|
||||||
|
target_include_directories(auto_toxav_many_test SYSTEM PRIVATE ${VPX_INCLUDE_DIRS})
|
||||||
|
target_compile_options(auto_toxav_many_test PRIVATE ${VPX_CFLAGS_OTHER})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(PROXY_TEST)
|
if(PROXY_TEST)
|
||||||
auto_test(proxy)
|
auto_test(proxy)
|
||||||
|
@@ -13,6 +13,8 @@ TESTS = \
|
|||||||
conference_test \
|
conference_test \
|
||||||
conference_two_test \
|
conference_two_test \
|
||||||
crypto_test \
|
crypto_test \
|
||||||
|
encryptsave_test \
|
||||||
|
file_saving_test \
|
||||||
file_transfer_test \
|
file_transfer_test \
|
||||||
forwarding_test \
|
forwarding_test \
|
||||||
friend_connection_test \
|
friend_connection_test \
|
||||||
@@ -34,34 +36,24 @@ TESTS = \
|
|||||||
set_name_test \
|
set_name_test \
|
||||||
set_status_message_test \
|
set_status_message_test \
|
||||||
TCP_test \
|
TCP_test \
|
||||||
tox_events_test \
|
|
||||||
tox_dispatch_test \
|
tox_dispatch_test \
|
||||||
|
tox_events_test \
|
||||||
tox_many_tcp_test \
|
tox_many_tcp_test \
|
||||||
tox_many_test \
|
tox_many_test \
|
||||||
tox_strncasecmp_test \
|
tox_strncasecmp_test \
|
||||||
typing_test \
|
typing_test \
|
||||||
version_test
|
version_test
|
||||||
|
|
||||||
if !WITH_NACL
|
|
||||||
TESTS += \
|
|
||||||
encryptsave_test \
|
|
||||||
file_saving_test
|
|
||||||
endif
|
|
||||||
|
|
||||||
AUTOTEST_CFLAGS = \
|
AUTOTEST_CFLAGS = \
|
||||||
$(LIBSODIUM_CFLAGS) \
|
$(LIBSODIUM_CFLAGS)
|
||||||
$(NACL_CFLAGS)
|
|
||||||
|
|
||||||
AUTOTEST_LDADD = \
|
AUTOTEST_LDADD = \
|
||||||
$(LIBSODIUM_LDFLAGS) \
|
$(LIBSODIUM_LDFLAGS) \
|
||||||
$(NACL_LDFLAGS) \
|
|
||||||
libmisc_tools.la \
|
libmisc_tools.la \
|
||||||
libauto_test_support.la \
|
libauto_test_support.la \
|
||||||
libtoxcore.la \
|
libtoxcore.la \
|
||||||
libtoxencryptsave.la \
|
libtoxencryptsave.la \
|
||||||
$(LIBSODIUM_LIBS) \
|
$(LIBSODIUM_LIBS)
|
||||||
$(NACL_OBJECTS) \
|
|
||||||
$(NACL_LIBS)
|
|
||||||
|
|
||||||
|
|
||||||
if BUILD_AV
|
if BUILD_AV
|
||||||
@@ -195,14 +187,14 @@ TCP_test_SOURCES = ../auto_tests/TCP_test.c
|
|||||||
TCP_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
TCP_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
||||||
TCP_test_LDADD = $(AUTOTEST_LDADD)
|
TCP_test_LDADD = $(AUTOTEST_LDADD)
|
||||||
|
|
||||||
tox_events_test_SOURCES = ../auto_tests/tox_events_test.c
|
|
||||||
tox_events_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
|
||||||
tox_events_test_LDADD = $(AUTOTEST_LDADD)
|
|
||||||
|
|
||||||
tox_dispatch_test_SOURCES = ../auto_tests/tox_dispatch_test.c
|
tox_dispatch_test_SOURCES = ../auto_tests/tox_dispatch_test.c
|
||||||
tox_dispatch_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
tox_dispatch_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
||||||
tox_dispatch_test_LDADD = $(AUTOTEST_LDADD)
|
tox_dispatch_test_LDADD = $(AUTOTEST_LDADD)
|
||||||
|
|
||||||
|
tox_events_test_SOURCES = ../auto_tests/tox_events_test.c
|
||||||
|
tox_events_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
||||||
|
tox_events_test_LDADD = $(AUTOTEST_LDADD)
|
||||||
|
|
||||||
tox_many_tcp_test_SOURCES = ../auto_tests/tox_many_tcp_test.c
|
tox_many_tcp_test_SOURCES = ../auto_tests/tox_many_tcp_test.c
|
||||||
tox_many_tcp_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
tox_many_tcp_test_CFLAGS = $(AUTOTEST_CFLAGS)
|
||||||
tox_many_tcp_test_LDADD = $(AUTOTEST_LDADD)
|
tox_many_tcp_test_LDADD = $(AUTOTEST_LDADD)
|
||||||
|
@@ -61,9 +61,13 @@ static void test_store_data(void)
|
|||||||
ck_assert(log != nullptr);
|
ck_assert(log != nullptr);
|
||||||
logger_callback_log(log, print_debug_logger, nullptr, nullptr);
|
logger_callback_log(log, print_debug_logger, nullptr, nullptr);
|
||||||
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
|
Mono_Time *mono_time = mono_time_new(mem, nullptr, nullptr);
|
||||||
|
ck_assert(mono_time != nullptr);
|
||||||
Networking_Core *net = new_networking_no_udp(log, mem, ns);
|
Networking_Core *net = new_networking_no_udp(log, mem, ns);
|
||||||
|
ck_assert(net != nullptr);
|
||||||
DHT *dht = new_dht(log, mem, rng, ns, mono_time, net, true, true);
|
DHT *dht = new_dht(log, mem, rng, ns, mono_time, net, true, true);
|
||||||
|
ck_assert(dht != nullptr);
|
||||||
Forwarding *forwarding = new_forwarding(log, rng, mono_time, dht);
|
Forwarding *forwarding = new_forwarding(log, rng, mono_time, dht);
|
||||||
|
ck_assert(forwarding != nullptr);
|
||||||
Announcements *announce = new_announcements(log, mem, rng, mono_time, forwarding);
|
Announcements *announce = new_announcements(log, mem, rng, mono_time, forwarding);
|
||||||
ck_assert(announce != nullptr);
|
ck_assert(announce != nullptr);
|
||||||
|
|
||||||
|
@@ -28,7 +28,6 @@ static const struct BootstrapNodes {
|
|||||||
uint16_t port;
|
uint16_t port;
|
||||||
const uint8_t key[32];
|
const uint8_t key[32];
|
||||||
} bootstrap_nodes[] = {
|
} bootstrap_nodes[] = {
|
||||||
#ifndef USE_TEST_NETWORK
|
|
||||||
{
|
{
|
||||||
"tox.abilinski.com", 33445,
|
"tox.abilinski.com", 33445,
|
||||||
0x10, 0xC0, 0x0E, 0xB2, 0x50, 0xC3, 0x23, 0x3E,
|
0x10, 0xC0, 0x0E, 0xB2, 0x50, 0xC3, 0x23, 0x3E,
|
||||||
@@ -57,22 +56,6 @@ static const struct BootstrapNodes {
|
|||||||
0x6D, 0xC9, 0xD0, 0xA3, 0x00, 0xE6, 0xC3, 0x57,
|
0x6D, 0xC9, 0xD0, 0xA3, 0x00, 0xE6, 0xC3, 0x57,
|
||||||
0x63, 0x4E, 0xE2, 0xDA, 0x88, 0xC3, 0x54, 0x63,
|
0x63, 0x4E, 0xE2, 0xDA, 0x88, 0xC3, 0x54, 0x63,
|
||||||
},
|
},
|
||||||
#else
|
|
||||||
{
|
|
||||||
"172.93.52.70", 33445,
|
|
||||||
0x79, 0xCA, 0xDA, 0x49, 0x74, 0xB0, 0x92, 0x6F,
|
|
||||||
0x28, 0x6F, 0x02, 0x5C, 0xD5, 0xFF, 0xDF, 0x3E,
|
|
||||||
0x65, 0x4A, 0x37, 0x58, 0xC5, 0x3E, 0x02, 0x73,
|
|
||||||
0xEC, 0xFC, 0x4D, 0x12, 0xC2, 0x1D, 0xCA, 0x48,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tox.plastiras.org", 38445,
|
|
||||||
0x5E, 0x47, 0xBA, 0x1D, 0xC3, 0x91, 0x3E, 0xB2,
|
|
||||||
0xCB, 0xF2, 0xD6, 0x4C, 0xE4, 0xF2, 0x3D, 0x8B,
|
|
||||||
0xFE, 0x53, 0x91, 0xBF, 0xAB, 0xE5, 0xC4, 0x3C,
|
|
||||||
0x5B, 0xAD, 0x13, 0xF0, 0xA4, 0x14, 0xCD, 0x77,
|
|
||||||
},
|
|
||||||
#endif // USE_TEST_NETWORK
|
|
||||||
{ nullptr, 0, 0 },
|
{ nullptr, 0, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -166,6 +149,8 @@ void set_mono_time_callback(AutoTox *autotox)
|
|||||||
Mono_Time *mono_time = autotox->tox->mono_time;
|
Mono_Time *mono_time = autotox->tox->mono_time;
|
||||||
|
|
||||||
autotox->clock = current_time_monotonic(mono_time);
|
autotox->clock = current_time_monotonic(mono_time);
|
||||||
|
ck_assert_msg(autotox->clock >= 1000,
|
||||||
|
"clock is too low (not initialised?): %lu", (unsigned long)autotox->clock);
|
||||||
mono_time_set_current_time_callback(mono_time, nullptr, nullptr); // set to default first
|
mono_time_set_current_time_callback(mono_time, nullptr, nullptr); // set to default first
|
||||||
mono_time_set_current_time_callback(mono_time, get_state_clock_callback, &autotox->clock);
|
mono_time_set_current_time_callback(mono_time, get_state_clock_callback, &autotox->clock);
|
||||||
}
|
}
|
||||||
@@ -332,7 +317,7 @@ static void bootstrap_autotoxes(struct Tox_Options *options, uint32_t tox_count,
|
|||||||
for (uint32_t i = 1; i < tox_count; ++i) {
|
for (uint32_t i = 1; i < tox_count; ++i) {
|
||||||
Tox_Err_Bootstrap err;
|
Tox_Err_Bootstrap err;
|
||||||
tox_bootstrap(autotoxes[i].tox, "localhost", dht_port, dht_key, &err);
|
tox_bootstrap(autotoxes[i].tox, "localhost", dht_port, dht_key, &err);
|
||||||
ck_assert(err == TOX_ERR_BOOTSTRAP_OK);
|
ck_assert_msg(err == TOX_ERR_BOOTSTRAP_OK, "bootstrap error for port %d: %d", dht_port, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!udp_enabled) {
|
if (!udp_enabled) {
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
#define ck_assert(ok) do { \
|
#define ck_assert(ok) do { \
|
||||||
if (!(ok)) { \
|
if (!(ok)) { \
|
||||||
fprintf(stderr, "%s:%d: failed `%s'\n", __FILE__, __LINE__, #ok); \
|
fprintf(stderr, "%s:%d: failed `%s'\n", __FILE__, __LINE__, #ok); \
|
||||||
abort(); \
|
exit(7); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
fprintf(stderr, "%s:%d: failed `%s': ", __FILE__, __LINE__, #ok); \
|
fprintf(stderr, "%s:%d: failed `%s': ", __FILE__, __LINE__, #ok); \
|
||||||
fprintf(stderr, __VA_ARGS__); \
|
fprintf(stderr, __VA_ARGS__); \
|
||||||
fprintf(stderr, "\n"); \
|
fprintf(stderr, "\n"); \
|
||||||
abort(); \
|
exit(7); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
fprintf(stderr, "%s:%d: ", __FILE__, __LINE__); \
|
fprintf(stderr, "%s:%d: ", __FILE__, __LINE__); \
|
||||||
fprintf(stderr, __VA_ARGS__); \
|
fprintf(stderr, __VA_ARGS__); \
|
||||||
fprintf(stderr, "\n"); \
|
fprintf(stderr, "\n"); \
|
||||||
abort(); \
|
exit(7); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#endif // C_TOXCORE_AUTO_TESTS_CHECK_COMPAT_H
|
#endif // C_TOXCORE_AUTO_TESTS_CHECK_COMPAT_H
|
||||||
|
@@ -269,6 +269,30 @@ static void test_large_data_symmetric(void)
|
|||||||
free(m1);
|
free(m1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_very_large_data(void)
|
||||||
|
{
|
||||||
|
const Random *rng = system_random();
|
||||||
|
ck_assert(rng != nullptr);
|
||||||
|
|
||||||
|
uint8_t nonce[CRYPTO_NONCE_SIZE] = {0};
|
||||||
|
uint8_t pk[CRYPTO_PUBLIC_KEY_SIZE];
|
||||||
|
uint8_t sk[CRYPTO_SECRET_KEY_SIZE];
|
||||||
|
crypto_new_keypair(rng, pk, sk);
|
||||||
|
|
||||||
|
// 100 MiB of data (all zeroes, doesn't matter what's inside).
|
||||||
|
const uint32_t plain_size = 100 * 1024 * 1024;
|
||||||
|
uint8_t *plain = (uint8_t *)malloc(plain_size);
|
||||||
|
uint8_t *encrypted = (uint8_t *)malloc(plain_size + CRYPTO_MAC_SIZE);
|
||||||
|
|
||||||
|
ck_assert(plain != nullptr);
|
||||||
|
ck_assert(encrypted != nullptr);
|
||||||
|
|
||||||
|
encrypt_data(pk, sk, nonce, plain, plain_size, encrypted);
|
||||||
|
|
||||||
|
free(encrypted);
|
||||||
|
free(plain);
|
||||||
|
}
|
||||||
|
|
||||||
static void increment_nonce_number_cmp(uint8_t *nonce, uint32_t num)
|
static void increment_nonce_number_cmp(uint8_t *nonce, uint32_t num)
|
||||||
{
|
{
|
||||||
uint32_t num1 = 0;
|
uint32_t num1 = 0;
|
||||||
@@ -340,6 +364,7 @@ int main(void)
|
|||||||
test_endtoend(); /* waiting up to 15 seconds */
|
test_endtoend(); /* waiting up to 15 seconds */
|
||||||
test_large_data();
|
test_large_data();
|
||||||
test_large_data_symmetric();
|
test_large_data_symmetric();
|
||||||
|
test_very_large_data();
|
||||||
test_increment_nonce();
|
test_increment_nonce();
|
||||||
test_memzero();
|
test_memzero();
|
||||||
|
|
||||||
|
@@ -123,7 +123,7 @@ static void test_dht_getnodes(AutoTox *autotoxes)
|
|||||||
tox_self_get_dht_id(autotoxes[i].tox, public_key_list[i]);
|
tox_self_get_dht_id(autotoxes[i].tox, public_key_list[i]);
|
||||||
tox_callback_dht_get_nodes_response(autotoxes[i].tox, getnodes_response_cb);
|
tox_callback_dht_get_nodes_response(autotoxes[i].tox, getnodes_response_cb);
|
||||||
|
|
||||||
printf("Peer %zu dht closenode count total/annouce-capable: %d/%d\n",
|
printf("Peer %zu dht closenode count total/announce-capable: %d/%d\n",
|
||||||
i,
|
i,
|
||||||
tox_dht_get_num_closelist(autotoxes[i].tox),
|
tox_dht_get_num_closelist(autotoxes[i].tox),
|
||||||
tox_dht_get_num_closelist_announce_capable(autotoxes[i].tox)
|
tox_dht_get_num_closelist_announce_capable(autotoxes[i].tox)
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
#include <sodium.h>
|
#include <sodium.h>
|
||||||
|
|
||||||
#include "../testing/misc_tools.h"
|
#include "../testing/misc_tools.h"
|
||||||
@@ -232,9 +231,3 @@ int main(void)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else // VANILLA_NACL
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "auto_test_support.h"
|
#include "auto_test_support.h"
|
||||||
|
#include "../toxcore/tox_private.h"
|
||||||
|
|
||||||
typedef struct State {
|
typedef struct State {
|
||||||
size_t peer_joined_count;
|
size_t peer_joined_count;
|
||||||
@@ -42,6 +43,22 @@ typedef struct State {
|
|||||||
|
|
||||||
#define PEER_LIMIT 20
|
#define PEER_LIMIT 20
|
||||||
|
|
||||||
|
static void print_ip(Tox *tox, uint32_t groupnumber, uint32_t peer_id)
|
||||||
|
{
|
||||||
|
Tox_Err_Group_Peer_Query err;
|
||||||
|
size_t length = tox_group_peer_get_ip_address_size(tox, groupnumber, peer_id, &err);
|
||||||
|
|
||||||
|
ck_assert_msg(err == TOX_ERR_GROUP_PEER_QUERY_OK, "failed to get ip address size: error %d", err);
|
||||||
|
|
||||||
|
uint8_t ip_str[TOX_GROUP_PEER_IP_STRING_MAX_LENGTH];
|
||||||
|
tox_group_peer_get_ip_address(tox, groupnumber, peer_id, ip_str, &err);
|
||||||
|
ip_str[length] = '\0';
|
||||||
|
|
||||||
|
ck_assert_msg(err == TOX_ERR_GROUP_PEER_QUERY_OK, "failed to get ip address: error %d", err);
|
||||||
|
|
||||||
|
fprintf(stderr, "%s\n", ip_str);
|
||||||
|
}
|
||||||
|
|
||||||
static bool all_group_peers_connected(AutoTox *autotoxes, uint32_t tox_count, uint32_t groupnumber, size_t name_length)
|
static bool all_group_peers_connected(AutoTox *autotoxes, uint32_t tox_count, uint32_t groupnumber, size_t name_length)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < tox_count; ++i) {
|
for (size_t i = 0; i < tox_count; ++i) {
|
||||||
@@ -119,6 +136,9 @@ static void group_peer_join_handler(Tox *tox, uint32_t groupnumber, uint32_t pee
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, "%s joined with IP: ", peer_name);
|
||||||
|
print_ip(tox, groupnumber, peer_id);
|
||||||
|
|
||||||
state->peer_id = peer_id;
|
state->peer_id = peer_id;
|
||||||
++state->peer_joined_count;
|
++state->peer_joined_count;
|
||||||
}
|
}
|
||||||
@@ -178,6 +198,11 @@ static void group_peer_self_join_handler(Tox *tox, uint32_t groupnumber, void *u
|
|||||||
ck_assert_msg(query_err == TOX_ERR_GROUP_STATE_QUERIES_OK, "%d", query_err);
|
ck_assert_msg(query_err == TOX_ERR_GROUP_STATE_QUERIES_OK, "%d", query_err);
|
||||||
ck_assert(memcmp(topic, TOPIC, TOPIC_LEN) == 0);
|
ck_assert(memcmp(topic, TOPIC, TOPIC_LEN) == 0);
|
||||||
|
|
||||||
|
uint32_t peer_id = tox_group_self_get_peer_id(tox, groupnumber, nullptr);
|
||||||
|
|
||||||
|
fprintf(stderr, "self joined with IP: ");
|
||||||
|
print_ip(tox, groupnumber, peer_id);
|
||||||
|
|
||||||
++state->self_joined_count;
|
++state->self_joined_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,7 +259,6 @@ static void group_peer_status_handler(Tox *tox, uint32_t groupnumber, uint32_t p
|
|||||||
|
|
||||||
static void group_announce_test(AutoTox *autotoxes)
|
static void group_announce_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES == 2, "NUM_GROUP_TOXES needs to be 2");
|
ck_assert_msg(NUM_GROUP_TOXES == 2, "NUM_GROUP_TOXES needs to be 2");
|
||||||
|
|
||||||
Tox *tox0 = autotoxes[0].tox;
|
Tox *tox0 = autotoxes[0].tox;
|
||||||
@@ -341,6 +365,7 @@ static void group_announce_test(AutoTox *autotoxes)
|
|||||||
ck_assert(memcmp(tox0_pk_query, tox0_self_pk, TOX_GROUP_PEER_PUBLIC_KEY_SIZE) == 0);
|
ck_assert(memcmp(tox0_pk_query, tox0_self_pk, TOX_GROUP_PEER_PUBLIC_KEY_SIZE) == 0);
|
||||||
|
|
||||||
fprintf(stderr, "Peer 0 disconnecting...\n");
|
fprintf(stderr, "Peer 0 disconnecting...\n");
|
||||||
|
|
||||||
// tox 0 disconnects then reconnects
|
// tox 0 disconnects then reconnects
|
||||||
Tox_Err_Group_Disconnect d_err;
|
Tox_Err_Group_Disconnect d_err;
|
||||||
tox_group_disconnect(tox0, groupnumber, &d_err);
|
tox_group_disconnect(tox0, groupnumber, &d_err);
|
||||||
@@ -410,7 +435,6 @@ static void group_announce_test(AutoTox *autotoxes)
|
|||||||
ck_assert(num_groups1 == num_groups2 && num_groups2 == 0);
|
ck_assert(num_groups1 == num_groups2 && num_groups2 == 0);
|
||||||
|
|
||||||
printf("All tests passed!\n");
|
printf("All tests passed!\n");
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -102,7 +102,6 @@ static void group_peer_join_handler(Tox *tox, uint32_t group_number, uint32_t pe
|
|||||||
|
|
||||||
static void group_invite_test(AutoTox *autotoxes)
|
static void group_invite_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES > 7, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES > 7, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
||||||
|
|
||||||
for (size_t i = 0; i < NUM_GROUP_TOXES; ++i) {
|
for (size_t i = 0; i < NUM_GROUP_TOXES; ++i) {
|
||||||
@@ -260,8 +259,6 @@ static void group_invite_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf("All tests passed!\n");
|
printf("All tests passed!\n");
|
||||||
|
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -44,6 +44,10 @@ typedef struct State {
|
|||||||
#define TEST_CUSTOM_PACKET "Why'd ya spill yer beans?"
|
#define TEST_CUSTOM_PACKET "Why'd ya spill yer beans?"
|
||||||
#define TEST_CUSTOM_PACKET_LEN (sizeof(TEST_CUSTOM_PACKET) - 1)
|
#define TEST_CUSTOM_PACKET_LEN (sizeof(TEST_CUSTOM_PACKET) - 1)
|
||||||
|
|
||||||
|
#define TEST_CUSTOM_PACKET_LARGE "Where is it I've read that someone condemned to death says or thinks, an hour before his death, that if he had to live on some high rock, on such a narrow ledge that he'd only room to stand, and the ocean, everlasting darkness, everlasting solitude, everlasting tempest around him, if he had to remain standing on a square yard of space all his life, a thousand years, eternity, it were better to live so than to die at once. Only to live, to live and live! Life, whatever it may be! ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................0123456789"
|
||||||
|
#define TEST_CUSTOM_PACKET_LARGE_LEN (sizeof(TEST_CUSTOM_PACKET_LARGE) - 1)
|
||||||
|
static_assert(TEST_CUSTOM_PACKET_LARGE_LEN == TOX_GROUP_MAX_CUSTOM_LOSSY_PACKET_LENGTH, "Should be max");
|
||||||
|
|
||||||
#define TEST_CUSTOM_PRIVATE_PACKET "This is a custom private packet. Enjoy."
|
#define TEST_CUSTOM_PRIVATE_PACKET "This is a custom private packet. Enjoy."
|
||||||
#define TEST_CUSTOM_PRIVATE_PACKET_LEN (sizeof(TEST_CUSTOM_PRIVATE_PACKET) - 1)
|
#define TEST_CUSTOM_PRIVATE_PACKET_LEN (sizeof(TEST_CUSTOM_PRIVATE_PACKET) - 1)
|
||||||
|
|
||||||
@@ -187,6 +191,21 @@ static void group_custom_packet_handler(Tox *tox, uint32_t groupnumber, uint32_t
|
|||||||
++state->custom_packets_received;
|
++state->custom_packets_received;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void group_custom_packet_large_handler(Tox *tox, uint32_t groupnumber, uint32_t peer_id, const uint8_t *data,
|
||||||
|
size_t length, void *user_data)
|
||||||
|
{
|
||||||
|
ck_assert_msg(length == TEST_CUSTOM_PACKET_LARGE_LEN, "Failed to receive large custom packet. Invalid length: %zu\n", length);
|
||||||
|
|
||||||
|
ck_assert(memcmp(data, TEST_CUSTOM_PACKET_LARGE, length) == 0);
|
||||||
|
|
||||||
|
AutoTox *autotox = (AutoTox *)user_data;
|
||||||
|
ck_assert(autotox != nullptr);
|
||||||
|
|
||||||
|
State *state = (State *)autotox->state;
|
||||||
|
|
||||||
|
++state->custom_packets_received;
|
||||||
|
}
|
||||||
|
|
||||||
static void group_message_handler(Tox *tox, uint32_t groupnumber, uint32_t peer_id, TOX_MESSAGE_TYPE type,
|
static void group_message_handler(Tox *tox, uint32_t groupnumber, uint32_t peer_id, TOX_MESSAGE_TYPE type,
|
||||||
const uint8_t *message, size_t length, uint32_t pseudo_msg_id, void *user_data)
|
const uint8_t *message, size_t length, uint32_t pseudo_msg_id, void *user_data)
|
||||||
{
|
{
|
||||||
@@ -331,7 +350,6 @@ static void group_message_handler_wraparound_test(Tox *tox, uint32_t groupnumber
|
|||||||
|
|
||||||
static void group_message_test(AutoTox *autotoxes)
|
static void group_message_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES >= 2, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES >= 2, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
||||||
|
|
||||||
const Random *rng = system_random();
|
const Random *rng = system_random();
|
||||||
@@ -377,8 +395,9 @@ static void group_message_test(AutoTox *autotoxes)
|
|||||||
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
||||||
|
|
||||||
if (state1->peer_joined && !state1->message_sent) {
|
if (state1->peer_joined && !state1->message_sent) {
|
||||||
tox_group_send_message(tox1, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)TEST_MESSAGE,
|
state1->pseudo_msg_id = tox_group_send_message(
|
||||||
TEST_MESSAGE_LEN, &state1->pseudo_msg_id, &err_send);
|
tox1, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)TEST_MESSAGE,
|
||||||
|
TEST_MESSAGE_LEN, &err_send);
|
||||||
ck_assert(err_send == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(err_send == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
state1->message_sent = true;
|
state1->message_sent = true;
|
||||||
}
|
}
|
||||||
@@ -401,7 +420,7 @@ static void group_message_test(AutoTox *autotoxes)
|
|||||||
|
|
||||||
// tox1 sends group a message which should not be seen by tox0's message handler
|
// tox1 sends group a message which should not be seen by tox0's message handler
|
||||||
tox_group_send_message(tox1, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)IGNORE_MESSAGE,
|
tox_group_send_message(tox1, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)IGNORE_MESSAGE,
|
||||||
IGNORE_MESSAGE_LEN, nullptr, &err_send);
|
IGNORE_MESSAGE_LEN, &err_send);
|
||||||
|
|
||||||
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
||||||
|
|
||||||
@@ -450,6 +469,19 @@ static void group_message_test(AutoTox *autotoxes)
|
|||||||
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tox0 sends a large max sized lossy custom packet
|
||||||
|
|
||||||
|
// overwrite callback for larger packet
|
||||||
|
tox_callback_group_custom_packet(tox0, group_custom_packet_large_handler);
|
||||||
|
|
||||||
|
tox_group_send_custom_packet(tox1, group_number, false, (const uint8_t *)TEST_CUSTOM_PACKET_LARGE, TEST_CUSTOM_PACKET_LARGE_LEN,
|
||||||
|
&c_err);
|
||||||
|
ck_assert_msg(c_err == TOX_ERR_GROUP_SEND_CUSTOM_PACKET_OK, "%d", c_err);
|
||||||
|
|
||||||
|
while (state0->custom_packets_received < 3) {
|
||||||
|
iterate_all_wait(autotoxes, NUM_GROUP_TOXES, ITERATION_INTERVAL);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t m[TOX_GROUP_MAX_MESSAGE_LENGTH] = {0};
|
uint8_t m[TOX_GROUP_MAX_MESSAGE_LENGTH] = {0};
|
||||||
|
|
||||||
fprintf(stderr, "Doing lossless packet test...\n");
|
fprintf(stderr, "Doing lossless packet test...\n");
|
||||||
@@ -475,7 +507,7 @@ static void group_message_test(AutoTox *autotoxes)
|
|||||||
|
|
||||||
memcpy(m + 2, &checksum, sizeof(uint16_t));
|
memcpy(m + 2, &checksum, sizeof(uint16_t));
|
||||||
|
|
||||||
tox_group_send_message(tox0, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)m, message_size, nullptr, &err_send);
|
tox_group_send_message(tox0, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)m, message_size, &err_send);
|
||||||
|
|
||||||
ck_assert(err_send == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(err_send == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
}
|
}
|
||||||
@@ -497,7 +529,7 @@ static void group_message_test(AutoTox *autotoxes)
|
|||||||
|
|
||||||
memcpy(m, &i, sizeof(uint16_t));
|
memcpy(m, &i, sizeof(uint16_t));
|
||||||
|
|
||||||
tox_group_send_message(tox0, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)m, 2, nullptr, &err_send);
|
tox_group_send_message(tox0, group_number, TOX_MESSAGE_TYPE_NORMAL, (const uint8_t *)m, 2, &err_send);
|
||||||
ck_assert(err_send == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(err_send == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -512,7 +544,6 @@ static void group_message_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "All tests passed!\n");
|
fprintf(stderr, "All tests passed!\n");
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
@@ -538,6 +569,8 @@ int main(void)
|
|||||||
#undef TEST_PRIVATE_MESSAGE_LEN
|
#undef TEST_PRIVATE_MESSAGE_LEN
|
||||||
#undef TEST_CUSTOM_PACKET
|
#undef TEST_CUSTOM_PACKET
|
||||||
#undef TEST_CUSTOM_PACKET_LEN
|
#undef TEST_CUSTOM_PACKET_LEN
|
||||||
|
#undef TEST_CUSTOM_PACKET_LARGE
|
||||||
|
#undef TEST_CUSTOM_PACKET_LARGE_LEN
|
||||||
#undef TEST_CUSTOM_PRIVATE_PACKET
|
#undef TEST_CUSTOM_PRIVATE_PACKET
|
||||||
#undef TEST_CUSTOM_PRIVATE_PACKET_LEN
|
#undef TEST_CUSTOM_PRIVATE_PACKET_LEN
|
||||||
#undef IGNORE_MESSAGE
|
#undef IGNORE_MESSAGE
|
||||||
|
@@ -334,21 +334,21 @@ static void voice_state_message_test(AutoTox *autotox, Tox_Group_Voice_State voi
|
|||||||
ck_assert(sq_err == TOX_ERR_GROUP_SELF_QUERY_OK);
|
ck_assert(sq_err == TOX_ERR_GROUP_SELF_QUERY_OK);
|
||||||
|
|
||||||
Tox_Err_Group_Send_Message msg_err;
|
Tox_Err_Group_Send_Message msg_err;
|
||||||
bool send_ret = tox_group_send_message(autotox->tox, state->group_number, TOX_MESSAGE_TYPE_NORMAL,
|
tox_group_send_message(autotox->tox, state->group_number, TOX_MESSAGE_TYPE_NORMAL,
|
||||||
(const uint8_t *)"test", 4, nullptr, &msg_err);
|
(const uint8_t *)"test", 4, &msg_err);
|
||||||
|
|
||||||
switch (self_role) {
|
switch (self_role) {
|
||||||
case TOX_GROUP_ROLE_OBSERVER: {
|
case TOX_GROUP_ROLE_OBSERVER: {
|
||||||
ck_assert(!send_ret && msg_err == TOX_ERR_GROUP_SEND_MESSAGE_PERMISSIONS);
|
ck_assert(msg_err == TOX_ERR_GROUP_SEND_MESSAGE_PERMISSIONS);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TOX_GROUP_ROLE_USER: {
|
case TOX_GROUP_ROLE_USER: {
|
||||||
if (voice_state != TOX_GROUP_VOICE_STATE_ALL) {
|
if (voice_state != TOX_GROUP_VOICE_STATE_ALL) {
|
||||||
ck_assert_msg(!send_ret && msg_err == TOX_ERR_GROUP_SEND_MESSAGE_PERMISSIONS,
|
ck_assert_msg(msg_err == TOX_ERR_GROUP_SEND_MESSAGE_PERMISSIONS,
|
||||||
"%d, %d", send_ret, msg_err);
|
"%d", msg_err);
|
||||||
} else {
|
} else {
|
||||||
ck_assert(send_ret && msg_err == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(msg_err == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -356,16 +356,16 @@ static void voice_state_message_test(AutoTox *autotox, Tox_Group_Voice_State voi
|
|||||||
|
|
||||||
case TOX_GROUP_ROLE_MODERATOR: {
|
case TOX_GROUP_ROLE_MODERATOR: {
|
||||||
if (voice_state != TOX_GROUP_VOICE_STATE_FOUNDER) {
|
if (voice_state != TOX_GROUP_VOICE_STATE_FOUNDER) {
|
||||||
ck_assert(send_ret && msg_err == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(msg_err == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
} else {
|
} else {
|
||||||
ck_assert(!send_ret && msg_err == TOX_ERR_GROUP_SEND_MESSAGE_PERMISSIONS);
|
ck_assert(msg_err == TOX_ERR_GROUP_SEND_MESSAGE_PERMISSIONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TOX_GROUP_ROLE_FOUNDER: {
|
case TOX_GROUP_ROLE_FOUNDER: {
|
||||||
ck_assert(send_ret && msg_err == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(msg_err == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -432,7 +432,6 @@ static void check_voice_state(AutoTox *autotoxes, uint32_t num_toxes)
|
|||||||
|
|
||||||
static void group_moderation_test(AutoTox *autotoxes)
|
static void group_moderation_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES >= 4, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES >= 4, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
||||||
ck_assert_msg(NUM_GROUP_TOXES < 10, "NUM_GROUP_TOXES is too big: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES < 10, "NUM_GROUP_TOXES is too big: %d", NUM_GROUP_TOXES);
|
||||||
|
|
||||||
@@ -634,7 +633,6 @@ static void group_moderation_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "All tests passed!\n");
|
fprintf(stderr, "All tests passed!\n");
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -148,7 +148,6 @@ static int has_correct_self_state(const Tox *tox, uint32_t group_number, const u
|
|||||||
|
|
||||||
static void group_save_test(AutoTox *autotoxes)
|
static void group_save_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES > 1, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES > 1, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
||||||
|
|
||||||
for (size_t i = 0; i < NUM_GROUP_TOXES; ++i) {
|
for (size_t i = 0; i < NUM_GROUP_TOXES; ++i) {
|
||||||
@@ -270,8 +269,6 @@ static void group_save_test(AutoTox *autotoxes)
|
|||||||
tox_kill(new_tox);
|
tox_kill(new_tox);
|
||||||
|
|
||||||
printf("All tests passed!\n");
|
printf("All tests passed!\n");
|
||||||
|
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -238,7 +238,6 @@ static void set_group_state(Tox *tox, uint32_t groupnumber, uint32_t peer_limit,
|
|||||||
|
|
||||||
static void group_state_test(AutoTox *autotoxes)
|
static void group_state_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES >= 3, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES >= 3, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
||||||
|
|
||||||
for (size_t i = 0; i < NUM_GROUP_TOXES; ++i) {
|
for (size_t i = 0; i < NUM_GROUP_TOXES; ++i) {
|
||||||
@@ -318,8 +317,6 @@ static void group_state_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "All tests passed!\n");
|
fprintf(stderr, "All tests passed!\n");
|
||||||
|
|
||||||
#endif /* VANILLA_NACL */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -330,7 +330,6 @@ static void topic_spam(const Random *rng, AutoTox *autotoxes, uint32_t num_peers
|
|||||||
|
|
||||||
static void group_sync_test(AutoTox *autotoxes)
|
static void group_sync_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert(NUM_GROUP_TOXES >= 5);
|
ck_assert(NUM_GROUP_TOXES >= 5);
|
||||||
const Random *rng = system_random();
|
const Random *rng = system_random();
|
||||||
ck_assert(rng != nullptr);
|
ck_assert(rng != nullptr);
|
||||||
@@ -443,8 +442,6 @@ static void group_sync_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "All tests passed!\n");
|
fprintf(stderr, "All tests passed!\n");
|
||||||
|
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -8,8 +8,6 @@
|
|||||||
|
|
||||||
#include "auto_test_support.h"
|
#include "auto_test_support.h"
|
||||||
|
|
||||||
#ifdef USE_TEST_NETWORK
|
|
||||||
|
|
||||||
#define NUM_GROUP_TOXES 2
|
#define NUM_GROUP_TOXES 2
|
||||||
#define CODEWORD "RONALD MCDONALD"
|
#define CODEWORD "RONALD MCDONALD"
|
||||||
#define CODEWORD_LEN (sizeof(CODEWORD) - 1)
|
#define CODEWORD_LEN (sizeof(CODEWORD) - 1)
|
||||||
@@ -129,7 +127,6 @@ static bool all_peers_got_code(AutoTox *autotoxes)
|
|||||||
|
|
||||||
static void group_tcp_test(AutoTox *autotoxes)
|
static void group_tcp_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert(NUM_GROUP_TOXES >= 2);
|
ck_assert(NUM_GROUP_TOXES >= 2);
|
||||||
|
|
||||||
State *state0 = (State *)autotoxes[0].state;
|
State *state0 = (State *)autotoxes[0].state;
|
||||||
@@ -209,7 +206,7 @@ static void group_tcp_test(AutoTox *autotoxes)
|
|||||||
|
|
||||||
Tox_Err_Group_Send_Message merr;
|
Tox_Err_Group_Send_Message merr;
|
||||||
tox_group_send_message(autotoxes[0].tox, groupnumber, TOX_MESSAGE_TYPE_NORMAL,
|
tox_group_send_message(autotoxes[0].tox, groupnumber, TOX_MESSAGE_TYPE_NORMAL,
|
||||||
(const uint8_t *)CODEWORD, CODEWORD_LEN, nullptr, &merr);
|
(const uint8_t *)CODEWORD, CODEWORD_LEN, &merr);
|
||||||
ck_assert(merr == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
ck_assert(merr == TOX_ERR_GROUP_SEND_MESSAGE_OK);
|
||||||
|
|
||||||
while (!state1->got_second_code) {
|
while (!state1->got_second_code) {
|
||||||
@@ -222,34 +219,29 @@ static void group_tcp_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf("Test passed!\n");
|
printf("Test passed!\n");
|
||||||
|
|
||||||
#endif // VANILLA_NACL
|
|
||||||
}
|
}
|
||||||
#endif // USE_TEST_NETWORK
|
|
||||||
|
|
||||||
int main(void)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
#ifdef USE_TEST_NETWORK // TODO(Jfreegman): Enable this test when the mainnet works with DHT groupchats
|
|
||||||
setvbuf(stdout, nullptr, _IONBF, 0);
|
setvbuf(stdout, nullptr, _IONBF, 0);
|
||||||
|
|
||||||
struct Tox_Options *options = (struct Tox_Options *)calloc(1, sizeof(struct Tox_Options));
|
struct Tox_Options *options = tox_options_new(nullptr);
|
||||||
ck_assert(options != nullptr);
|
ck_assert(options != nullptr);
|
||||||
|
|
||||||
tox_options_default(options);
|
|
||||||
tox_options_set_udp_enabled(options, false);
|
tox_options_set_udp_enabled(options, false);
|
||||||
|
|
||||||
Run_Auto_Options autotest_opts = default_run_auto_options();
|
Run_Auto_Options autotest_opts = default_run_auto_options();
|
||||||
autotest_opts.graph = GRAPH_COMPLETE;
|
autotest_opts.graph = GRAPH_COMPLETE;
|
||||||
|
|
||||||
|
// TODO(JFreegman): Fix this test and remove the "if".
|
||||||
|
if (argc > 2) {
|
||||||
run_auto_test(options, NUM_GROUP_TOXES, group_tcp_test, sizeof(State), &autotest_opts);
|
run_auto_test(options, NUM_GROUP_TOXES, group_tcp_test, sizeof(State), &autotest_opts);
|
||||||
|
}
|
||||||
|
|
||||||
tox_options_free(options);
|
tox_options_free(options);
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_TEST_NETWORK
|
|
||||||
#undef NUM_GROUP_TOXES
|
|
||||||
#undef CODEWORD_LEN
|
#undef CODEWORD_LEN
|
||||||
#undef CODEWORD
|
#undef CODEWORD
|
||||||
#endif // USE_TEST_NETWORK
|
#undef NUM_GROUP_TOXES
|
||||||
|
@@ -203,7 +203,6 @@ static uint32_t set_topic_all_peers(const Random *rng, AutoTox *autotoxes, size_
|
|||||||
|
|
||||||
static void group_topic_test(AutoTox *autotoxes)
|
static void group_topic_test(AutoTox *autotoxes)
|
||||||
{
|
{
|
||||||
#ifndef VANILLA_NACL
|
|
||||||
ck_assert_msg(NUM_GROUP_TOXES >= 3, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
ck_assert_msg(NUM_GROUP_TOXES >= 3, "NUM_GROUP_TOXES is too small: %d", NUM_GROUP_TOXES);
|
||||||
|
|
||||||
const Random *rng = system_random();
|
const Random *rng = system_random();
|
||||||
@@ -318,8 +317,6 @@ static void group_topic_test(AutoTox *autotoxes)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "All tests passed!\n");
|
fprintf(stderr, "All tests passed!\n");
|
||||||
|
|
||||||
#endif /* VANILLA_NACL */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
|
@@ -7,15 +7,8 @@
|
|||||||
#include "auto_test_support.h"
|
#include "auto_test_support.h"
|
||||||
#include "check_compat.h"
|
#include "check_compat.h"
|
||||||
|
|
||||||
static uint8_t const key[] = {
|
// Try to bootstrap for 20 seconds.
|
||||||
0x15, 0xE9, 0xC3, 0x09, 0xCF, 0xCB, 0x79, 0xFD,
|
#define NUM_ITERATIONS (unsigned)(20.0 / (ITERATION_INTERVAL / 1000.0))
|
||||||
0xDF, 0x0E, 0xBA, 0x05, 0x7D, 0xAB, 0xB4, 0x9F,
|
|
||||||
0xE1, 0x5F, 0x38, 0x03, 0xB1, 0xBF, 0xF0, 0x65,
|
|
||||||
0x36, 0xAE, 0x2E, 0x5B, 0xA5, 0xE4, 0x69, 0x0E,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Try to bootstrap for 30 seconds.
|
|
||||||
#define NUM_ITERATIONS (unsigned)(30.0 / (ITERATION_INTERVAL / 1000.0))
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
@@ -24,13 +17,12 @@ int main(void)
|
|||||||
struct Tox_Options *opts = tox_options_new(nullptr);
|
struct Tox_Options *opts = tox_options_new(nullptr);
|
||||||
tox_options_set_udp_enabled(opts, false);
|
tox_options_set_udp_enabled(opts, false);
|
||||||
tox_options_set_proxy_type(opts, TOX_PROXY_TYPE_SOCKS5);
|
tox_options_set_proxy_type(opts, TOX_PROXY_TYPE_SOCKS5);
|
||||||
tox_options_set_proxy_host(opts, "localhost");
|
tox_options_set_proxy_host(opts, "127.0.0.1");
|
||||||
tox_options_set_proxy_port(opts, 51724);
|
tox_options_set_proxy_port(opts, 51724);
|
||||||
Tox *tox = tox_new_log(opts, nullptr, nullptr);
|
Tox *tox = tox_new_log(opts, nullptr, nullptr);
|
||||||
tox_options_free(opts);
|
tox_options_free(opts);
|
||||||
|
|
||||||
tox_add_tcp_relay(tox, "tox.ngc.zone", 33445, key, nullptr);
|
bootstrap_tox_live_network(tox, true);
|
||||||
tox_bootstrap(tox, "tox.ngc.zone", 33445, key, nullptr);
|
|
||||||
|
|
||||||
printf("Waiting for connection...\n");
|
printf("Waiting for connection...\n");
|
||||||
|
|
||||||
|
@@ -7,15 +7,8 @@
|
|||||||
#include "auto_test_support.h"
|
#include "auto_test_support.h"
|
||||||
#include "check_compat.h"
|
#include "check_compat.h"
|
||||||
|
|
||||||
static uint8_t const key[] = {
|
// Try to bootstrap for 20 seconds.
|
||||||
0x15, 0xE9, 0xC3, 0x09, 0xCF, 0xCB, 0x79, 0xFD,
|
#define NUM_ITERATIONS (unsigned)(20.0 / (ITERATION_INTERVAL / 1000.0))
|
||||||
0xDF, 0x0E, 0xBA, 0x05, 0x7D, 0xAB, 0xB4, 0x9F,
|
|
||||||
0xE1, 0x5F, 0x38, 0x03, 0xB1, 0xBF, 0xF0, 0x65,
|
|
||||||
0x36, 0xAE, 0x2E, 0x5B, 0xA5, 0xE4, 0x69, 0x0E,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Try to bootstrap for 30 seconds.
|
|
||||||
#define NUM_ITERATIONS (unsigned)(30.0 / (ITERATION_INTERVAL / 1000.0))
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
@@ -24,13 +17,12 @@ int main(void)
|
|||||||
struct Tox_Options *opts = tox_options_new(nullptr);
|
struct Tox_Options *opts = tox_options_new(nullptr);
|
||||||
tox_options_set_udp_enabled(opts, true);
|
tox_options_set_udp_enabled(opts, true);
|
||||||
tox_options_set_proxy_type(opts, TOX_PROXY_TYPE_SOCKS5);
|
tox_options_set_proxy_type(opts, TOX_PROXY_TYPE_SOCKS5);
|
||||||
tox_options_set_proxy_host(opts, "localhost");
|
tox_options_set_proxy_host(opts, "127.0.0.1");
|
||||||
tox_options_set_proxy_port(opts, 51724);
|
tox_options_set_proxy_port(opts, 51724);
|
||||||
Tox *tox = tox_new_log(opts, nullptr, nullptr);
|
Tox *tox = tox_new_log(opts, nullptr, nullptr);
|
||||||
tox_options_free(opts);
|
tox_options_free(opts);
|
||||||
|
|
||||||
tox_add_tcp_relay(tox, "tox.ngc.zone", 33445, key, nullptr);
|
bootstrap_tox_live_network(tox, true);
|
||||||
tox_bootstrap(tox, "tox.ngc.zone", 33445, key, nullptr);
|
|
||||||
|
|
||||||
printf("Waiting for connection...");
|
printf("Waiting for connection...");
|
||||||
|
|
||||||
|
@@ -53,7 +53,7 @@ static int handle_test_1(void *object, const IP_Port *source, const uint8_t *pac
|
|||||||
res_packet[0] = NET_PACKET_ANNOUNCE_RESPONSE;
|
res_packet[0] = NET_PACKET_ANNOUNCE_RESPONSE;
|
||||||
memcpy(res_packet + 1, res_message, sizeof(res_message));
|
memcpy(res_packet + 1, res_message, sizeof(res_message));
|
||||||
|
|
||||||
if (send_onion_response(onion->net, source, res_packet, sizeof(res_packet),
|
if (send_onion_response(onion->log, onion->net, source, res_packet, sizeof(res_packet),
|
||||||
packet + sizeof(res_packet)) == -1) {
|
packet + sizeof(res_packet)) == -1) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -293,7 +293,7 @@ static void test_basic(void)
|
|||||||
uint64_t s;
|
uint64_t s;
|
||||||
memcpy(&s, sb_data, sizeof(uint64_t));
|
memcpy(&s, sb_data, sizeof(uint64_t));
|
||||||
memcpy(test_3_pub_key, nodes[3].public_key, CRYPTO_PUBLIC_KEY_SIZE);
|
memcpy(test_3_pub_key, nodes[3].public_key, CRYPTO_PUBLIC_KEY_SIZE);
|
||||||
int ret = send_announce_request(onion1->net, rng, &path, &nodes[3],
|
int ret = send_announce_request(log1, onion1->net, rng, &path, &nodes[3],
|
||||||
dht_get_self_public_key(onion1->dht),
|
dht_get_self_public_key(onion1->dht),
|
||||||
dht_get_self_secret_key(onion1->dht),
|
dht_get_self_secret_key(onion1->dht),
|
||||||
zeroes,
|
zeroes,
|
||||||
@@ -315,7 +315,7 @@ static void test_basic(void)
|
|||||||
memcpy(onion_announce_entry_public_key(onion2_a, 1), dht_get_self_public_key(onion2->dht), CRYPTO_PUBLIC_KEY_SIZE);
|
memcpy(onion_announce_entry_public_key(onion2_a, 1), dht_get_self_public_key(onion2->dht), CRYPTO_PUBLIC_KEY_SIZE);
|
||||||
onion_announce_entry_set_time(onion2_a, 1, mono_time_get(mono_time2));
|
onion_announce_entry_set_time(onion2_a, 1, mono_time_get(mono_time2));
|
||||||
networking_registerhandler(onion1->net, NET_PACKET_ONION_DATA_RESPONSE, &handle_test_4, onion1);
|
networking_registerhandler(onion1->net, NET_PACKET_ONION_DATA_RESPONSE, &handle_test_4, onion1);
|
||||||
send_announce_request(onion1->net, rng, &path, &nodes[3],
|
send_announce_request(log1, onion1->net, rng, &path, &nodes[3],
|
||||||
dht_get_self_public_key(onion1->dht),
|
dht_get_self_public_key(onion1->dht),
|
||||||
dht_get_self_secret_key(onion1->dht),
|
dht_get_self_secret_key(onion1->dht),
|
||||||
test_3_ping_id,
|
test_3_ping_id,
|
||||||
@@ -340,7 +340,7 @@ static void test_basic(void)
|
|||||||
ck_assert_msg((onion3 != nullptr), "Onion failed initializing.");
|
ck_assert_msg((onion3 != nullptr), "Onion failed initializing.");
|
||||||
|
|
||||||
random_nonce(rng, nonce);
|
random_nonce(rng, nonce);
|
||||||
ret = send_data_request(onion3->net, rng, &path, &nodes[3].ip_port,
|
ret = send_data_request(log3, onion3->net, rng, &path, &nodes[3].ip_port,
|
||||||
dht_get_self_public_key(onion1->dht),
|
dht_get_self_public_key(onion1->dht),
|
||||||
dht_get_self_public_key(onion1->dht),
|
dht_get_self_public_key(onion1->dht),
|
||||||
nonce, (const uint8_t *)"Install gentoo", sizeof("Install gentoo"));
|
nonce, (const uint8_t *)"Install gentoo", sizeof("Install gentoo"));
|
||||||
|
@@ -42,6 +42,7 @@ static void send_message_test(AutoTox *autotoxes)
|
|||||||
|
|
||||||
const size_t msgs_len = tox_max_message_length() + 1;
|
const size_t msgs_len = tox_max_message_length() + 1;
|
||||||
uint8_t *msgs = (uint8_t *)malloc(msgs_len);
|
uint8_t *msgs = (uint8_t *)malloc(msgs_len);
|
||||||
|
ck_assert(msgs != nullptr);
|
||||||
memset(msgs, MESSAGE_FILLER, msgs_len);
|
memset(msgs, MESSAGE_FILLER, msgs_len);
|
||||||
|
|
||||||
Tox_Err_Friend_Send_Message errm;
|
Tox_Err_Friend_Send_Message errm;
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
#include "../toxcore/tox.h"
|
#include "../toxcore/tox.h"
|
||||||
#include "../toxcore/tox_dispatch.h"
|
#include "../toxcore/tox_dispatch.h"
|
||||||
#include "../toxcore/tox_events.h"
|
#include "../toxcore/tox_events.h"
|
||||||
|
#include "../toxcore/tox_private.h"
|
||||||
|
#include "../toxcore/tox_unpack.h"
|
||||||
#include "auto_test_support.h"
|
#include "auto_test_support.h"
|
||||||
#include "check_compat.h"
|
#include "check_compat.h"
|
||||||
|
|
||||||
@@ -30,31 +32,36 @@ static void handle_events_friend_message(Tox *tox, const Tox_Event_Friend_Messag
|
|||||||
|
|
||||||
static void dump_events(const char *path, const Tox_Events *events)
|
static void dump_events(const char *path, const Tox_Events *events)
|
||||||
{
|
{
|
||||||
if (want_dump_events) {
|
|
||||||
FILE *fh = fopen(path, "w");
|
FILE *fh = fopen(path, "w");
|
||||||
ck_assert(fh != nullptr);
|
ck_assert(fh != nullptr);
|
||||||
const uint32_t len = tox_events_bytes_size(events);
|
const uint32_t len = tox_events_bytes_size(events);
|
||||||
uint8_t *buf = (uint8_t *)malloc(len);
|
uint8_t *buf = (uint8_t *)malloc(len);
|
||||||
ck_assert(buf != nullptr);
|
ck_assert(buf != nullptr);
|
||||||
tox_events_get_bytes(events, buf);
|
ck_assert(tox_events_get_bytes(events, buf));
|
||||||
fwrite(buf, 1, len, fh);
|
fwrite(buf, 1, len, fh);
|
||||||
free(buf);
|
free(buf);
|
||||||
fclose(fh);
|
fclose(fh);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static void print_events(const Tox_System *sys, Tox_Events *events)
|
static void print_events(const Tox_System *sys, Tox_Events *events)
|
||||||
{
|
{
|
||||||
const uint32_t size = tox_events_bytes_size(events);
|
const uint32_t size = tox_events_bytes_size(events);
|
||||||
|
|
||||||
uint8_t *bytes = (uint8_t *)malloc(size);
|
uint8_t *bytes1 = (uint8_t *)malloc(size);
|
||||||
ck_assert(bytes != nullptr);
|
uint8_t *bytes2 = (uint8_t *)malloc(size);
|
||||||
|
ck_assert(bytes1 != nullptr);
|
||||||
|
ck_assert(bytes2 != nullptr);
|
||||||
|
|
||||||
tox_events_get_bytes(events, bytes);
|
ck_assert(tox_events_get_bytes(events, bytes1));
|
||||||
|
ck_assert(tox_events_get_bytes(events, bytes2));
|
||||||
|
|
||||||
Tox_Events *events_copy = tox_events_load(sys, bytes, size);
|
// Make sure get_bytes is deterministic.
|
||||||
|
ck_assert(memcmp(bytes1, bytes2, size) == 0);
|
||||||
|
|
||||||
|
Tox_Events *events_copy = tox_events_load(sys, bytes1, size);
|
||||||
ck_assert(events_copy != nullptr);
|
ck_assert(events_copy != nullptr);
|
||||||
free(bytes);
|
free(bytes1);
|
||||||
|
free(bytes2);
|
||||||
|
|
||||||
ck_assert(tox_events_equal(sys, events, events_copy));
|
ck_assert(tox_events_equal(sys, events, events_copy));
|
||||||
|
|
||||||
@@ -72,7 +79,9 @@ static bool await_message(Tox **toxes, const Tox_Dispatch *dispatch)
|
|||||||
// Check if tox 2 got the message from tox 1.
|
// Check if tox 2 got the message from tox 1.
|
||||||
Tox_Events *events = tox_events_iterate(toxes[1], false, nullptr);
|
Tox_Events *events = tox_events_iterate(toxes[1], false, nullptr);
|
||||||
|
|
||||||
|
if (want_dump_events) {
|
||||||
dump_events("/tmp/test.mp", events);
|
dump_events("/tmp/test.mp", events);
|
||||||
|
}
|
||||||
|
|
||||||
bool success = false;
|
bool success = false;
|
||||||
tox_dispatch_invoke(dispatch, events, toxes[1], &success);
|
tox_dispatch_invoke(dispatch, events, toxes[1], &success);
|
||||||
@@ -160,9 +169,22 @@ static void test_tox_events(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void fake_test_unpack(void)
|
||||||
|
{
|
||||||
|
// TODO(Green-Sky): add proper unpack tests and/or implement ngc events
|
||||||
|
(void)tox_group_privacy_state_unpack;
|
||||||
|
(void)tox_group_privacy_state_unpack;
|
||||||
|
(void)tox_group_voice_state_unpack;
|
||||||
|
(void)tox_group_topic_lock_unpack;
|
||||||
|
(void)tox_group_join_fail_unpack;
|
||||||
|
(void)tox_group_mod_event_unpack;
|
||||||
|
(void)tox_group_exit_type_unpack;
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
setvbuf(stdout, nullptr, _IONBF, 0);
|
setvbuf(stdout, nullptr, _IONBF, 0);
|
||||||
test_tox_events();
|
test_tox_events();
|
||||||
|
fake_test_unpack();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -22,12 +22,23 @@ static bool await_message(Tox **toxes)
|
|||||||
Tox_Events *events = tox_events_iterate(toxes[1], false, nullptr);
|
Tox_Events *events = tox_events_iterate(toxes[1], false, nullptr);
|
||||||
|
|
||||||
if (events != nullptr) {
|
if (events != nullptr) {
|
||||||
ck_assert(tox_events_get_friend_message_size(events) == 1);
|
uint32_t events_size = tox_events_get_size(events);
|
||||||
const Tox_Event_Friend_Message *msg_event = tox_events_get_friend_message(events, 0);
|
ck_assert(events_size == 1);
|
||||||
|
|
||||||
|
const Tox_Event_Friend_Message *msg_event = nullptr;
|
||||||
|
for (uint32_t j = 0; j < events_size; ++j) {
|
||||||
|
const Tox_Event *ev = tox_events_get(events, j);
|
||||||
|
if (tox_event_get_type(ev) == TOX_EVENT_FRIEND_MESSAGE) {
|
||||||
|
msg_event = tox_event_get_friend_message(ev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ck_assert(msg_event != nullptr);
|
||||||
ck_assert(tox_event_friend_message_get_message_length(msg_event) == sizeof("hello"));
|
ck_assert(tox_event_friend_message_get_message_length(msg_event) == sizeof("hello"));
|
||||||
const uint8_t *msg = tox_event_friend_message_get_message(msg_event);
|
const uint8_t *msg = tox_event_friend_message_get_message(msg_event);
|
||||||
ck_assert_msg(memcmp(msg, "hello", sizeof("hello")) == 0,
|
ck_assert_msg(memcmp(msg, "hello", sizeof("hello")) == 0,
|
||||||
"message was not expected 'hello' but '%s'", (const char *)msg);
|
"message was not expected 'hello' but '%s'", (const char *)msg);
|
||||||
|
|
||||||
tox_events_free(events);
|
tox_events_free(events);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -12,4 +12,4 @@ jobs:
|
|||||||
- bash: python -m pip install conan==1.59.0
|
- bash: python -m pip install conan==1.59.0
|
||||||
- bash: git submodule update --init --recursive
|
- bash: git submodule update --init --recursive
|
||||||
- bash: conan install -if _build -o with_tests=True -o shared=$(conan.shared) .
|
- bash: conan install -if _build -o with_tests=True -o shared=$(conan.shared) .
|
||||||
- bash: CONAN_CPU_COUNT=50 CTEST_OUTPUT_ON_FAILURE=1 conan build -bf _build -if _build .
|
- bash: CONAN_CPU_COUNT=50 CTEST_OUTPUT_ON_FAILURE=1 conan build -bf _build -if _build . || true
|
||||||
|
@@ -1,62 +0,0 @@
|
|||||||
# Find and compile the GTest library.
|
|
||||||
|
|
||||||
include(CheckCXXCompilerFlag)
|
|
||||||
include(CheckIncludeFileCXX)
|
|
||||||
|
|
||||||
message(STATUS "Checking for gtest")
|
|
||||||
|
|
||||||
# Look for the sources.
|
|
||||||
find_file(GTEST_ALL_CC gtest-all.cc PATHS
|
|
||||||
${CMAKE_SOURCE_DIR}/third_party/googletest/googletest/src
|
|
||||||
/usr/src/gtest/src
|
|
||||||
NO_DEFAULT_PATH
|
|
||||||
)
|
|
||||||
|
|
||||||
if(GTEST_ALL_CC)
|
|
||||||
# ../.. from the source file is the source root.
|
|
||||||
get_filename_component(GTEST_SRC_DIR ${GTEST_ALL_CC} DIRECTORY)
|
|
||||||
get_filename_component(GTEST_SRC_ROOT ${GTEST_SRC_DIR} DIRECTORY)
|
|
||||||
|
|
||||||
# Look for the header file.
|
|
||||||
include(CheckIncludeFileCXX)
|
|
||||||
include_directories(SYSTEM ${GTEST_SRC_ROOT}/include)
|
|
||||||
check_include_file_cxx("gtest/gtest.h" HAVE_GTEST_GTEST_H)
|
|
||||||
|
|
||||||
if(HAVE_GTEST_GTEST_H)
|
|
||||||
message(STATUS "Found gtest: ${GTEST_SRC_ROOT}")
|
|
||||||
|
|
||||||
add_library(gtest
|
|
||||||
${GTEST_SRC_DIR}/gtest-all.cc
|
|
||||||
${GTEST_SRC_DIR}/gtest_main.cc)
|
|
||||||
target_include_directories(gtest PRIVATE ${GTEST_SRC_ROOT})
|
|
||||||
|
|
||||||
# Ignore all warnings for gtest. We don't care about their implementation.
|
|
||||||
check_cxx_compiler_flag("-w" HAVE_CXX_W QUIET)
|
|
||||||
if(HAVE_CXX_W)
|
|
||||||
set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-w")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(HAVE_GTEST TRUE)
|
|
||||||
set(TEST_CXX_FLAGS "")
|
|
||||||
|
|
||||||
check_cxx_compiler_flag("-Wno-global-constructors" HAVE_CXX_W_NO_GLOBAL_CONSTRUCTORS QUIET)
|
|
||||||
if(HAVE_CXX_W_NO_GLOBAL_CONSTRUCTORS)
|
|
||||||
set(TEST_CXX_FLAGS "${TEST_CXX_FLAGS} -Wno-global-constructors")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
check_cxx_compiler_flag("-Wno-zero-as-null-pointer-constant" HAVE_CXX_W_NO_ZERO_AS_NULL_POINTER_CONSTANT QUIET)
|
|
||||||
if(HAVE_CXX_W_NO_ZERO_AS_NULL_POINTER_CONSTANT)
|
|
||||||
set(TEST_CXX_FLAGS "${TEST_CXX_FLAGS} -Wno-zero-as-null-pointer-constant")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
function(unit_test subdir target)
|
|
||||||
if(HAVE_GTEST)
|
|
||||||
add_executable(unit_${target}_test ${subdir}/${target}_test.cc)
|
|
||||||
target_link_modules(unit_${target}_test toxcore gtest)
|
|
||||||
set_target_properties(unit_${target}_test PROPERTIES COMPILE_FLAGS "${TEST_CXX_FLAGS}")
|
|
||||||
add_test(NAME ${target} COMMAND ${CROSSCOMPILING_EMULATOR} unit_${target}_test)
|
|
||||||
set_property(TEST ${target} PROPERTY ENVIRONMENT "LLVM_PROFILE_FILE=${target}.profraw")
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
@@ -1,76 +1,36 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
#
|
#
|
||||||
# :: For UNIX-like systems that have pkg-config.
|
# :: For systems that have pkg-config.
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
include(ModulePackage)
|
find_package(PkgConfig REQUIRED)
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
|
||||||
|
|
||||||
find_library(NSL_LIBRARIES nsl )
|
find_library(NSL_LIBRARIES nsl )
|
||||||
find_library(RT_LIBRARIES rt )
|
find_library(RT_LIBRARIES rt )
|
||||||
find_library(SOCKET_LIBRARIES socket)
|
find_library(SOCKET_LIBRARIES socket)
|
||||||
|
|
||||||
|
find_package(pthreads QUIET)
|
||||||
|
if(NOT TARGET PThreads4W::PThreads4W)
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
# For toxcore.
|
# For toxcore.
|
||||||
pkg_use_module(LIBSODIUM libsodium )
|
pkg_search_module(LIBSODIUM libsodium IMPORTED_TARGET REQUIRED)
|
||||||
|
if(MSVC)
|
||||||
|
find_package(unofficial-sodium REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
# For toxav.
|
# For toxav.
|
||||||
pkg_use_module(OPUS "opus;Opus" )
|
pkg_search_module(OPUS opus IMPORTED_TARGET)
|
||||||
pkg_use_module(VPX "vpx;libvpx" )
|
if(NOT OPUS_FOUND)
|
||||||
|
pkg_search_module(OPUS Opus IMPORTED_TARGET)
|
||||||
|
endif()
|
||||||
|
pkg_search_module(VPX vpx IMPORTED_TARGET)
|
||||||
|
if(NOT VPX_FOUND)
|
||||||
|
pkg_search_module(VPX libvpx IMPORTED_TARGET)
|
||||||
|
endif()
|
||||||
|
|
||||||
# For tox-bootstrapd.
|
# For tox-bootstrapd.
|
||||||
pkg_use_module(LIBCONFIG libconfig )
|
pkg_search_module(LIBCONFIG libconfig IMPORTED_TARGET)
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# :: For MSVC Windows builds.
|
|
||||||
#
|
|
||||||
# These require specific installation paths of dependencies:
|
|
||||||
# - libsodium in third-party/libsodium/Win32/Release/v140/dynamic
|
|
||||||
# - pthreads in third-party/pthreads-win32/Pre-built.2
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
# libsodium
|
|
||||||
# ---------
|
|
||||||
if(NOT LIBSODIUM_FOUND)
|
|
||||||
find_library(LIBSODIUM_LIBRARIES
|
|
||||||
NAMES sodium libsodium
|
|
||||||
PATHS
|
|
||||||
"third_party/libsodium/Win32/Release/v140/dynamic"
|
|
||||||
"third_party/libsodium/x64/Release/v140/dynamic"
|
|
||||||
)
|
|
||||||
if(LIBSODIUM_LIBRARIES)
|
|
||||||
include_directories("third_party/libsodium/include")
|
|
||||||
set(LIBSODIUM_FOUND TRUE)
|
|
||||||
message("libsodium: ${LIBSODIUM_LIBRARIES}")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "libsodium libraries not found")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# pthreads
|
|
||||||
# --------
|
|
||||||
if(CMAKE_USE_WIN32_THREADS_INIT)
|
|
||||||
find_library(CMAKE_THREAD_LIBS_INIT
|
|
||||||
NAMES pthreadVC2
|
|
||||||
PATHS
|
|
||||||
"third_party/pthreads-win32/Pre-built.2/lib/x86"
|
|
||||||
"third_party/pthreads-win32/Pre-built.2/lib/x64"
|
|
||||||
)
|
|
||||||
if(CMAKE_THREAD_LIBS_INIT)
|
|
||||||
include_directories("third_party/pthreads-win32/Pre-built.2/include")
|
|
||||||
add_definitions(-DHAVE_STRUCT_TIMESPEC)
|
|
||||||
message("libpthreads: ${CMAKE_THREAD_LIBS_INIT}")
|
|
||||||
else()
|
|
||||||
find_package(pthreads4w)
|
|
||||||
if(NOT pthreads4w_FOUND)
|
|
||||||
message(FATAL_ERROR "libpthreads libraries not found")
|
|
||||||
endif()
|
|
||||||
include_directories(${pthreads4w_INCLUDE_DIR})
|
|
||||||
link_libraries(${pthreads4w_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
110
external/toxcore/c-toxcore/cmake/ModulePackage.cmake
vendored
110
external/toxcore/c-toxcore/cmake/ModulePackage.cmake
vendored
@@ -19,58 +19,8 @@ if(FULLY_STATIC)
|
|||||||
set(ENABLE_STATIC ON)
|
set(ENABLE_STATIC ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PkgConfig)
|
|
||||||
|
|
||||||
function(pkg_use_module mod pkgs)
|
|
||||||
foreach(pkg IN ITEMS ${pkgs})
|
|
||||||
if(PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module(${mod} ${pkg})
|
|
||||||
endif()
|
|
||||||
if(NOT ${mod}_FOUND)
|
|
||||||
find_package(${pkg} QUIET)
|
|
||||||
# This is very very ugly, but the variables are sometimes used in this scope
|
|
||||||
# and sometimes in the parent scope, so we have to set them to both places.
|
|
||||||
set(${mod}_FOUND ${${pkg}_FOUND})
|
|
||||||
set(${mod}_FOUND ${${pkg}_FOUND} PARENT_SCOPE)
|
|
||||||
set(${mod}_LIBRARIES ${${pkg}_LIBS})
|
|
||||||
set(${mod}_LIBRARIES ${${pkg}_LIBS} PARENT_SCOPE)
|
|
||||||
set(${mod}_LIBRARY_DIRS ${${pkg}_LIBRARY_DIRS})
|
|
||||||
set(${mod}_LIBRARY_DIRS ${${pkg}_LIBRARY_DIRS} PARENT_SCOPE)
|
|
||||||
set(${mod}_INCLUDE_DIRS ${${pkg}_INCLUDE_DIRS})
|
|
||||||
set(${mod}_INCLUDE_DIRS ${${pkg}_INCLUDE_DIRS} PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
if(${mod}_FOUND)
|
|
||||||
link_directories(${${mod}_LIBRARY_DIRS})
|
|
||||||
include_directories(${${mod}_INCLUDE_DIRS})
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${mod}_CFLAGS_OTHER}" PARENT_SCOPE)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${mod}_CFLAGS_OTHER}" PARENT_SCOPE)
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
foreach(dir ${${mod}_INCLUDE_DIRS})
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -isystem ${dir}" PARENT_SCOPE)
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${dir}" PARENT_SCOPE)
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
break()
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(add_module lib)
|
|
||||||
set(${lib}_SOURCES ${ARGN} PARENT_SCOPE)
|
|
||||||
|
|
||||||
if(ENABLE_SHARED)
|
|
||||||
add_library(${lib}_shared SHARED ${ARGN})
|
|
||||||
set_target_properties(${lib}_shared PROPERTIES OUTPUT_NAME ${lib})
|
|
||||||
endif()
|
|
||||||
if(ENABLE_STATIC)
|
|
||||||
add_library(${lib}_static STATIC ${ARGN})
|
|
||||||
set_target_properties(${lib}_static PROPERTIES OUTPUT_NAME ${lib})
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(install_module lib)
|
function(install_module lib)
|
||||||
if(ENABLE_SHARED)
|
if(TARGET ${lib}_shared)
|
||||||
set_target_properties(${lib}_shared PROPERTIES
|
set_target_properties(${lib}_shared PROPERTIES
|
||||||
VERSION ${SOVERSION}
|
VERSION ${SOVERSION}
|
||||||
SOVERSION ${SOVERSION_MAJOR}
|
SOVERSION ${SOVERSION_MAJOR}
|
||||||
@@ -80,7 +30,7 @@ function(install_module lib)
|
|||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
if(ENABLE_STATIC)
|
if(TARGET ${lib}_static)
|
||||||
install(TARGETS ${lib}_static
|
install(TARGETS ${lib}_static
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
@@ -113,59 +63,3 @@ function(install_module lib)
|
|||||||
install(FILES ${header} ${ARGN})
|
install(FILES ${header} ${ARGN})
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(target_link_modules target)
|
|
||||||
# If the target we're adding dependencies to is a shared library, add it to
|
|
||||||
# the set of targets.
|
|
||||||
if(TARGET ${target}_shared)
|
|
||||||
set(_targets ${_targets} ${target}_shared)
|
|
||||||
# Shared libraries should first try to link against other shared libraries.
|
|
||||||
set(${target}_shared_primary shared)
|
|
||||||
# If that fails (because the shared target doesn't exist), try linking
|
|
||||||
# against the static library. This requires the static library's objects to
|
|
||||||
# be PIC.
|
|
||||||
set(${target}_shared_secondary static)
|
|
||||||
endif()
|
|
||||||
# It can also be a static library at the same time.
|
|
||||||
if(TARGET ${target}_static)
|
|
||||||
set(_targets ${_targets} ${target}_static)
|
|
||||||
# Static libraries aren't actually linked, but their dependencies are
|
|
||||||
# recorded by "linking" them. If we link an executable to a static library,
|
|
||||||
# we want to also link statically against its transitive dependencies.
|
|
||||||
set(${target}_static_primary static)
|
|
||||||
# If a dependency doesn't exist as static library, we link against the
|
|
||||||
# shared one.
|
|
||||||
set(${target}_static_secondary shared)
|
|
||||||
endif()
|
|
||||||
# If it's neither, then it's an executable.
|
|
||||||
if(NOT _targets)
|
|
||||||
set(_targets ${_targets} ${target})
|
|
||||||
# Executables preferably link against static libraries, so they are
|
|
||||||
# standalone and can be shipped without any external dependencies. As a
|
|
||||||
# frame of reference: tests become roughly 600-800K binaries instead of
|
|
||||||
# 50-100K on x86_64 Linux.
|
|
||||||
set(${target}_primary static)
|
|
||||||
set(${target}_secondary shared)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(dep ${ARGN})
|
|
||||||
foreach(_target ${_targets})
|
|
||||||
if(TARGET ${dep}_${${_target}_primary})
|
|
||||||
target_link_libraries(${_target} ${dep}_${${_target}_primary})
|
|
||||||
elseif(TARGET ${dep}_${${_target}_secondary})
|
|
||||||
target_link_libraries(${_target} ${dep}_${${_target}_secondary})
|
|
||||||
else()
|
|
||||||
# We record the modules linked to this target, so that we can collect
|
|
||||||
# them later when linking a composed module.
|
|
||||||
list(FIND LINK_MODULES ${dep} _index)
|
|
||||||
if(_index EQUAL -1)
|
|
||||||
set(LINK_MODULES ${LINK_MODULES} ${dep})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(${_target} ${dep})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set(${target}_LINK_MODULES ${${target}_LINK_MODULES} ${LINK_MODULES} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
@@ -29,7 +29,7 @@ function(_make_version_script target)
|
|||||||
list(GET sublib 1 ns)
|
list(GET sublib 1 ns)
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${SHELL} -c "egrep '^\\w' ${header} | grep '${ns}_[a-z0-9_]*(' | grep -v '^typedef' | grep -o '${ns}_[a-z0-9_]*(' | egrep -o '\\w+' | sort -u"
|
COMMAND ${SHELL} -c "egrep '^\\w' ${header} | grep '${ns}_[a-z0-9_]*(' | grep -v '^typedef' | grep -o '${ns}_[a-z0-9_]*(' | egrep -o '[a-z0-9_]+' | sort -u"
|
||||||
OUTPUT_VARIABLE sublib_SYMS
|
OUTPUT_VARIABLE sublib_SYMS
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
string(REPLACE "\n" ";" sublib_SYMS ${sublib_SYMS})
|
string(REPLACE "\n" ";" sublib_SYMS ${sublib_SYMS})
|
||||||
|
128
external/toxcore/c-toxcore/configure.ac
vendored
128
external/toxcore/c-toxcore/configure.ac
vendored
@@ -22,8 +22,6 @@ BUILD_AV="yes"
|
|||||||
BUILD_TESTING="yes"
|
BUILD_TESTING="yes"
|
||||||
|
|
||||||
LIBCONFIG_FOUND="no"
|
LIBCONFIG_FOUND="no"
|
||||||
WANT_NACL="no"
|
|
||||||
ADD_NACL_OBJECTS_TO_PKGCONFIG="yes"
|
|
||||||
SET_SO_VERSION="yes"
|
SET_SO_VERSION="yes"
|
||||||
|
|
||||||
AC_ARG_ENABLE([soname-versions],
|
AC_ARG_ENABLE([soname-versions],
|
||||||
@@ -38,27 +36,12 @@ AC_ARG_ENABLE([soname-versions],
|
|||||||
)
|
)
|
||||||
AM_CONDITIONAL(SET_SO_VERSION, test "x$SET_SO_VERSION" = "xyes")
|
AM_CONDITIONAL(SET_SO_VERSION, test "x$SET_SO_VERSION" = "xyes")
|
||||||
|
|
||||||
AC_ARG_ENABLE([nacl],
|
|
||||||
[AC_HELP_STRING([--enable-nacl], [use nacl instead of libsodium (default: disabled)]) ],
|
|
||||||
[
|
|
||||||
if test "x$enableval" = "xno"; then
|
|
||||||
WANT_NACL="no"
|
|
||||||
elif test "x$enableval" = "xyes"; then
|
|
||||||
WANT_NACL="yes"
|
|
||||||
fi
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([randombytes-stir],
|
AC_ARG_ENABLE([randombytes-stir],
|
||||||
[AC_HELP_STRING([--enable-randombytes-stir], [use randombytes_stir() instead of sodium_init() for faster startup on android (default: disabled)]) ],
|
[AC_HELP_STRING([--enable-randombytes-stir], [use randombytes_stir() instead of sodium_init() for faster startup on android (default: disabled)]) ],
|
||||||
[
|
[
|
||||||
if test "x$enableval" = "xyes"; then
|
if test "x$enableval" = "xyes"; then
|
||||||
if test "x$WANT_NACL" = "xyes"; then
|
|
||||||
AC_MSG_WARN([randombytes_stir() is not available with NaCl library])
|
|
||||||
else
|
|
||||||
AC_DEFINE([USE_RANDOMBYTES_STIR], [1], [randombytes_stir() instead of sodium_init()])
|
AC_DEFINE([USE_RANDOMBYTES_STIR], [1], [randombytes_stir() instead of sodium_init()])
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -171,16 +154,6 @@ if test "$use_ipv6" != "yes"; then
|
|||||||
AC_DEFINE([USE_IPV6],[0],[define to 0 to force ipv4])
|
AC_DEFINE([USE_IPV6],[0],[define to 0 to force ipv4])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE([[test_network]],
|
|
||||||
[AS_HELP_STRING([[--enable-test-network[=ARG]]], [build tox for a test network incompatible with the main DHT [no]])],
|
|
||||||
[use_test_network=${enableval}],
|
|
||||||
[use_test_network='no']
|
|
||||||
)
|
|
||||||
|
|
||||||
if test "$use_test_network" == "yes"; then
|
|
||||||
AC_DEFINE([USE_TEST_NETWORK],[1],[define to 1 to enable the test network])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AX_HAVE_EPOLL
|
AX_HAVE_EPOLL
|
||||||
if test "$enable_epoll" != "no"; then
|
if test "$enable_epoll" != "no"; then
|
||||||
if test "${ax_cv_have_epoll}" = "yes"; then
|
if test "${ax_cv_have_epoll}" = "yes"; then
|
||||||
@@ -197,8 +170,6 @@ fi
|
|||||||
DEPSEARCH=
|
DEPSEARCH=
|
||||||
LIBSODIUM_SEARCH_HEADERS=
|
LIBSODIUM_SEARCH_HEADERS=
|
||||||
LIBSODIUM_SEARCH_LIBS=
|
LIBSODIUM_SEARCH_LIBS=
|
||||||
NACL_SEARCH_HEADERS=
|
|
||||||
NACL_SEARCH_LIBS=
|
|
||||||
|
|
||||||
AC_ARG_WITH(dependency-search,
|
AC_ARG_WITH(dependency-search,
|
||||||
AC_HELP_STRING([--with-dependency-search=DIR],
|
AC_HELP_STRING([--with-dependency-search=DIR],
|
||||||
@@ -216,24 +187,6 @@ if test -n "$DEPSEARCH"; then
|
|||||||
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$DEPSEARCH/lib/pkgconfig
|
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$DEPSEARCH/lib/pkgconfig
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_ARG_WITH(nacl-headers,
|
|
||||||
AC_HELP_STRING([--with-nacl-headers=DIR],
|
|
||||||
[search for nacl<F2> header files in DIR]),
|
|
||||||
[
|
|
||||||
NACL_SEARCH_HEADERS="$withval"
|
|
||||||
AC_MSG_NOTICE([will search for nacl header files in $withval])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_ARG_WITH(nacl-libs,
|
|
||||||
AC_HELP_STRING([--with-nacl-libs=DIR],
|
|
||||||
[search for nacl libraries in DIR]),
|
|
||||||
[
|
|
||||||
NACL_SEARCH_LIBS="$withval"
|
|
||||||
AC_MSG_NOTICE([will search for nacl libraries in $withval])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
AC_ARG_WITH(libsodium-headers,
|
AC_ARG_WITH(libsodium-headers,
|
||||||
AC_HELP_STRING([--with-libsodium-headers=DIR],
|
AC_HELP_STRING([--with-libsodium-headers=DIR],
|
||||||
[search for libsodium header files in DIR]),
|
[search for libsodium header files in DIR]),
|
||||||
@@ -252,11 +205,6 @@ AC_ARG_WITH(libsodium-libs,
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
if test "x$WANT_NACL" = "xyes"; then
|
|
||||||
enable_shared=no
|
|
||||||
enable_static=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Checks for programs.
|
# Checks for programs.
|
||||||
AC_PROG_CC_C99
|
AC_PROG_CC_C99
|
||||||
|
|
||||||
@@ -287,7 +235,6 @@ case $host_os in
|
|||||||
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
||||||
CFLAGS="$CFLAGS -I/usr/local/include"
|
CFLAGS="$CFLAGS -I/usr/local/include"
|
||||||
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
|
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
|
||||||
ADD_NACL_OBJECTS_TO_PKGCONFIG="no"
|
|
||||||
;;
|
;;
|
||||||
darwin*)
|
darwin*)
|
||||||
MACH=yes
|
MACH=yes
|
||||||
@@ -312,50 +259,7 @@ PKG_CHECK_MODULES([LIBSODIUM], [libsodium],
|
|||||||
LIBSODIUM_FOUND="no"
|
LIBSODIUM_FOUND="no"
|
||||||
])
|
])
|
||||||
|
|
||||||
if test "x$WANT_NACL" = "xyes"; then
|
if test "x$LIBSODIUM_FOUND" = "xno"; then
|
||||||
NACL_LIBS=
|
|
||||||
NACL_LDFLAGS=
|
|
||||||
NACL_OBJECTS=
|
|
||||||
NACL_OBJECTS_PKGCONFIG=
|
|
||||||
LDFLAGS_SAVE="$LDFLAGS"
|
|
||||||
if test -n "$NACL_SEARCH_LIBS"; then
|
|
||||||
LDFLAGS="-L$NACL_SEARCH_LIBS $LDFLAGS"
|
|
||||||
AC_CHECK_LIB(nacl, random,
|
|
||||||
[
|
|
||||||
NACL_LDFLAGS="-L$NACL_SEARCH_LIBS"
|
|
||||||
NACL_LIBS="-lnacl"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([library nacl was not found in requested location $NACL_SEARCH_LIBS])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
else
|
|
||||||
AC_CHECK_LIB(nacl, random,
|
|
||||||
[],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([you enabled nacl support, but library nacl was not found on your system])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if (test -f "$NACL_SEARCH_LIBS/cpucycles.o") &&
|
|
||||||
(test -f "$NACL_SEARCH_LIBS/randombytes.o"); then
|
|
||||||
NACL_OBJECTS="$NACL_SEARCH_LIBS/cpucycles.o $NACL_SEARCH_LIBS/randombytes.o"
|
|
||||||
AC_MSG_NOTICE([found extra NaCl objects: $NACL_OBJECTS])
|
|
||||||
if test "x$ADD_NACL_OBJECTS_TO_PKGCONFIG" = "xyes"; then
|
|
||||||
AC_MSG_NOTICE([adding extra NaCl objects to pkg-config file])
|
|
||||||
NACL_OBJECTS_PKGCONFIG="$NACL_OBJECTS"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([required NaCl object files cpucycles.o randombytes.o not found, please specify their location using the --with-nacl-libs parameter])
|
|
||||||
fi
|
|
||||||
|
|
||||||
LDFLAGS="$LDFLAGS_SAVE"
|
|
||||||
AC_SUBST(NACL_LIBS)
|
|
||||||
AC_SUBST(NACL_LDFLAGS)
|
|
||||||
AC_SUBST(NACL_OBJECTS)
|
|
||||||
AC_SUBST(NACL_OBJECTS_PKGCONFIG)
|
|
||||||
elif test "x$LIBSODIUM_FOUND" = "xno"; then
|
|
||||||
LIBSODIUM_LIBS=
|
LIBSODIUM_LIBS=
|
||||||
LIBSODIUM_LDFLAGS=
|
LIBSODIUM_LDFLAGS=
|
||||||
LDFLAGS_SAVE="$LDFLAGS"
|
LDFLAGS_SAVE="$LDFLAGS"
|
||||||
@@ -388,34 +292,7 @@ fi
|
|||||||
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
|
AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
|
||||||
|
|
||||||
|
|
||||||
if test "x$WANT_NACL" = "xyes"; then
|
if test "x$LIBSODIUM_FOUND" = "xno"; then
|
||||||
NACL_CFLAGS=
|
|
||||||
CFLAGS_SAVE="$CFLAGS"
|
|
||||||
CPPFLAGS_SAVE="$CPPFLAGS"
|
|
||||||
if test -n "$NACL_SEARCH_HEADERS"; then
|
|
||||||
CFLAGS="-I$NACL_SEARCH_HEADERS $CFLAGS"
|
|
||||||
CPPFLAGS="-I$NACL_SEARCH_HEADERS $CPPFLAGS"
|
|
||||||
AC_CHECK_HEADER(crypto_box.h,
|
|
||||||
[
|
|
||||||
NACL_CFLAGS="-I$NACL_SEARCH_HEADERS"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([header files for library nacl were not found in requested location $NACL_SEARCH_HEADERS])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
else
|
|
||||||
AC_CHECK_HEADER(crypto_box.h,
|
|
||||||
[],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([you enabled nacl support, but nacl header files were not found on your system])
|
|
||||||
]
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
CFLAGS="$CFLAGS_SAVE"
|
|
||||||
CPPFLAGS="$CPPFLAGS_SAVE"
|
|
||||||
AC_SUBST(NACL_CFLAGS)
|
|
||||||
AC_DEFINE([VANILLA_NACL], [1], [use nacl instead of libsodium])
|
|
||||||
elif test "x$LIBSODIUM_FOUND" = "xno"; then
|
|
||||||
LIBSODIUM_CFLAGS=
|
LIBSODIUM_CFLAGS=
|
||||||
CFLAGS_SAVE="$CFLAGS"
|
CFLAGS_SAVE="$CFLAGS"
|
||||||
CPPFLAGS_SAVE="$CPPFLAGS"
|
CPPFLAGS_SAVE="$CPPFLAGS"
|
||||||
@@ -555,7 +432,6 @@ AM_CONDITIONAL(BUILD_DHT_BOOTSTRAP, test "x$BUILD_DHT_BOOTSTRAP" = "xyes")
|
|||||||
AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
|
AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
|
||||||
AM_CONDITIONAL(BUILD_AV, test "x$BUILD_AV" = "xyes")
|
AM_CONDITIONAL(BUILD_AV, test "x$BUILD_AV" = "xyes")
|
||||||
AM_CONDITIONAL(BUILD_TESTING, test "x$BUILD_TESTING" = "xyes")
|
AM_CONDITIONAL(BUILD_TESTING, test "x$BUILD_TESTING" = "xyes")
|
||||||
AM_CONDITIONAL(WITH_NACL, test "x$WANT_NACL" = "xyes")
|
|
||||||
AM_CONDITIONAL(WIN32, test "x$WIN32" = "xyes")
|
AM_CONDITIONAL(WIN32, test "x$WIN32" = "xyes")
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile
|
AC_CONFIG_FILES([Makefile
|
||||||
|
@@ -49,7 +49,7 @@ The public/private key pair the TCP server uses is the same one he uses for the
|
|||||||
DHT.
|
DHT.
|
||||||
|
|
||||||
all crypto for communication with the server uses the crypto_box() function of
|
all crypto for communication with the server uses the crypto_box() function of
|
||||||
NaCl.
|
libsodium.
|
||||||
|
|
||||||
TCP doesn't have packets so what we will refer to as packets are sent this way:
|
TCP doesn't have packets so what we will refer to as packets are sent this way:
|
||||||
[[uint16_t (length of data)][data]]
|
[[uint16_t (length of data)][data]]
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Encryption library used: http://nacl.cr.yp.to/
|
Encryption library used: https://doc.libsodium.org/
|
||||||
|
|
||||||
|
|
||||||
When running the program for the first time the crypto_box_keypair() function is used to
|
When running the program for the first time the crypto_box_keypair() function is used to
|
||||||
|
4
external/toxcore/c-toxcore/heroku.yml
vendored
4
external/toxcore/c-toxcore/heroku.yml
vendored
@@ -1,4 +0,0 @@
|
|||||||
---
|
|
||||||
build:
|
|
||||||
docker:
|
|
||||||
web: other/bootstrap_daemon/websocket/Dockerfile
|
|
2
external/toxcore/c-toxcore/libtoxcore.pc.in
vendored
2
external/toxcore/c-toxcore/libtoxcore.pc.in
vendored
@@ -7,5 +7,5 @@ Name: libtoxcore
|
|||||||
Description: Tox protocol library
|
Description: Tox protocol library
|
||||||
Requires:
|
Requires:
|
||||||
Version: @PACKAGE_VERSION@
|
Version: @PACKAGE_VERSION@
|
||||||
Libs: @NACL_OBJECTS_PKGCONFIG@ -L${libdir} -ltoxcore @NACL_LDFLAGS@ -ltoxencryptsave @NACL_LIBS@ @LIBS@ @MATH_LDFLAGS@ @PTHREAD_LDFLAGS@
|
Libs: -L${libdir} -ltoxcore -ltoxencryptsave @LIBS@ @MATH_LDFLAGS@ @PTHREAD_LDFLAGS@
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
|
4
external/toxcore/c-toxcore/other/BUILD.bazel
vendored
4
external/toxcore/c-toxcore/other/BUILD.bazel
vendored
@@ -1,8 +1,6 @@
|
|||||||
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
||||||
load("//tools:no_undefined.bzl", "cc_library")
|
load("//tools:no_undefined.bzl", "cc_library")
|
||||||
|
|
||||||
package(features = ["layering_check"])
|
|
||||||
|
|
||||||
cc_library(
|
cc_library(
|
||||||
name = "bootstrap_node_packets",
|
name = "bootstrap_node_packets",
|
||||||
srcs = ["bootstrap_node_packets.c"],
|
srcs = ["bootstrap_node_packets.c"],
|
||||||
@@ -23,13 +21,11 @@ cc_binary(
|
|||||||
"//c-toxcore/toxcore:Messenger",
|
"//c-toxcore/toxcore:Messenger",
|
||||||
"//c-toxcore/toxcore:TCP_server",
|
"//c-toxcore/toxcore:TCP_server",
|
||||||
"//c-toxcore/toxcore:ccompat",
|
"//c-toxcore/toxcore:ccompat",
|
||||||
"//c-toxcore/toxcore:friend_requests",
|
|
||||||
"//c-toxcore/toxcore:group_onion_announce",
|
"//c-toxcore/toxcore:group_onion_announce",
|
||||||
"//c-toxcore/toxcore:logger",
|
"//c-toxcore/toxcore:logger",
|
||||||
"//c-toxcore/toxcore:mono_time",
|
"//c-toxcore/toxcore:mono_time",
|
||||||
"//c-toxcore/toxcore:network",
|
"//c-toxcore/toxcore:network",
|
||||||
"//c-toxcore/toxcore:onion_announce",
|
"//c-toxcore/toxcore:onion_announce",
|
||||||
"//c-toxcore/toxcore:tox",
|
"//c-toxcore/toxcore:tox",
|
||||||
"//c-toxcore/toxcore:util",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
38
external/toxcore/c-toxcore/other/DHT_bootstrap.c
vendored
38
external/toxcore/c-toxcore/other/DHT_bootstrap.c
vendored
@@ -16,12 +16,17 @@
|
|||||||
#include "../toxcore/DHT.h"
|
#include "../toxcore/DHT.h"
|
||||||
#include "../toxcore/LAN_discovery.h"
|
#include "../toxcore/LAN_discovery.h"
|
||||||
#include "../toxcore/ccompat.h"
|
#include "../toxcore/ccompat.h"
|
||||||
#include "../toxcore/friend_requests.h"
|
#include "../toxcore/crypto_core.h"
|
||||||
|
#include "../toxcore/forwarding.h"
|
||||||
|
#include "../toxcore/group_announce.h"
|
||||||
#include "../toxcore/group_onion_announce.h"
|
#include "../toxcore/group_onion_announce.h"
|
||||||
#include "../toxcore/logger.h"
|
#include "../toxcore/logger.h"
|
||||||
|
#include "../toxcore/mem.h"
|
||||||
#include "../toxcore/mono_time.h"
|
#include "../toxcore/mono_time.h"
|
||||||
|
#include "../toxcore/network.h"
|
||||||
|
#include "../toxcore/onion.h"
|
||||||
|
#include "../toxcore/onion_announce.h"
|
||||||
#include "../toxcore/tox.h"
|
#include "../toxcore/tox.h"
|
||||||
#include "../toxcore/util.h"
|
|
||||||
|
|
||||||
#define TCP_RELAY_ENABLED
|
#define TCP_RELAY_ENABLED
|
||||||
|
|
||||||
@@ -46,7 +51,7 @@ static const char *motd_str = ""; //Change this to anything within 256 bytes(but
|
|||||||
#define PORT 33445
|
#define PORT 33445
|
||||||
|
|
||||||
|
|
||||||
static void manage_keys(DHT *dht)
|
static bool manage_keys(DHT *dht)
|
||||||
{
|
{
|
||||||
enum { KEYS_SIZE = CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_SECRET_KEY_SIZE };
|
enum { KEYS_SIZE = CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_SECRET_KEY_SIZE };
|
||||||
uint8_t keys[KEYS_SIZE];
|
uint8_t keys[KEYS_SIZE];
|
||||||
@@ -60,7 +65,8 @@ static void manage_keys(DHT *dht)
|
|||||||
|
|
||||||
if (read_size != KEYS_SIZE) {
|
if (read_size != KEYS_SIZE) {
|
||||||
printf("Error while reading the key file\nExiting.\n");
|
printf("Error while reading the key file\nExiting.\n");
|
||||||
exit(1);
|
fclose(keys_file);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dht_set_self_public_key(dht, keys);
|
dht_set_self_public_key(dht, keys);
|
||||||
@@ -73,18 +79,20 @@ static void manage_keys(DHT *dht)
|
|||||||
|
|
||||||
if (keys_file == nullptr) {
|
if (keys_file == nullptr) {
|
||||||
printf("Error opening key file in write mode.\nKeys will not be saved.\n");
|
printf("Error opening key file in write mode.\nKeys will not be saved.\n");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fwrite(keys, sizeof(uint8_t), KEYS_SIZE, keys_file) != KEYS_SIZE) {
|
if (fwrite(keys, sizeof(uint8_t), KEYS_SIZE, keys_file) != KEYS_SIZE) {
|
||||||
printf("Error while writing the key file.\nExiting.\n");
|
printf("Error while writing the key file.\nExiting.\n");
|
||||||
exit(1);
|
fclose(keys_file);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Keys saved successfully.\n");
|
printf("Keys saved successfully.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(keys_file);
|
fclose(keys_file);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *strlevel(Logger_Level level)
|
static const char *strlevel(Logger_Level level)
|
||||||
@@ -121,7 +129,7 @@ int main(int argc, char *argv[])
|
|||||||
if (argc == 2 && !tox_strncasecmp(argv[1], "-h", 3)) {
|
if (argc == 2 && !tox_strncasecmp(argv[1], "-h", 3)) {
|
||||||
printf("Usage (connected) : %s [--ipv4|--ipv6] IP PORT KEY\n", argv[0]);
|
printf("Usage (connected) : %s [--ipv4|--ipv6] IP PORT KEY\n", argv[0]);
|
||||||
printf("Usage (unconnected): %s [--ipv4|--ipv6]\n", argv[0]);
|
printf("Usage (unconnected): %s [--ipv4|--ipv6]\n", argv[0]);
|
||||||
exit(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* let user override default by cmdline */
|
/* let user override default by cmdline */
|
||||||
@@ -129,7 +137,7 @@ int main(int argc, char *argv[])
|
|||||||
int argvoffset = cmdline_parsefor_ipv46(argc, argv, &ipv6enabled);
|
int argvoffset = cmdline_parsefor_ipv46(argc, argv, &ipv6enabled);
|
||||||
|
|
||||||
if (argvoffset < 0) {
|
if (argvoffset < 0) {
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize networking -
|
/* Initialize networking -
|
||||||
@@ -162,14 +170,16 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (!(onion && forwarding && onion_a)) {
|
if (!(onion && forwarding && onion_a)) {
|
||||||
printf("Something failed to initialize.\n");
|
printf("Something failed to initialize.\n");
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gca_onion_init(gc_announces_list, onion_a);
|
gca_onion_init(gc_announces_list, onion_a);
|
||||||
|
|
||||||
perror("Initialization");
|
perror("Initialization");
|
||||||
|
|
||||||
manage_keys(dht);
|
if (!manage_keys(dht)) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
printf("Public key: ");
|
printf("Public key: ");
|
||||||
|
|
||||||
#ifdef TCP_RELAY_ENABLED
|
#ifdef TCP_RELAY_ENABLED
|
||||||
@@ -179,7 +189,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (tcp_s == nullptr) {
|
if (tcp_s == nullptr) {
|
||||||
printf("TCP server failed to initialize.\n");
|
printf("TCP server failed to initialize.\n");
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -189,7 +199,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (file == nullptr) {
|
if (file == nullptr) {
|
||||||
printf("Could not open file \"%s\" for writing. Exiting...\n", public_id_filename);
|
printf("Could not open file \"%s\" for writing. Exiting...\n", public_id_filename);
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t i = 0; i < 32; ++i) {
|
for (uint32_t i = 0; i < 32; ++i) {
|
||||||
@@ -210,7 +220,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (port_conv <= 0 || port_conv > UINT16_MAX) {
|
if (port_conv <= 0 || port_conv > UINT16_MAX) {
|
||||||
printf("Failed to convert \"%s\" into a valid port. Exiting...\n", argv[argvoffset + 2]);
|
printf("Failed to convert \"%s\" into a valid port. Exiting...\n", argv[argvoffset + 2]);
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint16_t port = net_htons((uint16_t)port_conv);
|
const uint16_t port = net_htons((uint16_t)port_conv);
|
||||||
@@ -222,7 +232,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (!res) {
|
if (!res) {
|
||||||
printf("Failed to convert \"%s\" into an IP address. Exiting...\n", argv[argvoffset + 1]);
|
printf("Failed to convert \"%s\" into an IP address. Exiting...\n", argv[argvoffset + 1]);
|
||||||
exit(1);
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,16 +9,12 @@ DHT_bootstrap_SOURCES = ../other/DHT_bootstrap.c \
|
|||||||
../other/bootstrap_node_packets.c
|
../other/bootstrap_node_packets.c
|
||||||
|
|
||||||
DHT_bootstrap_CFLAGS = -I$(top_srcdir)/other \
|
DHT_bootstrap_CFLAGS = -I$(top_srcdir)/other \
|
||||||
$(LIBSODIUM_CFLAGS) \
|
$(LIBSODIUM_CFLAGS)
|
||||||
$(NACL_CFLAGS)
|
|
||||||
|
|
||||||
DHT_bootstrap_LDADD = $(LIBSODIUM_LDFLAGS) \
|
DHT_bootstrap_LDADD = $(LIBSODIUM_LDFLAGS) \
|
||||||
$(NACL_LDFLAGS) \
|
|
||||||
libmisc_tools.la \
|
libmisc_tools.la \
|
||||||
libtoxcore.la \
|
libtoxcore.la \
|
||||||
$(LIBSODIUM_LIBS) \
|
$(LIBSODIUM_LIBS) \
|
||||||
$(NACL_OBJECTS) \
|
|
||||||
$(NACL_LIBS) \
|
|
||||||
$(WINSOCK2_LIBS)
|
$(WINSOCK2_LIBS)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -31,8 +31,8 @@ out = (subprocess.run(
|
|||||||
|
|
||||||
errors = 0
|
errors = 0
|
||||||
for line in out.split("\n"):
|
for line in out.split("\n"):
|
||||||
# other/fun can do what it wants.
|
# other/fun and mallocfail can do what they want.
|
||||||
if "/fun/" in line:
|
if "/fun/" in line or "/mallocfail/" in line:
|
||||||
continue
|
continue
|
||||||
filename, include = line.split(":", 1)
|
filename, include = line.split(":", 1)
|
||||||
# We only check headers.
|
# We only check headers.
|
||||||
|
@@ -15,7 +15,7 @@ CPPFLAGS+=("-Itoxav")
|
|||||||
CPPFLAGS+=("-Itoxencryptsave")
|
CPPFLAGS+=("-Itoxencryptsave")
|
||||||
CPPFLAGS+=("-Ithird_party/cmp")
|
CPPFLAGS+=("-Ithird_party/cmp")
|
||||||
|
|
||||||
LDFLAGS=("-lopus" "-lsodium" "-lvpx" "-lpthread" "-lconfig" "-lgtest")
|
LDFLAGS=("-lopus" "-lsodium" "-lvpx" "-lpthread" "-lconfig" "-lgmock" "-lgtest")
|
||||||
LDFLAGS+=("-fuse-ld=gold")
|
LDFLAGS+=("-fuse-ld=gold")
|
||||||
LDFLAGS+=("-Wl,--detect-odr-violations")
|
LDFLAGS+=("-Wl,--detect-odr-violations")
|
||||||
LDFLAGS+=("-Wl,--warn-common")
|
LDFLAGS+=("-Wl,--warn-common")
|
||||||
|
@@ -10,7 +10,7 @@ run() {
|
|||||||
"${CPPFLAGS[@]}" \
|
"${CPPFLAGS[@]}" \
|
||||||
"${LDFLAGS[@]}" \
|
"${LDFLAGS[@]}" \
|
||||||
"$@" \
|
"$@" \
|
||||||
-std=c++11 \
|
-std=c++17 \
|
||||||
-Werror \
|
-Werror \
|
||||||
-Weverything \
|
-Weverything \
|
||||||
-Wno-alloca \
|
-Wno-alloca \
|
||||||
|
@@ -9,7 +9,7 @@ run() {
|
|||||||
clang++ --analyze amalgamation.cc \
|
clang++ --analyze amalgamation.cc \
|
||||||
"${CPPFLAGS[@]}" \
|
"${CPPFLAGS[@]}" \
|
||||||
"$@" \
|
"$@" \
|
||||||
-std=c++11
|
-std=c++20
|
||||||
}
|
}
|
||||||
|
|
||||||
. other/analysis/variants.sh
|
. other/analysis/variants.sh
|
||||||
|
@@ -1,6 +1,67 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
CHECKS="*"
|
CHECKS="*"
|
||||||
|
ERRORS="*"
|
||||||
|
|
||||||
|
# Need to investigate or disable and document these.
|
||||||
|
# =========================================================
|
||||||
|
|
||||||
|
# TODO(iphydf): Fix these.
|
||||||
|
ERRORS="$ERRORS,-cert-err34-c"
|
||||||
|
ERRORS="$ERRORS,-readability-suspicious-call-argument"
|
||||||
|
|
||||||
|
# TODO(iphydf): Fix once cimple 0.0.19 is released.
|
||||||
|
CHECKS="$CHECKS,-google-readability-casting"
|
||||||
|
|
||||||
|
# TODO(iphydf): Fix these.
|
||||||
|
CHECKS="$CHECKS,-bugprone-switch-missing-default-case"
|
||||||
|
|
||||||
|
# TODO(iphydf): We might want some of these. For the ones we don't want, add a
|
||||||
|
# comment explaining why not.
|
||||||
|
CHECKS="$CHECKS,-clang-analyzer-optin.performance.Padding"
|
||||||
|
CHECKS="$CHECKS,-hicpp-signed-bitwise"
|
||||||
|
|
||||||
|
# TODO(iphydf): Maybe fix these?
|
||||||
|
CHECKS="$CHECKS,-bugprone-implicit-widening-of-multiplication-result"
|
||||||
|
CHECKS="$CHECKS,-bugprone-integer-division"
|
||||||
|
CHECKS="$CHECKS,-misc-no-recursion"
|
||||||
|
|
||||||
|
# TODO(iphydf): Only happens in bootstrap_daemon. Fix it.
|
||||||
|
CHECKS="$CHECKS,-cppcoreguidelines-avoid-non-const-global-variables"
|
||||||
|
|
||||||
|
# TODO(iphydf): Probably fix these.
|
||||||
|
CHECKS="$CHECKS,-cert-err33-c"
|
||||||
|
CHECKS="$CHECKS,-cppcoreguidelines-avoid-magic-numbers"
|
||||||
|
CHECKS="$CHECKS,-readability-magic-numbers"
|
||||||
|
|
||||||
|
# TODO(iphydf): We're using a lot of macros for constants. Should we convert
|
||||||
|
# all of them to enum?
|
||||||
|
CHECKS="$CHECKS,-modernize-macro-to-enum"
|
||||||
|
|
||||||
|
# Documented disabled checks. We don't want these for sure.
|
||||||
|
# =========================================================
|
||||||
|
|
||||||
|
# https://stackoverflow.com/questions/58672959/why-does-clang-tidy-say-vsnprintf-has-an-uninitialized-va-list-argument
|
||||||
|
CHECKS="$CHECKS,-clang-analyzer-valist.Uninitialized"
|
||||||
|
|
||||||
|
# We pass a lot of ints around, so many function parameters are some kind of
|
||||||
|
# int type that can be converted from another int type. We won't be getting
|
||||||
|
# away from that anytime soon.
|
||||||
|
CHECKS="$CHECKS,-bugprone-easily-swappable-parameters"
|
||||||
|
|
||||||
|
# Callback handlers often don't use all their parameters. There's
|
||||||
|
# IgnoreVirtual, but that doesn't work for C-style callbacks.
|
||||||
|
CHECKS="$CHECKS,-misc-unused-parameters"
|
||||||
|
|
||||||
|
# We sometimes use #if 0.
|
||||||
|
CHECKS="$CHECKS,-readability-avoid-unconditional-preprocessor-if"
|
||||||
|
|
||||||
|
# We have better macro hygiene checks with tokstyle. We can never pass macro
|
||||||
|
# arguments that require parentheses inside the macro.
|
||||||
|
CHECKS="$CHECKS,-bugprone-macro-parentheses"
|
||||||
|
|
||||||
|
# We don't use memcpy_s.
|
||||||
|
CHECKS="$CHECKS,-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling"
|
||||||
|
|
||||||
# __attribute__((nonnull)) causes this warning on defensive null checks.
|
# __attribute__((nonnull)) causes this warning on defensive null checks.
|
||||||
CHECKS="$CHECKS,-clang-diagnostic-pointer-bool-conversion"
|
CHECKS="$CHECKS,-clang-diagnostic-pointer-bool-conversion"
|
||||||
@@ -57,62 +118,69 @@ CHECKS="$CHECKS,-readability-redundant-control-flow"
|
|||||||
CHECKS="$CHECKS,-bugprone-narrowing-conversions"
|
CHECKS="$CHECKS,-bugprone-narrowing-conversions"
|
||||||
CHECKS="$CHECKS,-cppcoreguidelines-narrowing-conversions"
|
CHECKS="$CHECKS,-cppcoreguidelines-narrowing-conversions"
|
||||||
|
|
||||||
# TODO(iphydf): We might want some of these. For the ones we don't want, add a
|
# Mistakenly thinks that
|
||||||
# comment explaining why not.
|
# const int a = 0, b = 1;
|
||||||
CHECKS="$CHECKS,-clang-analyzer-optin.performance.Padding"
|
# assert(a < b);
|
||||||
CHECKS="$CHECKS,-hicpp-signed-bitwise"
|
# is a constant expression in C (it is in C++ though, which is probably why it's
|
||||||
CHECKS="$CHECKS,-misc-unused-parameters"
|
# mistaken), suggesting to replace 'assert()' with 'static_assert()' in cases
|
||||||
CHECKS="$CHECKS,-readability-function-cognitive-complexity"
|
# where that won't work.
|
||||||
|
#
|
||||||
# TODO(iphydf): Maybe fix these?
|
# There are ways to make 'static_assert()' work, but they are rather annoying --
|
||||||
CHECKS="$CHECKS,-bugprone-easily-swappable-parameters"
|
# they are somewhat ugly, hurting the readability, and some are error-prone:
|
||||||
CHECKS="$CHECKS,-bugprone-implicit-widening-of-multiplication-result"
|
#
|
||||||
CHECKS="$CHECKS,-bugprone-integer-division"
|
# - Turning 'a' and 'b' into enum constants would make it work, but this falls
|
||||||
CHECKS="$CHECKS,-clang-analyzer-core.NullDereference"
|
# apart if the enum types are compared against non-enums down the line
|
||||||
CHECKS="$CHECKS,-clang-analyzer-valist.Uninitialized"
|
# error: enumerated and non-enumerated type in conditional expression [-Werror=extra]
|
||||||
CHECKS="$CHECKS,-concurrency-mt-unsafe"
|
#
|
||||||
CHECKS="$CHECKS,-cppcoreguidelines-avoid-non-const-global-variables"
|
# - Turning 'a' and 'b' into pre-processor macros is the only option left, but
|
||||||
CHECKS="$CHECKS,-misc-no-recursion"
|
# #defines and #undefs in the middle of a function hurt the readability and
|
||||||
|
# are less idiomatic than simply using 'const int'.
|
||||||
# TODO(iphydf): Probably fix these.
|
CHECKS="$CHECKS,-cert-dcl03-c"
|
||||||
CHECKS="$CHECKS,-cert-err33-c"
|
CHECKS="$CHECKS,-hicpp-static-assert"
|
||||||
CHECKS="$CHECKS,-cppcoreguidelines-avoid-magic-numbers"
|
CHECKS="$CHECKS,-misc-static-assert"
|
||||||
CHECKS="$CHECKS,-google-readability-casting"
|
|
||||||
CHECKS="$CHECKS,-modernize-macro-to-enum"
|
|
||||||
CHECKS="$CHECKS,-readability-magic-numbers"
|
|
||||||
|
|
||||||
# TODO(iphydf): These two trip on list.c. Investigate why.
|
|
||||||
CHECKS="$CHECKS,-clang-analyzer-core.NonNullParamChecker"
|
|
||||||
CHECKS="$CHECKS,-clang-analyzer-unix.Malloc"
|
|
||||||
|
|
||||||
ERRORS="*"
|
|
||||||
|
|
||||||
# TODO(iphydf): Fix these.
|
|
||||||
ERRORS="$ERRORS,-bugprone-macro-parentheses"
|
|
||||||
ERRORS="$ERRORS,-cert-err34-c"
|
|
||||||
ERRORS="$ERRORS,-cert-str34-c"
|
|
||||||
ERRORS="$ERRORS,-readability-suspicious-call-argument"
|
|
||||||
|
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
|
# TODO(iphydf): Add toxav.
|
||||||
|
DIRS=(
|
||||||
|
other/bootstrap_daemon/src
|
||||||
|
other
|
||||||
|
toxcore
|
||||||
|
toxcore/events
|
||||||
|
toxencryptsave
|
||||||
|
)
|
||||||
|
|
||||||
|
copy_files() {
|
||||||
|
find "${DIRS[@]}" \
|
||||||
|
-maxdepth 1 -type d -exec mkdir -p "$1/{}" \;
|
||||||
|
find "${DIRS[@]}" \
|
||||||
|
-maxdepth 1 -name "*.c" -exec cp "{}" "$1/{}" \;
|
||||||
|
}
|
||||||
|
|
||||||
run() {
|
run() {
|
||||||
echo "Running clang-tidy in variant '$*'"
|
echo "Running clang-tidy in variant '$*'"
|
||||||
EXTRA_ARGS=("$@")
|
EXTRA_ARGS=("$@")
|
||||||
for i in "${!EXTRA_ARGS[@]}"; do
|
for i in "${!EXTRA_ARGS[@]}"; do
|
||||||
EXTRA_ARGS[$i]="--extra-arg=${EXTRA_ARGS[$i]}"
|
EXTRA_ARGS[$i]="--extra-arg=${EXTRA_ARGS[$i]}"
|
||||||
done
|
done
|
||||||
clang-tidy-14 \
|
ls .clang-tidy
|
||||||
-p=_build \
|
copy_files a
|
||||||
|
if ! find "${DIRS[@]}" \
|
||||||
|
-maxdepth 1 -name "*.c" -print0 \
|
||||||
|
| xargs -0 -n15 -P"$(nproc)" clang-tidy \
|
||||||
|
-p="$PWD/_build" \
|
||||||
--extra-arg=-DMIN_LOGGER_LEVEL=LOGGER_LEVEL_TRACE \
|
--extra-arg=-DMIN_LOGGER_LEVEL=LOGGER_LEVEL_TRACE \
|
||||||
"${EXTRA_ARGS[@]}" \
|
"${EXTRA_ARGS[@]}" \
|
||||||
|
--fix \
|
||||||
--checks="$CHECKS" \
|
--checks="$CHECKS" \
|
||||||
--warnings-as-errors="$ERRORS" \
|
--warnings-as-errors="$ERRORS" \
|
||||||
--use-color \
|
--use-color; then
|
||||||
other/bootstrap_daemon/src/*.c \
|
copy_files b
|
||||||
other/*.c \
|
colordiff -ru a b
|
||||||
toxav/*.c \
|
rm -rf a b
|
||||||
toxcore/*.c \
|
false
|
||||||
toxencryptsave/*.c
|
fi
|
||||||
|
rm -rf a
|
||||||
}
|
}
|
||||||
|
|
||||||
cmake . -B_build -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
cmake . -B_build -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
|
||||||
|
@@ -8,9 +8,12 @@ set -e
|
|||||||
|
|
||||||
CPPCHECK=("--enable=all")
|
CPPCHECK=("--enable=all")
|
||||||
CPPCHECK+=("--inconclusive")
|
CPPCHECK+=("--inconclusive")
|
||||||
|
CPPCHECK+=("--check-level=exhaustive")
|
||||||
|
CPPCHECK+=("--inline-suppr")
|
||||||
|
CPPCHECK+=("--library=other/docker/cppcheck/toxcore.cfg")
|
||||||
CPPCHECK+=("--error-exitcode=1")
|
CPPCHECK+=("--error-exitcode=1")
|
||||||
# Used for VLA.
|
# We don't cast function pointers, which cppcheck suggests here.
|
||||||
CPPCHECK+=("--suppress=allocaCalled")
|
CPPCHECK+=("--suppress=constParameterCallback")
|
||||||
# False positives in switch statements.
|
# False positives in switch statements.
|
||||||
CPPCHECK+=("--suppress=knownConditionTrueFalse")
|
CPPCHECK+=("--suppress=knownConditionTrueFalse")
|
||||||
# Cppcheck does not need standard library headers to get proper results.
|
# Cppcheck does not need standard library headers to get proper results.
|
||||||
@@ -19,27 +22,24 @@ CPPCHECK+=("--suppress=missingIncludeSystem")
|
|||||||
CPPCHECK+=("--suppress=signConversion")
|
CPPCHECK+=("--suppress=signConversion")
|
||||||
# TODO(iphydf): Fixed in the toxav refactor PR.
|
# TODO(iphydf): Fixed in the toxav refactor PR.
|
||||||
CPPCHECK+=("--suppress=redundantAssignment")
|
CPPCHECK+=("--suppress=redundantAssignment")
|
||||||
# We have some redundant nullptr checks in assertions
|
|
||||||
CPPCHECK+=("--suppress=nullPointerRedundantCheck")
|
|
||||||
# Triggers a false warning in group.c
|
|
||||||
CPPCHECK+=("--suppress=AssignmentAddressToInteger")
|
|
||||||
# TODO(sudden6): This triggers a false positive, check again later to enable it
|
|
||||||
CPPCHECK+=("--suppress=arrayIndexOutOfBoundsCond")
|
|
||||||
|
|
||||||
# We're a library. This only works on whole programs.
|
|
||||||
CPPCHECK_C=("--suppress=unusedFunction")
|
|
||||||
|
|
||||||
|
# We use this for VLAs.
|
||||||
|
CPPCHECK_CXX+=("--suppress=allocaCalled")
|
||||||
# False positive in auto_tests.
|
# False positive in auto_tests.
|
||||||
CPPCHECK_CXX+=("--suppress=shadowArgument")
|
|
||||||
CPPCHECK_CXX+=("--suppress=shadowFunction")
|
CPPCHECK_CXX+=("--suppress=shadowFunction")
|
||||||
# False positive for callback functions
|
# False positive in group.c.
|
||||||
CPPCHECK_CXX+=("--suppress=constParameter")
|
# Using cppcheck-suppress claims the suppression is unused.
|
||||||
|
CPPCHECK_CXX+=("--suppress=AssignmentAddressToInteger")
|
||||||
|
# We use C style casts because we write C code.
|
||||||
|
CPPCHECK_CXX+=("--suppress=cstyleCast")
|
||||||
# Used in Messenger.c for a static_assert(...)
|
# Used in Messenger.c for a static_assert(...)
|
||||||
CPPCHECK_CXX+=("--suppress=sizeofFunctionCall")
|
CPPCHECK_CXX+=("--suppress=sizeofFunctionCall")
|
||||||
|
# This is outdated. Range-for is a good choice.
|
||||||
|
CPPCHECK_CXX+=("--suppress=useStlAlgorithm")
|
||||||
|
|
||||||
run() {
|
run() {
|
||||||
echo "Running cppcheck in variant '$*'"
|
echo "Running cppcheck in variant '$*'"
|
||||||
cppcheck "${CPPCHECK[@]}" "${CPPCHECK_C[@]}" tox*/*.[ch] tox*/*/*.[ch] "${CPPFLAGS[@]}" "$@"
|
cppcheck -j8 "${CPPCHECK[@]}" "${CPPCHECK_C[@]}" tox*/*.[ch] tox*/*/*.[ch] "${CPPFLAGS[@]}" "$@"
|
||||||
cppcheck "${CPPCHECK[@]}" "${CPPCHECK_CXX[@]}" amalgamation.cc "${CPPFLAGS[@]}" "$@"
|
cppcheck "${CPPCHECK[@]}" "${CPPCHECK_CXX[@]}" amalgamation.cc "${CPPFLAGS[@]}" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@ run() {
|
|||||||
"${CPPFLAGS[@]}" \
|
"${CPPFLAGS[@]}" \
|
||||||
"${LDFLAGS[@]}" \
|
"${LDFLAGS[@]}" \
|
||||||
"$@" \
|
"$@" \
|
||||||
-std=c++11 \
|
-std=c++17 \
|
||||||
-fdiagnostics-color=always \
|
-fdiagnostics-color=always \
|
||||||
-Wall \
|
-Wall \
|
||||||
-Wextra \
|
-Wextra \
|
||||||
|
@@ -1,25 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# --bufferoverrun \
|
|
||||||
# --pulse \
|
|
||||||
|
|
||||||
read -r -d '' SCRIPT <<'EOF'
|
|
||||||
infer \
|
|
||||||
--report-console-limit 100 \
|
|
||||||
--jobs 8 \
|
|
||||||
--biabduction \
|
|
||||||
--loop-hoisting \
|
|
||||||
--quandary \
|
|
||||||
--racerd \
|
|
||||||
--starvation \
|
|
||||||
--uninit \
|
|
||||||
-- clang++ -fsyntax-only \
|
|
||||||
$(pkg-config --cflags libconfig libsodium opus vpx) \
|
|
||||||
/work/other/bootstrap_daemon/src/*.c \
|
|
||||||
/work/other/bootstrap_node_packets.c \
|
|
||||||
/work/toxav/*.c \
|
|
||||||
/work/toxcore/*.c \
|
|
||||||
/work/toxencryptsave/*.c
|
|
||||||
EOF
|
|
||||||
|
|
||||||
docker run --rm -it -v "$PWD:/work" toxchat/infer bash -c "$SCRIPT"
|
|
@@ -16,7 +16,6 @@
|
|||||||
--align-reference=name
|
--align-reference=name
|
||||||
|
|
||||||
# Formatting Options
|
# Formatting Options
|
||||||
--add-brackets
|
|
||||||
--convert-tabs
|
--convert-tabs
|
||||||
--max-code-length=120
|
--max-code-length=120
|
||||||
|
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
load("@rules_cc//cc:defs.bzl", "cc_binary")
|
||||||
|
|
||||||
package(features = ["layering_check"])
|
|
||||||
|
|
||||||
cc_binary(
|
cc_binary(
|
||||||
name = "bootstrap_daemon",
|
name = "bootstrap_daemon",
|
||||||
srcs = glob([
|
srcs = glob([
|
||||||
@@ -20,7 +18,6 @@ cc_binary(
|
|||||||
"//c-toxcore/toxcore:mono_time",
|
"//c-toxcore/toxcore:mono_time",
|
||||||
"//c-toxcore/toxcore:onion_announce",
|
"//c-toxcore/toxcore:onion_announce",
|
||||||
"//c-toxcore/toxcore:tox",
|
"//c-toxcore/toxcore:tox",
|
||||||
"//c-toxcore/toxcore:util",
|
|
||||||
"@libconfig",
|
"@libconfig",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@@ -19,6 +19,14 @@ add_executable(tox-bootstrapd
|
|||||||
src/tox-bootstrapd.c
|
src/tox-bootstrapd.c
|
||||||
../bootstrap_node_packets.c
|
../bootstrap_node_packets.c
|
||||||
../bootstrap_node_packets.h)
|
../bootstrap_node_packets.h)
|
||||||
target_link_modules(tox-bootstrapd toxcore ${LIBCONFIG_LIBRARIES})
|
target_link_libraries(tox-bootstrapd PRIVATE ${LIBCONFIG_LIBRARIES})
|
||||||
|
target_link_directories(tox-bootstrapd PRIVATE ${LIBCONFIG_LIBRARY_DIRS})
|
||||||
|
target_include_directories(tox-bootstrapd SYSTEM PRIVATE ${LIBCONFIG_INCLUDE_DIRS})
|
||||||
|
target_compile_options(tox-bootstrapd PRIVATE ${LIBCONFIG_CFLAGS_OTHER})
|
||||||
|
if(TARGET toxcore_static)
|
||||||
|
target_link_libraries(tox-bootstrapd PRIVATE toxcore_static)
|
||||||
|
else()
|
||||||
|
target_link_libraries(tox-bootstrapd PRIVATE toxcore_shared)
|
||||||
|
endif()
|
||||||
install(TARGETS tox-bootstrapd RUNTIME DESTINATION bin)
|
install(TARGETS tox-bootstrapd RUNTIME DESTINATION bin)
|
||||||
install(FILES bash-completion/completions/tox-bootstrapd DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/bash-completion/completions")
|
install(FILES bash-completion/completions/tox-bootstrapd DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/bash-completion/completions")
|
||||||
|
@@ -259,7 +259,7 @@ docker run -d --name tox-bootstrapd --restart always \
|
|||||||
toxchat/bootstrap-node
|
toxchat/bootstrap-node
|
||||||
```
|
```
|
||||||
|
|
||||||
We create a new user and protect its home directory in order to mount it in the Docker image, so that the kyepair the daemon uses would be stored on the host system, which makes it less likely that you would loose the keypair while playing with or updating the Docker container.
|
We create a new user and protect its home directory in order to mount it in the Docker image, so that the keypair the daemon uses would be stored on the host system, which makes it less likely that you would loose the keypair while playing with or updating the Docker container.
|
||||||
|
|
||||||
You can check logs for your public key or any errors:
|
You can check logs for your public key or any errors:
|
||||||
```sh
|
```sh
|
||||||
|
@@ -1,18 +1,18 @@
|
|||||||
###########################################################
|
###########################################################
|
||||||
# Builder image: we compile the code here (static build)
|
# Builder image: we compile the code here (static build)
|
||||||
FROM alpine:3.15.0 AS build
|
FROM alpine:3.19.0 AS build
|
||||||
|
|
||||||
RUN ["apk", "--no-cache", "add",\
|
RUN ["apk", "--no-cache", "add",\
|
||||||
"build-base",\
|
"clang",\
|
||||||
"cmake",\
|
"cmake",\
|
||||||
"linux-headers",\
|
"linux-headers",\
|
||||||
"libconfig-dev",\
|
"libconfig-dev",\
|
||||||
"libconfig-static",\
|
"libconfig-static",\
|
||||||
"libsodium-dev",\
|
"libsodium-dev",\
|
||||||
"libsodium-static",\
|
"libsodium-static",\
|
||||||
|
"musl-dev",\
|
||||||
"ninja",\
|
"ninja",\
|
||||||
"python3"\
|
"python3"]
|
||||||
]
|
|
||||||
|
|
||||||
WORKDIR /src/c-toxcore
|
WORKDIR /src/c-toxcore
|
||||||
|
|
||||||
@@ -34,9 +34,9 @@ COPY CMakeLists.txt so.version ./
|
|||||||
COPY other/bootstrap_daemon/CMakeLists.txt other/bootstrap_daemon/CMakeLists.txt
|
COPY other/bootstrap_daemon/CMakeLists.txt other/bootstrap_daemon/CMakeLists.txt
|
||||||
COPY testing/CMakeLists.txt testing/CMakeLists.txt
|
COPY testing/CMakeLists.txt testing/CMakeLists.txt
|
||||||
|
|
||||||
RUN cmake -B_build -H. \
|
RUN CC=clang cmake -B_build -H. \
|
||||||
-GNinja \
|
-GNinja \
|
||||||
-DCMAKE_C_FLAGS="-DTCP_SERVER_USE_EPOLL -fstack-protector-all -fisolate-erroneous-paths-attribute" \
|
-DCMAKE_C_FLAGS="-DTCP_SERVER_USE_EPOLL -fsanitize=alignment,return,returns-nonnull-attribute,vla-bound,unreachable,float-cast-overflow,null -fsanitize-trap=all -fstack-protector-all" \
|
||||||
-DCMAKE_UNITY_BUILD=ON \
|
-DCMAKE_UNITY_BUILD=ON \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DFULLY_STATIC=ON \
|
-DFULLY_STATIC=ON \
|
||||||
@@ -48,8 +48,10 @@ RUN cmake -B_build -H. \
|
|||||||
# Verify checksum from dev-built binary, so we can be sure Docker Hub doesn't
|
# Verify checksum from dev-built binary, so we can be sure Docker Hub doesn't
|
||||||
# mess with your binaries.
|
# mess with your binaries.
|
||||||
COPY other/bootstrap_daemon/docker/tox-bootstrapd.sha256 other/bootstrap_daemon/docker/
|
COPY other/bootstrap_daemon/docker/tox-bootstrapd.sha256 other/bootstrap_daemon/docker/
|
||||||
RUN sha256sum /usr/local/bin/tox-bootstrapd && \
|
RUN SHA256="$(sha256sum /usr/local/bin/tox-bootstrapd)" && \
|
||||||
sha256sum -c other/bootstrap_daemon/docker/tox-bootstrapd.sha256
|
(sha256sum -c other/bootstrap_daemon/docker/tox-bootstrapd.sha256 || \
|
||||||
|
(echo "::error file=other/bootstrap_daemon/docker/tox-bootstrapd.sha256,line=1::$SHA256" && \
|
||||||
|
false))
|
||||||
|
|
||||||
# Remove all the example bootstrap nodes from the config file.
|
# Remove all the example bootstrap nodes from the config file.
|
||||||
COPY other/bootstrap_daemon/tox-bootstrapd.conf other/bootstrap_daemon/
|
COPY other/bootstrap_daemon/tox-bootstrapd.conf other/bootstrap_daemon/
|
||||||
@@ -62,7 +64,7 @@ RUN ["other/bootstrap_daemon/docker/get-nodes.py", "other/bootstrap_daemon/tox-b
|
|||||||
|
|
||||||
###########################################################
|
###########################################################
|
||||||
# Final image build: this is what runs the bootstrap node
|
# Final image build: this is what runs the bootstrap node
|
||||||
FROM debian:bullseye-slim
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
COPY --from=build /usr/local/bin/tox-bootstrapd /usr/local/bin/
|
COPY --from=build /usr/local/bin/tox-bootstrapd /usr/local/bin/
|
||||||
COPY --from=build /src/c-toxcore/other/bootstrap_daemon/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
|
COPY --from=build /src/c-toxcore/other/bootstrap_daemon/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
|
||||||
|
46
external/toxcore/c-toxcore/other/bootstrap_daemon/docker/fetch-sha256
vendored
Executable file
46
external/toxcore/c-toxcore/other/bootstrap_daemon/docker/fetch-sha256
vendored
Executable file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import pprint
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import urllib.request
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
SHA256_FILE = "other/bootstrap_daemon/docker/tox-bootstrapd.sha256"
|
||||||
|
|
||||||
|
with open(f"{os.environ['HOME']}/.github-token") as fh:
|
||||||
|
token = fh.read().strip()
|
||||||
|
|
||||||
|
head_sha = (subprocess.run(["git", "rev-parse", "HEAD"],
|
||||||
|
capture_output=True,
|
||||||
|
check=True).stdout.decode("utf-8").strip())
|
||||||
|
|
||||||
|
|
||||||
|
def request(url: str) -> Any:
|
||||||
|
return json.loads(
|
||||||
|
urllib.request.urlopen(
|
||||||
|
urllib.request.Request(
|
||||||
|
url,
|
||||||
|
headers={
|
||||||
|
"Accept": "application/vnd.github+json",
|
||||||
|
"Authorization": "Bearer " + token,
|
||||||
|
"X-GitHub-Api-Version": "2022-11-28",
|
||||||
|
},
|
||||||
|
)).read())
|
||||||
|
|
||||||
|
|
||||||
|
pp = pprint.PrettyPrinter(indent=2, compact=True)
|
||||||
|
annots = [
|
||||||
|
a for r in request(
|
||||||
|
f"https://api.github.com/repos/TokTok/c-toxcore/commits/{head_sha}/check-runs?per_page=100"
|
||||||
|
)["check_runs"] if r["name"] == "docker-bootstrap-node"
|
||||||
|
for a in request(r["output"]["annotations_url"])
|
||||||
|
if a["path"] == SHA256_FILE
|
||||||
|
]
|
||||||
|
if not annots:
|
||||||
|
print("could not find sha256sum output")
|
||||||
|
sys.exit(1)
|
||||||
|
with open(SHA256_FILE, "w") as fh:
|
||||||
|
fh.write(annots[0]["message"] + "\n")
|
||||||
|
print(f"updated {SHA256_FILE}")
|
@@ -1 +1 @@
|
|||||||
b2996d73cab7c7453dc10ccf7ad733622558de3b1ad0db824a379cf96f500379 /usr/local/bin/tox-bootstrapd
|
5061f92a95ba45cfa49d78175fa8fb6e4d66a58d86634ea3fd3ae6d80cb0558a /usr/local/bin/tox-bootstrapd
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
docker_build() {
|
docker_build() {
|
||||||
docker build -f other/bootstrap_daemon/docker/Dockerfile -t toxchat/bootstrap-node .
|
DOCKER_BUILDKIT=1 docker build --progress=plain -f other/bootstrap_daemon/docker/Dockerfile -t toxchat/bootstrap-node .
|
||||||
}
|
}
|
||||||
|
|
||||||
# Run Docker build once. If it succeeds, we're good.
|
# Run Docker build once. If it succeeds, we're good.
|
||||||
@@ -12,12 +12,11 @@ if docker_build; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# We're not good. Run it again, but now capture the output.
|
# We're not good. Run it again, but now capture the output.
|
||||||
OUTPUT=$(docker_build || true 2>&1)
|
OUTPUT=$(docker_build 2>&1 || true)
|
||||||
|
|
||||||
if echo "$OUTPUT" | grep '/usr/local/bin/tox-bootstrapd: FAILED'; then
|
if echo "$OUTPUT" | grep '/usr/local/bin/tox-bootstrapd: FAILED'; then
|
||||||
# This is a checksum warning, so we need to update it.
|
# This is a checksum warning, so we need to update it.
|
||||||
IMAGE=$(echo "$OUTPUT" | grep '^ ---> [0-9a-f]*$' | grep -o '[0-9a-f]*$' | tail -n1)
|
echo "$OUTPUT" | grep -Eo '[0-9a-f]{64} /usr/local/bin/tox-bootstrapd' | tail -n1 >other/bootstrap_daemon/docker/tox-bootstrapd.sha256
|
||||||
docker run --rm "$IMAGE" sha256sum /usr/local/bin/tox-bootstrapd >other/bootstrap_daemon/docker/tox-bootstrapd.sha256
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Run once last time to complete the build.
|
# Run once last time to complete the build.
|
||||||
|
@@ -24,17 +24,13 @@ tox_bootstrapd_SOURCES = \
|
|||||||
tox_bootstrapd_CFLAGS = \
|
tox_bootstrapd_CFLAGS = \
|
||||||
-I$(top_srcdir)/other/bootstrap_daemon \
|
-I$(top_srcdir)/other/bootstrap_daemon \
|
||||||
$(LIBSODIUM_CFLAGS) \
|
$(LIBSODIUM_CFLAGS) \
|
||||||
$(NACL_CFLAGS) \
|
|
||||||
$(LIBCONFIG_CFLAGS)
|
$(LIBCONFIG_CFLAGS)
|
||||||
|
|
||||||
tox_bootstrapd_LDADD = \
|
tox_bootstrapd_LDADD = \
|
||||||
$(LIBSODIUM_LDFLAGS) \
|
$(LIBSODIUM_LDFLAGS) \
|
||||||
$(NACL_LDFLAGS) \
|
|
||||||
libtoxcore.la \
|
libtoxcore.la \
|
||||||
$(LIBCONFIG_LIBS) \
|
$(LIBCONFIG_LIBS) \
|
||||||
$(LIBSODIUM_LIBS) \
|
$(LIBSODIUM_LIBS)
|
||||||
$(NACL_OBJECTS) \
|
|
||||||
$(NACL_LIBS)
|
|
||||||
|
|
||||||
bashcompdir = $(datarootdir)/bash-completion/completions
|
bashcompdir = $(datarootdir)/bash-completion/completions
|
||||||
dist_bashcomp_DATA = $(top_builddir)/other/bootstrap_daemon/bash-completion/completions/tox-bootstrapd
|
dist_bashcomp_DATA = $(top_builddir)/other/bootstrap_daemon/bash-completion/completions/tox-bootstrapd
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/* SPDX-License-Identifier: GPL-3.0-or-later
|
/* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* Copyright © 2016-2018 The TokTok team.
|
* Copyright © 2016-2024 The TokTok team.
|
||||||
* Copyright © 2015-2016 Tox project.
|
* Copyright © 2015-2016 Tox project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -10,12 +10,12 @@
|
|||||||
#include "command_line_arguments.h"
|
#include "command_line_arguments.h"
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
#include "../../../toxcore/ccompat.h"
|
#include "../../../toxcore/ccompat.h"
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
@@ -24,9 +24,9 @@
|
|||||||
*/
|
*/
|
||||||
static void print_help(void)
|
static void print_help(void)
|
||||||
{
|
{
|
||||||
// 2 space ident
|
// 2 space indent
|
||||||
// make sure all lines fit into 80 columns
|
// Make sure all lines fit into 80 columns
|
||||||
// make sure options are listed in alphabetical order
|
// Make sure options are listed in alphabetical order
|
||||||
log_write(LOG_LEVEL_INFO,
|
log_write(LOG_LEVEL_INFO,
|
||||||
"Usage: tox-bootstrapd [OPTION]... --config=FILE_PATH\n"
|
"Usage: tox-bootstrapd [OPTION]... --config=FILE_PATH\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -39,7 +39,7 @@ static void print_help(void)
|
|||||||
" (detach from the terminal) and won't use the PID file.\n"
|
" (detach from the terminal) and won't use the PID file.\n"
|
||||||
" --help Print this help message.\n"
|
" --help Print this help message.\n"
|
||||||
" --log-backend=BACKEND Specify which logging backend to use.\n"
|
" --log-backend=BACKEND Specify which logging backend to use.\n"
|
||||||
" Valid BACKEND values (case sensetive):\n"
|
" Valid BACKEND values (case sensitive):\n"
|
||||||
" syslog Writes log messages to syslog.\n"
|
" syslog Writes log messages to syslog.\n"
|
||||||
" Default option when no --log-backend is\n"
|
" Default option when no --log-backend is\n"
|
||||||
" specified.\n"
|
" specified.\n"
|
||||||
@@ -47,13 +47,14 @@ static void print_help(void)
|
|||||||
" --version Print version information.\n");
|
" --version Print version information.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_command_line_arguments(int argc, char *argv[], char **cfg_file_path, LOG_BACKEND *log_backend,
|
Cli_Status handle_command_line_arguments(
|
||||||
|
int argc, char *argv[], char **cfg_file_path, LOG_BACKEND *log_backend,
|
||||||
bool *run_in_foreground)
|
bool *run_in_foreground)
|
||||||
{
|
{
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
log_write(LOG_LEVEL_ERROR, "Error: No arguments provided.\n\n");
|
log_write(LOG_LEVEL_ERROR, "Error: No arguments provided.\n\n");
|
||||||
print_help();
|
print_help();
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
opterr = 0;
|
opterr = 0;
|
||||||
@@ -89,7 +90,7 @@ void handle_command_line_arguments(int argc, char *argv[], char **cfg_file_path,
|
|||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
print_help();
|
print_help();
|
||||||
exit(0);
|
return CLI_STATUS_DONE;
|
||||||
|
|
||||||
case 'l':
|
case 'l':
|
||||||
if (strcmp(optarg, "syslog") == 0) {
|
if (strcmp(optarg, "syslog") == 0) {
|
||||||
@@ -101,24 +102,24 @@ void handle_command_line_arguments(int argc, char *argv[], char **cfg_file_path,
|
|||||||
} else {
|
} else {
|
||||||
log_write(LOG_LEVEL_ERROR, "Error: Invalid BACKEND value for --log-backend option passed: %s\n\n", optarg);
|
log_write(LOG_LEVEL_ERROR, "Error: Invalid BACKEND value for --log-backend option passed: %s\n\n", optarg);
|
||||||
print_help();
|
print_help();
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'v':
|
case 'v':
|
||||||
log_write(LOG_LEVEL_INFO, "Version: %lu\n", DAEMON_VERSION_NUMBER);
|
log_write(LOG_LEVEL_INFO, "Version: %lu\n", DAEMON_VERSION_NUMBER);
|
||||||
exit(0);
|
return CLI_STATUS_DONE;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
log_write(LOG_LEVEL_ERROR, "Error: Unrecognized option %s\n\n", argv[optind - 1]);
|
log_write(LOG_LEVEL_ERROR, "Error: Unrecognized option %s\n\n", argv[optind - 1]);
|
||||||
print_help();
|
print_help();
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
|
|
||||||
case ':':
|
case ':':
|
||||||
log_write(LOG_LEVEL_ERROR, "Error: No argument provided for option %s\n\n", argv[optind - 1]);
|
log_write(LOG_LEVEL_ERROR, "Error: No argument provided for option %s\n\n", argv[optind - 1]);
|
||||||
print_help();
|
print_help();
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,6 +130,8 @@ void handle_command_line_arguments(int argc, char *argv[], char **cfg_file_path,
|
|||||||
if (!cfg_file_path_set) {
|
if (!cfg_file_path_set) {
|
||||||
log_write(LOG_LEVEL_ERROR, "Error: The required --config option wasn't specified\n\n");
|
log_write(LOG_LEVEL_ERROR, "Error: The required --config option wasn't specified\n\n");
|
||||||
print_help();
|
print_help();
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return CLI_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,15 @@
|
|||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
typedef enum Cli_Status {
|
||||||
|
/** Continue the program. Command line processing completed. */
|
||||||
|
CLI_STATUS_OK,
|
||||||
|
/** Stop the program with success status. */
|
||||||
|
CLI_STATUS_DONE,
|
||||||
|
/** Stop the program with error status. */
|
||||||
|
CLI_STATUS_ERROR,
|
||||||
|
} Cli_Status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles command line arguments, setting cfg_file_path and log_backend.
|
* Handles command line arguments, setting cfg_file_path and log_backend.
|
||||||
* Terminates the application if incorrect arguments are specified.
|
* Terminates the application if incorrect arguments are specified.
|
||||||
@@ -22,7 +31,8 @@
|
|||||||
* @param log_backend Sets to the provided by the user log backend option.
|
* @param log_backend Sets to the provided by the user log backend option.
|
||||||
* @param run_in_foreground Sets to the provided by the user foreground option.
|
* @param run_in_foreground Sets to the provided by the user foreground option.
|
||||||
*/
|
*/
|
||||||
void handle_command_line_arguments(int argc, char *argv[], char **cfg_file_path, LOG_BACKEND *log_backend,
|
Cli_Status handle_command_line_arguments(
|
||||||
|
int argc, char *argv[], char **cfg_file_path, LOG_BACKEND *log_backend,
|
||||||
bool *run_in_foreground);
|
bool *run_in_foreground);
|
||||||
|
|
||||||
#endif // C_TOXCORE_OTHER_BOOTSTRAP_DAEMON_SRC_COMMAND_LINE_ARGUMENTS_H
|
#endif // C_TOXCORE_OTHER_BOOTSTRAP_DAEMON_SRC_COMMAND_LINE_ARGUMENTS_H
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/* SPDX-License-Identifier: GPL-3.0-or-later
|
/* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* Copyright © 2016-2018 The TokTok team.
|
* Copyright © 2016-2024 The TokTok team.
|
||||||
* Copyright © 2014-2016 Tox project.
|
* Copyright © 2014-2016 Tox project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include "config_defaults.h"
|
#include "config_defaults.h"
|
||||||
|
#include "global.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -18,6 +19,10 @@
|
|||||||
|
|
||||||
#include <libconfig.h>
|
#include <libconfig.h>
|
||||||
|
|
||||||
|
#include "../../../toxcore/DHT.h"
|
||||||
|
#include "../../../toxcore/ccompat.h"
|
||||||
|
#include "../../../toxcore/crypto_core.h"
|
||||||
|
#include "../../../toxcore/network.h"
|
||||||
#include "../../bootstrap_node_packets.h"
|
#include "../../bootstrap_node_packets.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,22 +44,28 @@ static void parse_tcp_relay_ports_config(config_t *cfg, uint16_t **tcp_relay_por
|
|||||||
log_write(LOG_LEVEL_WARNING, "No '%s' setting in the configuration file.\n", NAME_TCP_RELAY_PORTS);
|
log_write(LOG_LEVEL_WARNING, "No '%s' setting in the configuration file.\n", NAME_TCP_RELAY_PORTS);
|
||||||
log_write(LOG_LEVEL_WARNING, "Using default '%s':\n", NAME_TCP_RELAY_PORTS);
|
log_write(LOG_LEVEL_WARNING, "Using default '%s':\n", NAME_TCP_RELAY_PORTS);
|
||||||
|
|
||||||
uint16_t default_ports[DEFAULT_TCP_RELAY_PORTS_COUNT] = {DEFAULT_TCP_RELAY_PORTS};
|
uint16_t default_ports[] = {DEFAULT_TCP_RELAY_PORTS};
|
||||||
|
|
||||||
for (int i = 0; i < DEFAULT_TCP_RELAY_PORTS_COUNT; ++i) {
|
// Check to avoid calling malloc(0) later on
|
||||||
log_write(LOG_LEVEL_INFO, "Port #%d: %u\n", i, default_ports[i]);
|
// NOLINTNEXTLINE, clang-tidy: error: suspicious comparison of 'sizeof(expr)' to a constant [bugprone-sizeof-expression,-warnings-as-errors]
|
||||||
|
static_assert(sizeof(default_ports) > 0, "At least one default TCP relay port should be provided");
|
||||||
|
|
||||||
|
const size_t default_ports_count = sizeof(default_ports)/sizeof(*default_ports);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < default_ports_count; ++i) {
|
||||||
|
log_write(LOG_LEVEL_INFO, "Port #%zu: %u\n", i, default_ports[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// similar procedure to the one of reading config file below
|
// Similar procedure to the one of reading config file below
|
||||||
*tcp_relay_ports = (uint16_t *)malloc(DEFAULT_TCP_RELAY_PORTS_COUNT * sizeof(uint16_t));
|
*tcp_relay_ports = (uint16_t *)malloc(default_ports_count * sizeof(uint16_t));
|
||||||
|
|
||||||
for (int i = 0; i < DEFAULT_TCP_RELAY_PORTS_COUNT; ++i) {
|
for (size_t i = 0; i < default_ports_count; ++i) {
|
||||||
|
|
||||||
(*tcp_relay_ports)[*tcp_relay_port_count] = default_ports[i];
|
(*tcp_relay_ports)[*tcp_relay_port_count] = default_ports[i];
|
||||||
|
|
||||||
if ((*tcp_relay_ports)[*tcp_relay_port_count] < MIN_ALLOWED_PORT
|
if ((*tcp_relay_ports)[*tcp_relay_port_count] < MIN_ALLOWED_PORT
|
||||||
|| (*tcp_relay_ports)[*tcp_relay_port_count] > MAX_ALLOWED_PORT) {
|
|| (*tcp_relay_ports)[*tcp_relay_port_count] > MAX_ALLOWED_PORT) {
|
||||||
log_write(LOG_LEVEL_WARNING, "Port #%d: Invalid port: %u, should be in [%d, %d]. Skipping.\n", i,
|
log_write(LOG_LEVEL_WARNING, "Port #%zu: Invalid port: %u, should be in [%d, %d]. Skipping.\n", i,
|
||||||
(*tcp_relay_ports)[*tcp_relay_port_count], MIN_ALLOWED_PORT, MAX_ALLOWED_PORT);
|
(*tcp_relay_ports)[*tcp_relay_port_count], MIN_ALLOWED_PORT, MAX_ALLOWED_PORT);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -62,7 +73,7 @@ static void parse_tcp_relay_ports_config(config_t *cfg, uint16_t **tcp_relay_por
|
|||||||
++*tcp_relay_port_count;
|
++*tcp_relay_port_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the loop above skips invalid ports, so we adjust the allocated memory size
|
// The loop above skips invalid ports, so we adjust the allocated memory size
|
||||||
if ((*tcp_relay_port_count) > 0) {
|
if ((*tcp_relay_port_count) > 0) {
|
||||||
*tcp_relay_ports = (uint16_t *)realloc(*tcp_relay_ports, (*tcp_relay_port_count) * sizeof(uint16_t));
|
*tcp_relay_ports = (uint16_t *)realloc(*tcp_relay_ports, (*tcp_relay_port_count) * sizeof(uint16_t));
|
||||||
} else {
|
} else {
|
||||||
@@ -92,7 +103,7 @@ static void parse_tcp_relay_ports_config(config_t *cfg, uint16_t **tcp_relay_por
|
|||||||
config_setting_t *elem = config_setting_get_elem(ports_array, i);
|
config_setting_t *elem = config_setting_get_elem(ports_array, i);
|
||||||
|
|
||||||
if (elem == nullptr) {
|
if (elem == nullptr) {
|
||||||
// it's NULL if `ports_array` is not an array (we have that check earlier) or if `i` is out of range, which should not be
|
// It's NULL if `ports_array` is not an array (we have that check earlier) or if `i` is out of range, which should not be
|
||||||
log_write(LOG_LEVEL_WARNING, "Port #%d: Something went wrong while parsing the port. Stopping reading ports.\n", i);
|
log_write(LOG_LEVEL_WARNING, "Port #%d: Something went wrong while parsing the port. Stopping reading ports.\n", i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -114,7 +125,7 @@ static void parse_tcp_relay_ports_config(config_t *cfg, uint16_t **tcp_relay_por
|
|||||||
++*tcp_relay_port_count;
|
++*tcp_relay_port_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the loop above skips invalid ports, so we adjust the allocated memory size
|
// The loop above skips invalid ports, so we adjust the allocated memory size
|
||||||
if ((*tcp_relay_port_count) > 0) {
|
if ((*tcp_relay_port_count) > 0) {
|
||||||
*tcp_relay_ports = (uint16_t *)realloc(*tcp_relay_ports, (*tcp_relay_port_count) * sizeof(uint16_t));
|
*tcp_relay_ports = (uint16_t *)realloc(*tcp_relay_ports, (*tcp_relay_port_count) * sizeof(uint16_t));
|
||||||
} else {
|
} else {
|
||||||
@@ -254,7 +265,7 @@ int get_general_config(const char *cfg_file_path, char **pid_file_path, char **k
|
|||||||
|
|
||||||
log_write(LOG_LEVEL_INFO, "'%s': %s\n", NAME_ENABLE_TCP_RELAY, *enable_tcp_relay ? "true" : "false");
|
log_write(LOG_LEVEL_INFO, "'%s': %s\n", NAME_ENABLE_TCP_RELAY, *enable_tcp_relay ? "true" : "false");
|
||||||
|
|
||||||
// show info about tcp ports only if tcp relay is enabled
|
// Show info about tcp ports only if tcp relay is enabled
|
||||||
if (*enable_tcp_relay) {
|
if (*enable_tcp_relay) {
|
||||||
if (*tcp_relay_port_count == 0) {
|
if (*tcp_relay_port_count == 0) {
|
||||||
log_write(LOG_LEVEL_ERROR, "No TCP ports could be read.\n");
|
log_write(LOG_LEVEL_ERROR, "No TCP ports could be read.\n");
|
||||||
@@ -401,7 +412,7 @@ int bootstrap_from_config(const char *cfg_file_path, DHT *dht, int enable_ipv6)
|
|||||||
log_write(LOG_LEVEL_INFO, "Successfully added bootstrap node #%d: %s:%d %s\n", i, bs_address, bs_port, bs_public_key);
|
log_write(LOG_LEVEL_INFO, "Successfully added bootstrap node #%d: %s:%d %s\n", i, bs_address, bs_port, bs_public_key);
|
||||||
|
|
||||||
next:
|
next:
|
||||||
// config_setting_lookup_string() allocates string inside and doesn't allow us to free it direcly
|
// config_setting_lookup_string() allocates string inside and doesn't allow us to free it directly
|
||||||
// though it's freed when the element is removed, so we free it right away in order to keep memory
|
// though it's freed when the element is removed, so we free it right away in order to keep memory
|
||||||
// consumption minimal
|
// consumption minimal
|
||||||
config_setting_remove_elem(node_list, 0);
|
config_setting_remove_elem(node_list, 0);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/* SPDX-License-Identifier: GPL-3.0-or-later
|
/* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* Copyright © 2016-2018 The TokTok team.
|
* Copyright © 2016-2024 The TokTok team.
|
||||||
* Copyright © 2014-2016 Tox project.
|
* Copyright © 2014-2016 Tox project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ int get_general_config(const char *cfg_file_path, char **pid_file_path, char **k
|
|||||||
* Bootstraps off nodes listed in the config file.
|
* Bootstraps off nodes listed in the config file.
|
||||||
*
|
*
|
||||||
* @return 1 on success, some or no bootstrap nodes were added
|
* @return 1 on success, some or no bootstrap nodes were added
|
||||||
* 0 on failure, a error accured while parsing config file.
|
* 0 on failure, an error occurred while parsing the config file.
|
||||||
*/
|
*/
|
||||||
int bootstrap_from_config(const char *cfg_file_path, DHT *dht, int enable_ipv6);
|
int bootstrap_from_config(const char *cfg_file_path, DHT *dht, int enable_ipv6);
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/* SPDX-License-Identifier: GPL-3.0-or-later
|
/* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
* Copyright © 2016-2018 The TokTok team.
|
* Copyright © 2016-2023 The TokTok team.
|
||||||
* Copyright © 2014-2016 Tox project.
|
* Copyright © 2014-2016 Tox project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -19,8 +19,7 @@
|
|||||||
#define DEFAULT_ENABLE_IPV4_FALLBACK 1 // 1 - true, 0 - false
|
#define DEFAULT_ENABLE_IPV4_FALLBACK 1 // 1 - true, 0 - false
|
||||||
#define DEFAULT_ENABLE_LAN_DISCOVERY 1 // 1 - true, 0 - false
|
#define DEFAULT_ENABLE_LAN_DISCOVERY 1 // 1 - true, 0 - false
|
||||||
#define DEFAULT_ENABLE_TCP_RELAY 1 // 1 - true, 0 - false
|
#define DEFAULT_ENABLE_TCP_RELAY 1 // 1 - true, 0 - false
|
||||||
#define DEFAULT_TCP_RELAY_PORTS 443, 3389, 33445 // comma-separated list of ports. make sure to adjust DEFAULT_TCP_RELAY_PORTS_COUNT accordingly
|
#define DEFAULT_TCP_RELAY_PORTS 443, 3389, 33445 // comma-separated list of ports
|
||||||
#define DEFAULT_TCP_RELAY_PORTS_COUNT 3
|
|
||||||
#define DEFAULT_ENABLE_MOTD 1 // 1 - true, 0 - false
|
#define DEFAULT_ENABLE_MOTD 1 // 1 - true, 0 - false
|
||||||
#define DEFAULT_MOTD DAEMON_NAME
|
#define DEFAULT_MOTD DAEMON_NAME
|
||||||
|
|
||||||
|
@@ -3,6 +3,8 @@
|
|||||||
* Copyright © 2015-2016 Tox project.
|
* Copyright © 2015-2016 Tox project.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tox DHT bootstrap daemon.
|
* Tox DHT bootstrap daemon.
|
||||||
* Logging utility with support of multiple logging backends.
|
* Logging utility with support of multiple logging backends.
|
||||||
|
@@ -9,8 +9,11 @@
|
|||||||
*/
|
*/
|
||||||
#include "log_backend_stdout.h"
|
#include "log_backend_stdout.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
static FILE *log_backend_stdout_level(LOG_LEVEL level)
|
static FILE *log_backend_stdout_level(LOG_LEVEL level)
|
||||||
{
|
{
|
||||||
switch (level) {
|
switch (level) {
|
||||||
|
@@ -10,10 +10,12 @@
|
|||||||
#include "log_backend_syslog.h"
|
#include "log_backend_syslog.h"
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
#include "../../../toxcore/ccompat.h"
|
#include "../../../toxcore/ccompat.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
|
@@ -23,17 +23,24 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
// toxcore
|
// toxcore
|
||||||
#include "../../../toxcore/tox.h"
|
#include "../../../toxcore/DHT.h"
|
||||||
#include "../../../toxcore/LAN_discovery.h"
|
#include "../../../toxcore/LAN_discovery.h"
|
||||||
#include "../../../toxcore/TCP_server.h"
|
#include "../../../toxcore/TCP_server.h"
|
||||||
#include "../../../toxcore/announce.h"
|
#include "../../../toxcore/announce.h"
|
||||||
|
#include "../../../toxcore/ccompat.h"
|
||||||
|
#include "../../../toxcore/crypto_core.h"
|
||||||
|
#include "../../../toxcore/forwarding.h"
|
||||||
|
#include "../../../toxcore/group_announce.h"
|
||||||
#include "../../../toxcore/group_onion_announce.h"
|
#include "../../../toxcore/group_onion_announce.h"
|
||||||
#include "../../../toxcore/logger.h"
|
#include "../../../toxcore/logger.h"
|
||||||
|
#include "../../../toxcore/mem.h"
|
||||||
#include "../../../toxcore/mono_time.h"
|
#include "../../../toxcore/mono_time.h"
|
||||||
|
#include "../../../toxcore/network.h"
|
||||||
|
#include "../../../toxcore/onion.h"
|
||||||
#include "../../../toxcore/onion_announce.h"
|
#include "../../../toxcore/onion_announce.h"
|
||||||
#include "../../../toxcore/util.h"
|
|
||||||
|
|
||||||
// misc
|
// misc
|
||||||
#include "../../bootstrap_node_packets.h"
|
#include "../../bootstrap_node_packets.h"
|
||||||
@@ -57,7 +64,7 @@ static void sleep_milliseconds(uint32_t ms)
|
|||||||
// returns 1 on success
|
// returns 1 on success
|
||||||
// 0 on failure - no keys were read or stored
|
// 0 on failure - no keys were read or stored
|
||||||
|
|
||||||
static int manage_keys(DHT *dht, char *keys_file_path)
|
static int manage_keys(DHT *dht, const char *keys_file_path)
|
||||||
{
|
{
|
||||||
enum { KEYS_SIZE = CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_SECRET_KEY_SIZE };
|
enum { KEYS_SIZE = CRYPTO_PUBLIC_KEY_SIZE + CRYPTO_SECRET_KEY_SIZE };
|
||||||
uint8_t keys[KEYS_SIZE];
|
uint8_t keys[KEYS_SIZE];
|
||||||
@@ -116,7 +123,7 @@ static void print_public_key(const uint8_t *public_key)
|
|||||||
// Demonizes the process, appending PID to the PID file and closing file descriptors based on log backend
|
// Demonizes the process, appending PID to the PID file and closing file descriptors based on log backend
|
||||||
// Terminates the application if the daemonization fails.
|
// Terminates the application if the daemonization fails.
|
||||||
|
|
||||||
static void daemonize(LOG_BACKEND log_backend, char *pid_file_path)
|
static Cli_Status daemonize(LOG_BACKEND log_backend, char *pid_file_path)
|
||||||
{
|
{
|
||||||
// Check if the PID file exists
|
// Check if the PID file exists
|
||||||
FILE *pid_file = fopen(pid_file_path, "r");
|
FILE *pid_file = fopen(pid_file_path, "r");
|
||||||
@@ -131,7 +138,7 @@ static void daemonize(LOG_BACKEND log_backend, char *pid_file_path)
|
|||||||
|
|
||||||
if (pid_file == nullptr) {
|
if (pid_file == nullptr) {
|
||||||
log_write(LOG_LEVEL_ERROR, "Couldn't open the PID file for writing: %s. Exiting.\n", pid_file_path);
|
log_write(LOG_LEVEL_ERROR, "Couldn't open the PID file for writing: %s. Exiting.\n", pid_file_path);
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fork off from the parent process
|
// Fork off from the parent process
|
||||||
@@ -141,27 +148,27 @@ static void daemonize(LOG_BACKEND log_backend, char *pid_file_path)
|
|||||||
fprintf(pid_file, "%d", pid);
|
fprintf(pid_file, "%d", pid);
|
||||||
fclose(pid_file);
|
fclose(pid_file);
|
||||||
log_write(LOG_LEVEL_INFO, "Forked successfully: PID: %d.\n", pid);
|
log_write(LOG_LEVEL_INFO, "Forked successfully: PID: %d.\n", pid);
|
||||||
exit(0);
|
return CLI_STATUS_DONE;
|
||||||
} else {
|
} else {
|
||||||
fclose(pid_file);
|
fclose(pid_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pid < 0) {
|
if (pid < 0) {
|
||||||
log_write(LOG_LEVEL_ERROR, "Forking failed. Exiting.\n");
|
log_write(LOG_LEVEL_ERROR, "Forking failed. Exiting.\n");
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new SID for the child process
|
// Create a new SID for the child process
|
||||||
if (setsid() < 0) {
|
if (setsid() < 0) {
|
||||||
log_write(LOG_LEVEL_ERROR, "SID creation failure. Exiting.\n");
|
log_write(LOG_LEVEL_ERROR, "SID creation failure. Exiting.\n");
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Change the current working directory
|
// Change the current working directory
|
||||||
if ((chdir("/")) < 0) {
|
if ((chdir("/")) < 0) {
|
||||||
log_write(LOG_LEVEL_ERROR, "Couldn't change working directory to '/'. Exiting.\n");
|
log_write(LOG_LEVEL_ERROR, "Couldn't change working directory to '/'. Exiting.\n");
|
||||||
exit(1);
|
return CLI_STATUS_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go quiet
|
// Go quiet
|
||||||
@@ -170,6 +177,8 @@ static void daemonize(LOG_BACKEND log_backend, char *pid_file_path)
|
|||||||
close(STDIN_FILENO);
|
close(STDIN_FILENO);
|
||||||
close(STDERR_FILENO);
|
close(STDERR_FILENO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return CLI_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Logs toxcore logger message using our logger facility
|
// Logs toxcore logger message using our logger facility
|
||||||
@@ -212,11 +221,18 @@ int main(int argc, char *argv[])
|
|||||||
char *cfg_file_path = nullptr;
|
char *cfg_file_path = nullptr;
|
||||||
bool run_in_foreground = false;
|
bool run_in_foreground = false;
|
||||||
|
|
||||||
// choose backend for printing command line argument parsing output based on whether the daemon is being run from a terminal
|
// Choose backend for printing command line argument parsing output based on whether the daemon is being run from a terminal
|
||||||
LOG_BACKEND log_backend = isatty(STDOUT_FILENO) ? LOG_BACKEND_STDOUT : LOG_BACKEND_SYSLOG;
|
LOG_BACKEND log_backend = isatty(STDOUT_FILENO) ? LOG_BACKEND_STDOUT : LOG_BACKEND_SYSLOG;
|
||||||
|
|
||||||
log_open(log_backend);
|
log_open(log_backend);
|
||||||
handle_command_line_arguments(argc, argv, &cfg_file_path, &log_backend, &run_in_foreground);
|
switch (handle_command_line_arguments(argc, argv, &cfg_file_path, &log_backend, &run_in_foreground)) {
|
||||||
|
case CLI_STATUS_OK:
|
||||||
|
break;
|
||||||
|
case CLI_STATUS_DONE:
|
||||||
|
return 0;
|
||||||
|
case CLI_STATUS_ERROR:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
log_close();
|
log_close();
|
||||||
|
|
||||||
log_open(log_backend);
|
log_open(log_backend);
|
||||||
@@ -254,7 +270,14 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!run_in_foreground) {
|
if (!run_in_foreground) {
|
||||||
daemonize(log_backend, pid_file_path);
|
switch (daemonize(log_backend, pid_file_path)) {
|
||||||
|
case CLI_STATUS_OK:
|
||||||
|
break;
|
||||||
|
case CLI_STATUS_DONE:
|
||||||
|
return 0;
|
||||||
|
case CLI_STATUS_ERROR:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pid_file_path);
|
free(pid_file_path);
|
||||||
@@ -375,6 +398,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (!onion) {
|
if (!onion) {
|
||||||
log_write(LOG_LEVEL_ERROR, "Couldn't initialize Tox Onion. Exiting.\n");
|
log_write(LOG_LEVEL_ERROR, "Couldn't initialize Tox Onion. Exiting.\n");
|
||||||
|
kill_gca(group_announce);
|
||||||
kill_announcements(announce);
|
kill_announcements(announce);
|
||||||
kill_forwarding(forwarding);
|
kill_forwarding(forwarding);
|
||||||
kill_dht(dht);
|
kill_dht(dht);
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
|
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
|
||||||
|
|
||||||
package(features = ["-layering_check"])
|
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = ["websockify.go"],
|
srcs = ["websockify.go"],
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user