update build hev5, openadapter for macos NE, code + config

This commit is contained in:
Macbook 2024-10-01 23:24:38 +07:00
parent 478ba6e189
commit ed7a78c75a
4 changed files with 24 additions and 17 deletions

View file

@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.25.0 FATAL_ERROR)
set(PROJECT AmneziaVPN) set(PROJECT AmneziaVPN)
project(${PROJECT}) project(${PROJECT})
#set(IOS 1) set(IOS 1)
set(APPLE 1) #set(APPLE 1)
set_property(GLOBAL PROPERTY USE_FOLDERS ON) set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER "Autogen") set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER "Autogen")

View file

@ -103,12 +103,12 @@ find_library(FW_LIBRESOLV libresolv.9.tbd)
# set_property(TARGET networkextension PROPERTY XCODE_EMBED_FRAMEWORKS set_property(TARGET networkextension PROPERTY XCODE_EMBED_FRAMEWORKS
# "${CMAKE_CURRENT_SOURCE_DIR}/3rd/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework" "${CMAKE_CURRENT_SOURCE_DIR}/3rd/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework"
# ) )
# set(CMAKE_XCODE_ATTRIBUTE_FRAMEWORK_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/3rd/OpenVPNAdapter/build/Release-iphoneos) set(CMAKE_XCODE_ATTRIBUTE_FRAMEWORK_SEARCH_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/3rd/OpenVPNAdapter/build/Release-macos)
# target_link_libraries("networkextension" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/3rd/OpenVPNAdapter/build/Release-iphoneos/OpenVPNAdapter.framework") target_link_libraries("networkextension" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/3rd/OpenVPNAdapter/build/Release-macos/OpenVPNAdapter.framework")
@ -182,4 +182,6 @@ target_include_directories(networkextension PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/ios/arm64/libwg-go.a) target_link_libraries(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/wireguard/ios/arm64/libwg-go.a)
target_link_libraries(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/xray/HevSocks5Tunnel.xcframework) target_link_libraries(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/xray/HevSocks5Tunnel.xcframework/macos-arm64_x86_64/libhev-socks5-tunnel.a)
target_include_directories(networkextension PRIVATE ${CLIENT_ROOT_DIR}/3rd-prebuilt/3rd-prebuilt/xray/HevSocks5Tunnel.xcframework/macos-arm64_x86_64/Headers)

View file

@ -19,3 +19,7 @@ bool key_from_hex(uint8_t key[WG_KEY_LEN], const char* hex);
bool key_eq(const uint8_t key1[WG_KEY_LEN], const uint8_t key2[WG_KEY_LEN]); bool key_eq(const uint8_t key1[WG_KEY_LEN], const uint8_t key2[WG_KEY_LEN]);
void write_msg_to_log(const char* tag, const char* msg); void write_msg_to_log(const char* tag, const char* msg);
// Khai báo hàm C để Swift có thể sử dụng
void hev_socks5_tunnel_quit(void);
void hev_socks5_tunnel_main(void);

View file

@ -1,4 +1,5 @@
import HevSocks5Tunnel import Darwin
import SystemConfiguration
public enum Socks5Tunnel { public enum Socks5Tunnel {
@ -6,23 +7,23 @@ public enum Socks5Tunnel {
var ctlInfo = ctl_info() var ctlInfo = ctl_info()
withUnsafeMutablePointer(to: &ctlInfo.ctl_name) { withUnsafeMutablePointer(to: &ctlInfo.ctl_name) {
$0.withMemoryRebound(to: CChar.self, capacity: MemoryLayout.size(ofValue: $0.pointee)) { $0.withMemoryRebound(to: CChar.self, capacity: MemoryLayout.size(ofValue: $0.pointee)) {
_ = strcpy($0, "com.apple.net.utun_control") _ = strcpy($0, "com.apple.net.utun_control") // strcpy comes from Darwin
} }
} }
for fd: Int32 in 0...1024 { for fd: Int32 in 0...1024 {
var addr = sockaddr_ctl() var addr = sockaddr_ctl()
var ret: Int32 = -1 var ret: Int32 = -1
var len = socklen_t(MemoryLayout.size(ofValue: addr)) var len = socklen_t(MemoryLayout.size(ofValue: addr)) // socklen_t comes from Darwin
withUnsafeMutablePointer(to: &addr) { withUnsafeMutablePointer(to: &addr) {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) { $0.withMemoryRebound(to: sockaddr.self, capacity: 1) { // sockaddr from Darwin
ret = getpeername(fd, $0, &len) ret = getpeername(fd, $0, &len) // getpeername from Darwin
} }
} }
if ret != 0 || addr.sc_family != AF_SYSTEM { if ret != 0 || addr.sc_family != AF_SYSTEM { // AF_SYSTEM from Darwin
continue continue
} }
if ctlInfo.ctl_id == 0 { if ctlInfo.ctl_id == 0 {
ret = ioctl(fd, CTLIOCGINFO, &ctlInfo) ret = ioctl(fd, CTLIOCGINFO, &ctlInfo) // ioctl from Darwin
if ret != 0 { if ret != 0 {
continue continue
} }
@ -38,12 +39,12 @@ public enum Socks5Tunnel {
guard let tunnelFileDescriptor = self.tunnelFileDescriptor else { guard let tunnelFileDescriptor = self.tunnelFileDescriptor else {
return nil return nil
} }
var buffer = [UInt8](repeating: 0, count: Int(IFNAMSIZ)) var buffer = [UInt8](repeating: 0, count: Int(IFNAMSIZ)) // IFNAMSIZ from Darwin
return buffer.withUnsafeMutableBufferPointer { mutableBufferPointer in return buffer.withUnsafeMutableBufferPointer { mutableBufferPointer in
guard let baseAddress = mutableBufferPointer.baseAddress else { guard let baseAddress = mutableBufferPointer.baseAddress else {
return nil return nil
} }
var ifnameSize = socklen_t(IFNAMSIZ) var ifnameSize = socklen_t(IFNAMSIZ) // socklen_t and IFNAMSIZ from Darwin
let result = getsockopt( let result = getsockopt(
tunnelFileDescriptor, tunnelFileDescriptor,
2 /* SYSPROTO_CONTROL */, 2 /* SYSPROTO_CONTROL */,