diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 99c662c3..10a91dcd 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -52,7 +52,6 @@ endif() qt_standard_project_setup() qt_add_executable(${PROJECT} MANUAL_FINALIZATION) -# TODO error in there if(WIN32 OR (APPLE AND NOT IOS AND NOT MACOS_NE) OR (LINUX AND NOT ANDROID)) message("Run this block when MACOS_NE is not defined or set to FALSE") qt_add_repc_replicas(${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../ipc/ipc_interface.rep) diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/128.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/128.png index b7aa8e4b..e355ae48 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/128.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/128.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/128@2x.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/128@2x.png index 7d734b13..89743eca 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/128@2x.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/128@2x.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/16.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/16.png index 20b14b56..ac8a9346 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/16.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/16.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/16@2x.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/16@2x.png index b5089841..7e8391e3 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/16@2x.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/16@2x.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/256.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/256.png index 7d734b13..89743eca 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/256.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/256.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/256@2x.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/256@2x.png index 47adc67b..f02ea1b0 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/256@2x.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/256@2x.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/32.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/32.png index b5089841..7e8391e3 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/32.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/32.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/32@2x.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/32@2x.png index 9c3d8361..3f13a4c7 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/32@2x.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/32@2x.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/512.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/512.png index 47adc67b..f02ea1b0 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/512.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/512.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/512@2x.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/512@2x.png index 15645b43..2f129f12 100644 Binary files a/client/macos/app/Images.xcassets/AppIcon.appiconset/512@2x.png and b/client/macos/app/Images.xcassets/AppIcon.appiconset/512@2x.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/64.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/64.png new file mode 100644 index 00000000..3f13a4c7 Binary files /dev/null and b/client/macos/app/Images.xcassets/AppIcon.appiconset/64.png differ diff --git a/client/macos/app/Images.xcassets/AppIcon.appiconset/64@2x.png b/client/macos/app/Images.xcassets/AppIcon.appiconset/64@2x.png new file mode 100644 index 00000000..e355ae48 Binary files /dev/null and b/client/macos/app/Images.xcassets/AppIcon.appiconset/64@2x.png differ diff --git a/client/platforms/ios/PacketTunnelProvider+WireGuard.swift b/client/platforms/ios/PacketTunnelProvider+WireGuard.swift index 18200c7f..6e073df9 100644 --- a/client/platforms/ios/PacketTunnelProvider+WireGuard.swift +++ b/client/platforms/ios/PacketTunnelProvider+WireGuard.swift @@ -111,10 +111,20 @@ extension PacketTunnelProvider { settingsDictionary[pair[0]] = pair[1] } } + + let lastHandshakeString = settingsDictionary["last_handshake_time_sec"] + let lastHandshake: Int64 + + if let lastHandshakeValue = lastHandshakeString, let handshakeValue = Int64(lastHandshakeValue) { + lastHandshake = handshakeValue + } else { + lastHandshake = -2 // Trả về lỗi nếu không có giá trị last_handshake_time_sec + } let response: [String: Any] = [ "rx_bytes": settingsDictionary["rx_bytes"] ?? "0", - "tx_bytes": settingsDictionary["tx_bytes"] ?? "0" + "tx_bytes": settingsDictionary["tx_bytes"] ?? "0", + "last_handshake_time_sec": lastHandshake ] completionHandler(try? JSONSerialization.data(withJSONObject: response, options: [])) diff --git a/client/platforms/ios/ios_controller.mm b/client/platforms/ios/ios_controller.mm index d66c5239..8ba9aaac 100644 --- a/client/platforms/ios/ios_controller.mm +++ b/client/platforms/ios/ios_controller.mm @@ -251,6 +251,19 @@ void IosController::checkStatus() sendVpnExtensionMessage(message, [&](NSDictionary* response){ uint64_t txBytes = [response[@"tx_bytes"] intValue]; uint64_t rxBytes = [response[@"rx_bytes"] intValue]; + + uint64_t last_handshake_time_sec = 0; + if (response[@"last_handshake_time_sec"] && ![response[@"last_handshake_time_sec"] isKindOfClass:[NSNull class]]) { + last_handshake_time_sec = [response[@"last_handshake_time_sec"] intValue]; + } else { + qDebug() << "Key last_handshake_time_sec is missing or null"; + } + + if (last_handshake_time_sec < 0) { + disconnectVpn(); + qDebug() << "Invalid handshake time, disconnecting VPN."; + } + emit bytesChanged(rxBytes - m_rxBytes, txBytes - m_txBytes); m_rxBytes = rxBytes; m_txBytes = txBytes;