Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion deps/ziti-tunnel-sdk-c
Submodule ziti-tunnel-sdk-c updated 33 files
+7 −7 .github/actions/openziti-tunnel-build-action/action.yml
+1 −2 .github/actions/openziti-tunnel-build-action/gh-release/Dockerfile
+19 −15 .github/actions/openziti-tunnel-build-action/gh-release/entrypoint.sh
+58 −0 .github/actions/openziti-tunnel-build-action/redhat-10/Dockerfile
+72 −0 .github/actions/openziti-tunnel-build-action/redhat-10/entrypoint.sh
+1 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/json-c/portfile.cmake
+4 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/json-c/vcpkg.json
+1 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/openssl/portfile.cmake
+4 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/openssl/vcpkg.json
+1 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/protobuf-c/portfile.cmake
+4 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/protobuf-c/vcpkg.json
+1 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/zlib/portfile.cmake
+4 −0 .github/actions/openziti-tunnel-build-action/redhat-10/vcpkg-overlays/zlib/vcpkg.json
+2 −1 .github/actions/openziti-tunnel-build-action/redhat-8/Dockerfile
+10 −6 .github/actions/openziti-tunnel-build-action/redhat-8/entrypoint.sh
+6 −5 .github/actions/openziti-tunnel-build-action/redhat-9/Dockerfile
+10 −6 .github/actions/openziti-tunnel-build-action/redhat-9/entrypoint.sh
+2 −2 .github/actions/openziti-tunnel-build-action/ubuntu-20.04/Dockerfile
+10 −6 .github/actions/openziti-tunnel-build-action/ubuntu-20.04/entrypoint.sh
+2 −2 .github/actions/openziti-tunnel-build-action/ubuntu-22.04/Dockerfile
+10 −6 .github/actions/openziti-tunnel-build-action/ubuntu-22.04/entrypoint.sh
+5 −0 .github/cpack-matrix.yml
+4 −0 .github/workflows/cmake.yml
+58 −33 .github/workflows/cpack.yml
+13 −1 .github/workflows/promote-downstreams.yml
+1 −1 .github/workflows/publish-container-images.yml
+0 −24 .github/workflows/release.yml
+2 −1 .gitignore
+18 −4 CMakeLists.txt
+16 −2 CMakePresets.json
+1 −1 docker/ziti-edge-tunnel.Dockerfile
+12 −15 programs/ziti-edge-tunnel/ziti-edge-tunnel.c
+1 −1 vcpkg.json
53 changes: 49 additions & 4 deletions lib/ZitiEnroller.swift
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,13 @@ import CZitiPrivate
var jwtFile_c:UnsafeMutablePointer<Int8>?
var privatePem_c:UnsafeMutablePointer<Int8>?
var url_c:UnsafeMutablePointer<Int8>?
var token_c:UnsafeMutablePointer<Int8>?

deinit {
jwtFile_c?.deallocate()
privatePem_c?.deallocate()
url_c?.deallocate()
token_c?.deallocate()
}
}

Expand Down Expand Up @@ -180,23 +182,66 @@ import CZitiPrivate
}
}

static func enroll(withLoop loop:UnsafeMutablePointer<uv_loop_t>?,
token:String,
cb:@escaping EnrollmentCallback) {
let enrollData = UnsafeMutablePointer<EnrollmentRequestData>.allocate(capacity: 1)
enrollData.initialize(to: EnrollmentRequestData())
enrollData.pointee.enrollmentCallback = cb
enrollData.pointee.token_c = UnsafeMutablePointer<Int8>.allocate(capacity: token.count + 1)
enrollData.pointee.token_c!.initialize(from: token.cString(using: .utf8)!, count: token.count + 1)


var enroll_opts = ziti_enroll_opts(url: nil, token: enrollData.pointee.token_c, key: nil,
cert: nil, name: nil, use_keychain: false)
let status = ziti_enroll(&enroll_opts, loop, ZitiEnroller.on_enroll, enrollData)
guard status == ZITI_OK else {
let errStr = String(cString: ziti_errorstr(status))
log.error(errStr)
cb(nil, nil, ZitiError(errStr, errorCode: Int(status)))
return
}
}

struct NetworkJwtsResponse : Codable {
struct Data: Codable {
var name:String?
var token:String?
}

var data:[NetworkJwtsResponse.Data]?
}

@objc public static func enroll(url:String, cb:@escaping EnrollmentCallback) {
// test the connection to avoid assertion in ziti-sdk-c/libuv
guard let ctrlUrl = URL(string: url) else {
// also get /network-jwts so we can use apple's ca store to trust the provided url (tlsuv/openssl does not load trusted certs on iOS).
// if the response includes a token we use that for the enrollment instead of the url.
guard let jwtUrl = URL(string: url + (url.hasSuffix("/") ? "" : "/") + "/network-jwts") else {
let zErr = ZitiError("cannot parse \(url) as URL")
log.error(String(describing: zErr), function:"enroll()")
cb(nil, nil, zErr)
return
}
let (data, response, error) = URLSession.shared.syncRequest(with: ctrlUrl)

let (data, response, error) = URLSession.shared.syncRequest(with: jwtUrl)
if let error = error {
let zErr = ZitiError("connection to \(url) failed: \(error.localizedDescription)")
log.error(String(describing: zErr), function:"enroll()")
cb(nil, nil, zErr)
return
}

self.enroll(withLoop: ZitiEnroller.loop, controllerURL: url, cb: cb)

guard let httpResp = response as? HTTPURLResponse, (200...299).contains(httpResp.statusCode), let data = data,
let decodedResp = try? JSONDecoder().decode(NetworkJwtsResponse.self, from: data),
let token = decodedResp.data?.first?.token else {
let zErr = ZitiError("invalid response from \(jwtUrl)")
log.error(String(describing: zErr), function:"enroll()")
cb(nil, nil, zErr)
return
}

log.debug("fetched token \(token) from \(jwtUrl)")
self.enroll(withLoop: ZitiEnroller.loop, token: token, cb: cb)

let runStatus = uv_run(ZitiEnroller.loop, UV_RUN_DEFAULT)
guard runStatus == 0 else {
Expand Down
Loading