diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 354520d..f08c356 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,9 +43,9 @@ jobs: - { os: windows-latest, target: "windows", arch: "x64" } - { os: ubuntu-20.04, target: "linux", arch: "x64" } - { os: ubuntu-20.04, target: "linux", arch: "arm64" } - - { os: macos-latest, target: "macos", arch: "x64" } - - { os: macos-latest, target: "macos", arch: "arm64" } - node_ver: [ 16, 18, 19, 20, 21] + - { os: macos-13, target: "macos", arch: "x64" } + - { os: macos-14, target: "macos", arch: "arm64" } + node_ver: [ 18, 20, 21, 22, 23 ] fail-fast: false steps: @@ -57,6 +57,11 @@ jobs: submodules: 'recursive' # token: ${{ secrets.ZITI_CI_GH_TOKEN }} + - name: macOS tools + if: runner.os == 'macOS' + shell: bash + run: brew install autoconf autoconf-archive automake pkg-config libtool + - name: Setup PkgConfig (Windows) if: matrix.config.target == 'windows' run: | @@ -88,30 +93,34 @@ jobs: run: echo "date=$(date)" >> $GITHUB_OUTPUT - name: Install CMake/Ninja - uses: lukka/get-cmake@v3.27.6 + uses: lukka/get-cmake@v3.30.1 - name: Run VCPKG - uses: lukka/run-vcpkg@v10 + uses: lukka/run-vcpkg@v11 + # will use baseline from vcpkg.json with: - vcpkgGitCommitId: 'c8696863d371ab7f46e213d8f5ca923c4aef2a00' + # get baseline from vcpkg + vcpkgJsonGlob: './vcpkg.json' - - name: gcc version + - name: show versions run: | + echo ===== gcc ===== gcc --version - - name: cmake version - run: | + echo ===== cmake ===== cmake --version - - name: ninja version - run: | - ninja --version - - name: node version - run: | - node --version - - name: npm version - run: | - npm --version + echo "ninja: $(ninja --version)" + echo "node: $(node --version)" + echo "npm: $(npm --version)" + + - name: restore dependencies cache + uses: actions/cache/restore@v4 + id: cache-restore + with: + key: deps-${{ matrix.config.target }}-${{ matrix.config.arch }}-${{ hashFiles('./vcpkg.json') }} + path: './vcpkg/packages' - name: Build NodeJS-SDK + id: buildSDK run: | cd ${{ runner.workspace }}/${{ github.event.repository.name }} npm install @@ -121,11 +130,33 @@ jobs: TARGET_ARCH: ${{ matrix.config.arch }} BUILD_DATE: ${{ steps.date.outputs.date }} + - name: show build result + if: always() + run: echo build result ${{ steps.buildSDK.outcome }} + + - name: debug build failure + if: always() && steps.buildSDK.outcome == 'failure' + uses: actions/upload-artifact@v3 + with: + name: build-logs-${{ matrix.config.target }}-${{ matrix.config.arch }} + path: | + ./vcpkg/buildtrees/**/*.log + ./build/**/*log + - name: Hello test if: matrix.config.arch == 'x64' run: | node tests/hello.js + - name: save dependencies cache + uses: actions/cache/save@v4 + id: cache-save + # save deps even build has failed + if: always() + with: + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + path: './vcpkg/packages' + - name: upload artifacts uses: actions/upload-artifact@v3 with: diff --git a/.gitmodules b/.gitmodules index 7d004b6..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +0,0 @@ -[submodule "deps/ziti-sdk-c"] - path = deps/ziti-sdk-c - url = https://github.com/openziti/ziti-sdk-c - branch = main diff --git a/CMakeLists.txt b/CMakeLists.txt index 13f85b3..2f868e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,13 @@ endif (WIN32) file(GLOB SOURCE_FILES ./src/*.c ./src/.cpp) add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC}) -set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node") +set_target_properties(${PROJECT_NAME} PROPERTIES + PREFIX "" + SUFFIX ".node" + C_STANDARD 11 + POSITION_INDEPENDENT_CODE ON +) + target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include PRIVATE ${CMAKE_JS_INC} @@ -31,16 +37,6 @@ target_include_directories(${PROJECT_NAME} if (WIN32) target_compile_definitions(${PROJECT_NAME} PRIVATE WIN32_LEAN_AND_MEAN) - - # - # nodejs contains all needed libuv stuff - # trick TLSUV to link against it - add_library(libuv::uv SHARED IMPORTED) - set_target_properties(libuv::uv PROPERTIES - IMPORTED_LOCATION ${CMAKE_JS_LIB} - IMPORTED_IMPLIB ${CMAKE_JS_LIB} - ) - set(TLSUV_LIBUV_LIB libuv::uv) endif (WIN32) @@ -49,7 +45,7 @@ if(MSVC AND CMAKE_JS_NODELIB_DEF AND CMAKE_JS_NODELIB_TARGET) execute_process(COMMAND ${CMAKE_AR} /def:${CMAKE_JS_NODELIB_DEF} /out:${CMAKE_JS_NODELIB_TARGET} ${CMAKE_STATIC_LINKER_FLAGS}) endif() -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/deps/ziti-sdk-c) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/deps) target_link_libraries(${PROJECT_NAME} PRIVATE ziti ${CMAKE_JS_LIB}) if (WIN32) diff --git a/CMakePresets.json b/CMakePresets.json index 79c96df..3b1a634 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -54,7 +54,7 @@ "cacheVariables": { "VCPKG_TARGET_ARCHITECTURE": "arm64", "VCPKG_TARGET_TRIPLET": "arm64-osx", - "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/deps/ziti-sdk-c/toolchains/macOS-arm64.cmake" + "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/toolchains/macOS-arm64.cmake" } }, { @@ -66,7 +66,7 @@ "inherits": "ci-linux-x64", "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm64-linux", - "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/deps/ziti-sdk-c/toolchains/Linux-arm64.cmake" + "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/toolchains/Linux-arm64.cmake" } }, { @@ -74,7 +74,7 @@ "inherits": "ci-linux-x64", "cacheVariables": { "VCPKG_TARGET_TRIPLET": "arm-linux", - "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/deps/ziti-sdk-c/toolchains/Linux-arm.cmake" + "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": "${sourceDir}/toolchains/Linux-arm.cmake" } }, { diff --git a/README.md b/README.md index d395a6e..1c7a665 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,8 @@ The `@openziti/ziti-sdk-nodejs` module works with the following Node.js versions - v19.x - v20.x - v21.x +- v22.x +- v23.x The `@openziti/ziti-sdk-nodejs` module works with the following architectures: - amd64 diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt new file mode 100644 index 0000000..dbd55c8 --- /dev/null +++ b/deps/CMakeLists.txt @@ -0,0 +1,28 @@ +include(FetchContent) + +if (WIN32) + # nodejs contains all needed libuv stuff + # trick TLSUV to link against it + add_library(libuv::uv SHARED IMPORTED) + set_target_properties(libuv::uv PROPERTIES + IMPORTED_LOCATION ${CMAKE_JS_LIB} + IMPORTED_IMPLIB ${CMAKE_JS_LIB} + ) + set(TLSUV_LIBUV_LIB libuv::uv) + + # make sure on WIN32 tlsuv uses our definition for libuv + FetchContent_Declare(tlsuv + GIT_REPOSITORY https://github.com/openziti/tlsuv.git + GIT_TAG v0.33.1 + PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/tlsuv-libuv.patch + ) + FetchContent_MakeAvailable(tlsuv) +endif (WIN32) + +FetchContent_Declare(ziti + GIT_REPOSITORY https://github.com/openziti/ziti-sdk-c.git + GIT_TAG 1.3.5 +) +FetchContent_MakeAvailable(ziti) + + diff --git a/deps/tlsuv-libuv.patch b/deps/tlsuv-libuv.patch new file mode 100644 index 0000000..51d9f18 --- /dev/null +++ b/deps/tlsuv-libuv.patch @@ -0,0 +1,43 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f8a0c2f..a07ee13 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -84,21 +84,25 @@ endif() + include(FindPkgConfig) + find_package(PkgConfig) + +-find_package(libuv CONFIG QUIET) +-if (libuv_FOUND) +- # newer libuv versions (via VCPKG) have proper namespacing +- if (TARGET libuv::uv_a) +- set(TLSUV_LIBUV_LIB libuv::uv_a) +- elseif (TARGET uv_a) +- set(TLSUV_LIBUV_LIB uv_a) +- elseif (TARGET libuv::uv) +- set(TLSUV_LIBUV_LIB libuv::uv) ++if (TARGET libuv::uv) ++ set(TLSUV_LIBUV_LIB libuv::uv) ++else () ++ find_package(libuv CONFIG QUIET) ++ if (libuv_FOUND) ++ # newer libuv versions (via VCPKG) have proper namespacing ++ if (TARGET libuv::uv_a) ++ set(TLSUV_LIBUV_LIB libuv::uv_a) ++ elseif (TARGET uv_a) ++ set(TLSUV_LIBUV_LIB uv_a) ++ elseif (TARGET libuv::uv) ++ set(TLSUV_LIBUV_LIB libuv::uv) ++ else() ++ set(TLSUV_LIBUV_LIB uv) ++ endif() + else() +- set(TLSUV_LIBUV_LIB uv) ++ pkg_check_modules(libuv REQUIRED IMPORTED_TARGET libuv) ++ set(TLSUV_LIBUV_LIB PkgConfig::libuv) + endif() +-else() +- pkg_check_modules(libuv REQUIRED IMPORTED_TARGET libuv) +- set(TLSUV_LIBUV_LIB PkgConfig::libuv) + endif() + + add_library(tlsuv STATIC diff --git a/deps/ziti-sdk-c b/deps/ziti-sdk-c deleted file mode 160000 index d336721..0000000 --- a/deps/ziti-sdk-c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d336721a77f5ab4b50b031d592d581856524c6f3 diff --git a/package-lock.json b/package-lock.json index 258d1f4..f6c09b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@openziti/ziti-sdk-nodejs", - "version": "0.15.0", + "version": "0.18.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@openziti/ziti-sdk-nodejs", - "version": "0.15.0", + "version": "0.18.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index e2efabb..803e42c 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,10 @@ { "name": "@openziti/ziti-sdk-nodejs", "description": "A NodeJS-based SDK for delivering secure applications over a Ziti Network", - "version": "0.17.0", + "version": "0.18.0", "main": "./lib/ziti", "scripts": { - "build": "npm run build:init && npm run build:configure && npm run build:make", - "build:init": "git submodule update --init --recursive", + "build": "npm run build:configure && npm run build:make", "build:configure": "run-script-os", "build:configure:windows": "configure", "build:configure:linux:darwin": "./configure", diff --git a/src/Ziti_https_request.c b/src/Ziti_https_request.c index 63a5957..07ff3a0 100644 --- a/src/Ziti_https_request.c +++ b/src/Ziti_https_request.c @@ -54,7 +54,7 @@ struct ListMap* newListMap() { uv_mutex_t client_pool_lock; -bool listMapInsert(struct ListMap* collection, char* key, void* value) { +bool listMapInsert(struct ListMap* collection, const char* key, void* value) { if (collection->count == listMapCapacity) { ZITI_NODEJS_LOG(ERROR, "collection->count already at capacity [%d], insert FAIL", listMapCapacity); @@ -214,7 +214,7 @@ static void allocate_client(uv_work_t* req) { } -struct hostname_port* getHostnamePortForService(char* key) { +struct hostname_port* getHostnamePortForService(const char* key) { ZITI_NODEJS_LOG(DEBUG, "getHostnamePortForService() entered, key: %s", key); @@ -239,7 +239,7 @@ struct hostname_port* getHostnamePortForService(char* key) { /** * */ -void track_service_to_hostname(char* service_name, char* hostname, int port) { +void track_service_to_hostname(const char* service_name, char* hostname, int port) { ZITI_NODEJS_LOG(DEBUG, "track_service_to_hostname() entered, service_name: %s hostname: %s port: %d", service_name, hostname, port); @@ -360,7 +360,7 @@ static void CallJs_on_resp_body(napi_env env, napi_value js_cb, void* context, v /** * */ -void on_resp_body(tlsuv_http_req_t *req, const char *body, ssize_t len) { +void on_resp_body(tlsuv_http_req_t *req, char *body, ssize_t len) { // ZITI_NODEJS_LOG(DEBUG, "len: %zd, body is: \n>>>>>%s<<<<<", len, body); ZITI_NODEJS_LOG(DEBUG, "body: %p", body); diff --git a/src/Ziti_https_request_data.c b/src/Ziti_https_request_data.c index fd75a43..71a0e3b 100644 --- a/src/Ziti_https_request_data.c +++ b/src/Ziti_https_request_data.c @@ -103,7 +103,7 @@ static void CallJs_on_req_body(napi_env env, napi_value js_cb, void* context, vo /** * */ -void on_req_body(tlsuv_http_req_t *req, const char *body, ssize_t status) { +void on_req_body(tlsuv_http_req_t *req, char *body, ssize_t status) { ZITI_NODEJS_LOG(DEBUG, "status: %zd, body: %p", status, body); diff --git a/src/build_config.h.in b/src/build_config.h.in index d392af4..e8dcf12 100644 --- a/src/build_config.h.in +++ b/src/build_config.h.in @@ -1,6 +1,6 @@ -#define ZITI_VERSION @ZITI_VERSION@ -#define ZITI_COMMIT @ZITI_COMMIT@ -#define ZITI_BRANCH @ZITI_BRANCH@ +#define ZITI_NODEJS_VERSION @ZITI_VERSION@ +#define ZITI_NODEJS_COMMIT @ZITI_COMMIT@ +#define ZITI_NODEJS_BRANCH @ZITI_BRANCH@ #define ZITI_OS @CMAKE_SYSTEM_NAME@ #define ZITI_ARCH @CMAKE_SYSTEM_PROCESSOR@ #define BUILD_DATE @BUILD_DATE@ \ No newline at end of file diff --git a/src/utils.c b/src/utils.c index 5ff73f4..d12ed2b 100644 --- a/src/utils.c +++ b/src/utils.c @@ -47,10 +47,10 @@ limitations under the License. const char* ziti_nodejs_get_version(int verbose) { if (verbose) { - return "\n\tVersion:\t" to_str(ZITI_VERSION) + return "\n\tVersion:\t" to_str(ZITI_NODEJS_VERSION) "\n\tBuild Date:\t" to_str(BUILD_DATE) - "\n\tGit Branch:\t" to_str(ZITI_BRANCH) - "\n\tGit SHA:\t" to_str(ZITI_COMMIT) + "\n\tGit Branch:\t" to_str(ZITI_NODEJS_BRANCH) + "\n\tGit SHA:\t" to_str(ZITI_NODEJS_COMMIT) "\n\tOS: \t" to_str(ZITI_OS) "\n\tArch: \t" to_str(ZITI_ARCH) "\n\t"; diff --git a/src/utils.h b/src/utils.h index 9d12694..05b1280 100644 --- a/src/utils.h +++ b/src/utils.h @@ -64,7 +64,7 @@ extern FILE *ziti_nodejs_debug_out; // TEMP: skip logging on windows #ifdef WIN32 -#define ZITI_NODEJS_LOG +#define ZITI_NODEJS_LOG(...) #else #define ZITI_NODEJS_LOG(level, fmt, ...) do { \ if (level <= ziti_nodejs_debug_level) {\ diff --git a/src/ziti-nodejs.h b/src/ziti-nodejs.h index 1f43f26..339c64a 100644 --- a/src/ziti-nodejs.h +++ b/src/ziti-nodejs.h @@ -228,7 +228,7 @@ extern void expose_ziti_websocket_write(napi_env env, napi_value exports); // extern int tlsuv_websocket_init_with_src (uv_loop_t *loop, tlsuv_websocket_t *ws, tlsuv_src_t *src); -extern void track_service_to_hostname(char* service_name, char* hostname, int port); +extern void track_service_to_hostname(const char* service_name, char* hostname, int port); #ifdef __cplusplus } diff --git a/src/ziti_enroll.c b/src/ziti_enroll.c index e068f1f..ba07d25 100644 --- a/src/ziti_enroll.c +++ b/src/ziti_enroll.c @@ -106,7 +106,7 @@ static void CallJs_on_enroll(napi_env env, napi_value js_cb, void* context, void /** * */ -void on_ziti_enroll(ziti_config *cfg, int status, char *err, void *ctx) { +void on_ziti_enroll(const ziti_config *cfg, int status, const char *err, void *ctx) { napi_status nstatus; ZITI_NODEJS_LOG(DEBUG, "\nstatus: %d, \nerr: %s,\nctx: %p", status, err, ctx); @@ -217,7 +217,7 @@ napi_value _ziti_enroll(napi_env env, const napi_callback_info info) { // Initiate the enrollment ziti_enroll_opts opts = {0}; - opts.jwt = JWTFileName; + opts.token = JWTFileName; int rc = ziti_enroll(&opts, thread_loop, on_ziti_enroll, addon_data); status = napi_create_int32(env, rc, &jsRetval); diff --git a/src/ziti_init.c b/src/ziti_init.c index c990f18..02ac847 100644 --- a/src/ziti_init.c +++ b/src/ziti_init.c @@ -33,9 +33,9 @@ static const char *ALL_CONFIG_TYPES[] = { #define ZROK_PROXY_CFG_V1 "zrok.proxy.v1" #define ZROK_PROXY_CFG_V1_MODEL(XX, ...) \ -XX(auth_scheme, string, none, auth_scheme, __VA_ARGS__) \ -XX(basic_auth, string, none, basic_auth, __VA_ARGS__) \ -XX(oauth, string, none, oauth, __VA_ARGS__) +XX(auth_scheme, model_string, none, auth_scheme, __VA_ARGS__) \ +XX(basic_auth, model_string, none, basic_auth, __VA_ARGS__) \ +XX(oauth, model_string, none, oauth, __VA_ARGS__) DECLARE_MODEL(zrok_proxy_cfg_v1, ZROK_PROXY_CFG_V1_MODEL) /** @@ -118,46 +118,46 @@ static void on_ziti_event(ziti_context _ztx, const ziti_event_t *event) { switch (event->type) { case ZitiContextEvent: - if (event->event.ctx.ctrl_status == ZITI_OK) { + if (event->ctx.ctrl_status == ZITI_OK) { const ziti_version *ctrl_ver = ziti_get_controller_version(_ztx); const ziti_identity *proxy_id = ziti_get_identity(_ztx); ZITI_NODEJS_LOG(INFO, "controller version = %s(%s)[%s]", ctrl_ver->version, ctrl_ver->revision, ctrl_ver->build_date); ZITI_NODEJS_LOG(INFO, "identity = <%s>[%s]@%s", proxy_id->name, proxy_id->id, ziti_get_controller(_ztx)); } else { - ZITI_NODEJS_LOG(ERROR, "Failed to connect to controller: %s", event->event.ctx.err); + ZITI_NODEJS_LOG(ERROR, "Failed to connect to controller: %s", event->ctx.err); } - addon_data->zitiContextEventStatus = event->event.ctx.ctrl_status; + addon_data->zitiContextEventStatus = event->ctx.ctrl_status; break; case ZitiServiceEvent: - if (event->event.service.removed != NULL) { - for (ziti_service **sp = event->event.service.removed; *sp != NULL; sp++) { + if (event->service.removed != NULL) { + for (ziti_service **sp = event->service.removed; *sp != NULL; sp++) { // service_check_cb(ztx, *sp, ZITI_SERVICE_UNAVAILABLE, app_ctx); ZITI_NODEJS_LOG(INFO, "Service removed [%s]", (*sp)->name); } } - if (event->event.service.added != NULL) { - for (ziti_service **sp = event->event.service.added; *sp != NULL; sp++) { + if (event->service.added != NULL) { + for (ziti_service **sp = event->service.added; *sp != NULL; sp++) { // service_check_cb(ztx, *sp, ZITI_OK, app_ctx); ZITI_NODEJS_LOG(INFO, "Service added [%s]", (*sp)->name); } } - if (event->event.service.changed != NULL) { - for (ziti_service **sp = event->event.service.changed; *sp != NULL; sp++) { + if (event->service.changed != NULL) { + for (ziti_service **sp = event->service.changed; *sp != NULL; sp++) { // service_check_cb(ztx, *sp, ZITI_OK, app_ctx); ZITI_NODEJS_LOG(INFO, "Service changed [%s]", (*sp)->name); } } // - for (int i = 0; event->event.service.added && event->event.service.added[i] != NULL; i++) { + for (int i = 0; event->service.added && event->service.added[i] != NULL; i++) { - ziti_service *s = event->event.service.added[i]; + ziti_service *s = event->service.added[i]; ziti_intercept_cfg_v1 *intercept = alloc_ziti_intercept_cfg_v1(); ziti_client_cfg_v1 clt_cfg = { .hostname = {0}, @@ -194,9 +194,9 @@ static void on_ziti_event(ziti_context _ztx, const ziti_event_t *event) { free(intercept); } - for (int i = 0; event->event.service.changed && event->event.service.changed[i] != NULL; i++) { + for (int i = 0; event->service.changed && event->service.changed[i] != NULL; i++) { - ziti_service *s = event->event.service.changed[i]; + ziti_service *s = event->service.changed[i]; ziti_intercept_cfg_v1 *intercept = alloc_ziti_intercept_cfg_v1(); ziti_client_cfg_v1 clt_cfg = { .hostname = {0}, @@ -238,21 +238,21 @@ static void on_ziti_event(ziti_context _ztx, const ziti_event_t *event) { break; case ZitiRouterEvent: - switch (event->event.router.status){ + switch (event->router.status){ case EdgeRouterConnected: - ZITI_NODEJS_LOG(INFO, "ziti connected to edge router %s\nversion = %s", event->event.router.name, event->event.router.version); + ZITI_NODEJS_LOG(INFO, "ziti connected to edge router %s\nversion = %s", event->router.name, event->router.version); break; case EdgeRouterDisconnected: - ZITI_NODEJS_LOG(INFO, "ziti disconnected from edge router %s", event->event.router.name); + ZITI_NODEJS_LOG(INFO, "ziti disconnected from edge router %s", event->router.name); break; case EdgeRouterRemoved: - ZITI_NODEJS_LOG(INFO, "ziti removed edge router %s", event->event.router.name); + ZITI_NODEJS_LOG(INFO, "ziti removed edge router %s", event->router.name); break; case EdgeRouterUnavailable: - ZITI_NODEJS_LOG(INFO, "edge router %s is not available", event->event.router.name); + ZITI_NODEJS_LOG(INFO, "edge router %s is not available", event->router.name); break; case EdgeRouterAdded: - ZITI_NODEJS_LOG(INFO, "edge router %s was added", event->event.router.name); + ZITI_NODEJS_LOG(INFO, "edge router %s was added", event->router.name); break; } diff --git a/src/ziti_listen.c b/src/ziti_listen.c index 35a6593..2dabf46 100644 --- a/src/ziti_listen.c +++ b/src/ziti_listen.c @@ -473,7 +473,7 @@ static void CallJs_on_listen_client(napi_env env, napi_value js_cb, void* contex /** * */ -void on_listen_client(ziti_connection serv, ziti_connection client, int status, ziti_client_ctx *clt_ctx) { +void on_listen_client(ziti_connection serv, ziti_connection client, int status, const ziti_client_ctx *clt_ctx) { ZITI_NODEJS_LOG(INFO, "on_listen_client: client: %p, status: %d, clt_ctx: %p", client, status, clt_ctx); diff --git a/src/ziti_service_available.c b/src/ziti_service_available.c index 6d11543..e0113fa 100644 --- a/src/ziti_service_available.c +++ b/src/ziti_service_available.c @@ -103,7 +103,7 @@ static void CallJs_on_service_available(napi_env env, napi_value js_cb, void* co /** * */ -static void on_service_available(ziti_context nf_ctx, ziti_service* service, int status, void *ctx) { +static void on_service_available(ziti_context nf_ctx, const ziti_service* service, int status, void *ctx) { napi_status nstatus; AddonData* addon_data = (AddonData*)ctx; diff --git a/toolchains/Linux-arm.cmake b/toolchains/Linux-arm.cmake new file mode 100644 index 0000000..1934d7c --- /dev/null +++ b/toolchains/Linux-arm.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) + +set(triple arm-linux-gnueabihf) + +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/toolchains/Linux-arm64.cmake b/toolchains/Linux-arm64.cmake new file mode 100644 index 0000000..3379863 --- /dev/null +++ b/toolchains/Linux-arm64.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm64) + +set(triple aarch64-linux-gnu) + +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/toolchains/Windows-arm64-msvc.cmake b/toolchains/Windows-arm64-msvc.cmake new file mode 100644 index 0000000..c8efeb8 --- /dev/null +++ b/toolchains/Windows-arm64-msvc.cmake @@ -0,0 +1,8 @@ +# cross-compile for windows/arm64 on windows/x64 host with visual studio +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR ARM64) +# setting CMAKE_GENERATOR_PLATFORM should be sufficient if you believe the doc, it results in build files +# that cause msbuild to that the ZERO_CHECK project doesn't contain the "Debug|x64" platform/config +# combination. running cmake with '-A ARCH64' avoids the msbuild failure. +set(CMAKE_GENERATOR_PLATFORM ARM64) +set(CMAKE_C_COMPILER cl.exe) \ No newline at end of file diff --git a/toolchains/Windows-x86.cmake b/toolchains/Windows-x86.cmake new file mode 100644 index 0000000..5c7df82 --- /dev/null +++ b/toolchains/Windows-x86.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86) + +set(triple i686-w64-mingw32) + +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/toolchains/Windows-x86_64.cmake b/toolchains/Windows-x86_64.cmake new file mode 100644 index 0000000..b341d57 --- /dev/null +++ b/toolchains/Windows-x86_64.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(triple x86_64-w64-mingw32) + +set(CMAKE_C_COMPILER ${triple}-gcc) +set(CMAKE_CXX_COMPILER ${triple}-g++) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/toolchains/linux-embedded.cmake b/toolchains/linux-embedded.cmake new file mode 100644 index 0000000..095abe2 --- /dev/null +++ b/toolchains/linux-embedded.cmake @@ -0,0 +1,17 @@ +if (NOT DEFINED ENV{TOOLCHAIN}) + message(FATAL_ERROR "TOOLCHAIN environment variable is not set") +endif () + +set(triple mips-openwrt-linux) + +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR mips) + +set(CMAKE_SYSROOT $ENV{TOOLCHAIN}/) +set(CMAKE_C_COMPILER $ENV{TOOLCHAIN}/bin/${triple}-gcc) +set(CMAKE_CXX_COMPILER $ENV{TOOLCHAIN}/bin/${triple}-g++) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/toolchains/macOS-arm64.cmake b/toolchains/macOS-arm64.cmake new file mode 100644 index 0000000..a7d22ff --- /dev/null +++ b/toolchains/macOS-arm64.cmake @@ -0,0 +1,17 @@ +# build-macOS-arm64 + +if (NOT (CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") AND + NOT(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64") ) + set(CMAKE_SYSTEM_NAME Darwin) + set(CMAKE_SYSTEM_PROCESSOR arm64) +endif () + +set(ZITI_BUILD_TESTS OFF CACHE BOOL "" FORCE) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch arm64") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch arm64") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/toolchains/macOS-x86_64.cmake b/toolchains/macOS-x86_64.cmake new file mode 100644 index 0000000..25ac447 --- /dev/null +++ b/toolchains/macOS-x86_64.cmake @@ -0,0 +1,23 @@ +# build-macOS-x86_64 + +set(CMAKE_SYSTEM_NAME Darwin) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +set(ZITI_BUILD_TESTS OFF CACHE BOOL "" FORCE) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch x86_64") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch x86_64") + +# for libsodium +set(triple x86_64-apple-macos11) +execute_process(COMMAND /usr/bin/xcrun -sdk macosx --show-sdk-path + OUTPUT_VARIABLE CMAKE_OSX_SYSROOT + OUTPUT_STRIP_TRAILING_WHITESPACE) + +set(ENV{CFLAGS} "-arch x86_64 -isysroot ${CMAKE_OSX_SYSROOT}") +set(ENV{LDFLAGS} "-arch x86_64 -isysroot ${CMAKE_OSX_SYSROOT}") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/vcpkg.json b/vcpkg.json index de68e6b..0c843ba 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -16,5 +16,5 @@ ], "features": { }, - "builtin-baseline": "c8696863d371ab7f46e213d8f5ca923c4aef2a00" + "builtin-baseline": "b322364f06308bdd24823f9d8f03fe0cc86fd46f" } \ No newline at end of file