summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime/MullvadShadowsocksBridgeProvider.swift
blob: 459f6a090de319796713ca790e8a00a930e40be4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//
//  MullvadShadowsocksBridgeProvider.swift
//  MullvadRustRuntime
//
//  Created by Marco Nikic on 2025-03-24.
//  Copyright © 2025 Mullvad VPN AB. All rights reserved.
//

import MullvadTypes

public func initMullvadShadowsocksBridgeProvider(provider: SwiftShadowsocksBridgeProvider)
    -> SwiftShadowsocksLoaderWrapper
{
    let rawProvider = Unmanaged.passUnretained(provider).toOpaque()
    return init_swift_shadowsocks_loader_wrapper(rawProvider)
}

@_cdecl("swift_get_shadowsocks_bridges")
func getShadowsocksBridges(rawBridgeProvider: UnsafeMutableRawPointer) -> UnsafeRawPointer? {
    let bridgeProvider = Unmanaged<SwiftShadowsocksBridgeProvider>.fromOpaque(rawBridgeProvider).takeUnretainedValue()
    guard let bridge = bridgeProvider.bridge() else { return nil }
    let bridgeAddress = bridge.address.rawValue.map { $0 }
    return new_shadowsocks_access_method_setting(
        bridgeAddress,
        UInt(bridgeAddress.count),
        bridge.port,
        bridge.password,
        bridge.cipher
    )
}