mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-28 07:57:38 +01:00
fix: 26.4 patch, add correct dest
- update minimuxer
This commit is contained in:
2
Dependencies/minimuxer
vendored
2
Dependencies/minimuxer
vendored
Submodule Dependencies/minimuxer updated: 6842a21952...9ceaaf01ea
@@ -30,21 +30,24 @@ fileprivate func socktouint(_ sock: inout sockaddr) -> UInt32 {
|
|||||||
return addr.s_addr.bigEndian
|
return addr.s_addr.bigEndian
|
||||||
}
|
}
|
||||||
|
|
||||||
struct NetInfo: Hashable, CustomStringConvertible {
|
public struct NetInfo: Hashable, CustomStringConvertible {
|
||||||
let name: String
|
public let name: String
|
||||||
|
public let hostIP: String
|
||||||
let hostIP: String
|
public let destIP: String
|
||||||
let maskIP: String
|
public let maskIP: String
|
||||||
|
|
||||||
private let host: UInt32
|
private let host: UInt32
|
||||||
|
private let dest: UInt32
|
||||||
private let mask: UInt32
|
private let mask: UInt32
|
||||||
|
|
||||||
init(name: String, host: UInt32, mask: UInt32) {
|
init(name: String, host: UInt32, dest: UInt32, mask: UInt32) {
|
||||||
self.name = name
|
self.name = name
|
||||||
self.host = host
|
self.host = host
|
||||||
|
self.dest = dest
|
||||||
self.mask = mask
|
self.mask = mask
|
||||||
self.hostIP = uti(host) ?? "nil"
|
self.hostIP = uti(host) ?? "10.7.0.0"
|
||||||
self.maskIP = uti(mask) ?? "nil"
|
self.destIP = uti(dest) ?? "10.7.0.1"
|
||||||
|
self.maskIP = uti(mask) ?? "255.255.255.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
init?(_ ifaddr: ifaddrs) {
|
init?(_ ifaddr: ifaddrs) {
|
||||||
@@ -53,33 +56,37 @@ struct NetInfo: Hashable, CustomStringConvertible {
|
|||||||
else { return nil }
|
else { return nil }
|
||||||
|
|
||||||
let host = socktouint(&ifaddr.ifa_addr.pointee)
|
let host = socktouint(&ifaddr.ifa_addr.pointee)
|
||||||
|
let dest = socktouint(&ifaddr.ifa_dstaddr.pointee)
|
||||||
let mask = socktouint(&ifaddr.ifa_netmask.pointee)
|
let mask = socktouint(&ifaddr.ifa_netmask.pointee)
|
||||||
|
|
||||||
self.init(name: ianame, host: host, mask: mask)
|
self.init(name: ianame, host: host, dest: dest, mask: mask)
|
||||||
}
|
}
|
||||||
|
|
||||||
// computed networking values (still numeric internally)
|
// computed networking values (still numeric internally)
|
||||||
var minIPInSubnet: UInt32 { host & mask }
|
public var minIP: UInt32 { host & mask }
|
||||||
var maxIPInSubnet: UInt32 { host | ~mask }
|
public var maxIP: UInt32 { host | ~mask }
|
||||||
|
|
||||||
var minIPString: String { uti(minIPInSubnet) ?? "nil" }
|
public var minIPString: String { uti(minIP) ?? "nil" }
|
||||||
var maxIPString: String { uti(maxIPInSubnet) ?? "nil" }
|
public var maxIPString: String { uti(maxIP) ?? "nil" }
|
||||||
|
|
||||||
var description: String {
|
public var description: String {
|
||||||
"\(name) | ip=\(hostIP) mask=\(maskIP) range=\(minIPString)-\(maxIPString)"
|
"\(name) | ip=\(hostIP) dest=\(destIP) mask=\(maskIP) range=\(minIPString)-\(maxIPString)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final class IfManager: @unchecked Sendable {
|
final class IfManager: Sendable {
|
||||||
|
public static let shared = IfManager()
|
||||||
|
nonisolated(unsafe) private(set) var addrs: Set<NetInfo> = Set()
|
||||||
|
|
||||||
private init() {}
|
private init() {
|
||||||
static let shared = IfManager()
|
self.addrs = IfManager.query()
|
||||||
|
|
||||||
// always get freshly computed addresses
|
|
||||||
var addrs: Set<NetInfo> {
|
|
||||||
Self.query()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public func query() {
|
||||||
|
addrs = IfManager.query()
|
||||||
|
}
|
||||||
|
|
||||||
private static func query() -> Set<NetInfo> {
|
private static func query() -> Set<NetInfo> {
|
||||||
var addrs = Set<NetInfo>()
|
var addrs = Set<NetInfo>()
|
||||||
var head: UnsafeMutablePointer<ifaddrs>? = nil
|
var head: UnsafeMutablePointer<ifaddrs>? = nil
|
||||||
@@ -112,15 +119,14 @@ final class IfManager: @unchecked Sendable {
|
|||||||
// try old 10.7.0.1 first, then fallback to next v4
|
// try old 10.7.0.1 first, then fallback to next v4
|
||||||
// user should only be connected to StosVPN/LocalDevVPN
|
// user should only be connected to StosVPN/LocalDevVPN
|
||||||
addrs.first {
|
addrs.first {
|
||||||
$0.minIPString == "10.7.0.1" ||
|
$0.hostIP == "10.7.0.1" ||
|
||||||
$0.minIPString == "192.168.56.1" ||
|
|
||||||
$0.name.starts(with: "utun")
|
$0.name.starts(with: "utun")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var sideVPNPatched: Bool {
|
var sideVPNPatched: Bool {
|
||||||
nextLAN?.maskIP == nextProbableSideVPN?.maskIP &&
|
nextLAN?.maskIP == nextProbableSideVPN?.maskIP &&
|
||||||
nextLAN?.maxIPInSubnet == nextProbableSideVPN?.maxIPInSubnet
|
nextLAN?.maxIP == nextProbableSideVPN?.maxIP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,13 @@ var isMinimuxerReady: Bool {
|
|||||||
print("isMinimuxerReady property is always true on simulator")
|
print("isMinimuxerReady property is always true on simulator")
|
||||||
return true
|
return true
|
||||||
#else
|
#else
|
||||||
return minimuxer.ready() && IfManager.shared.sideVPNPatched
|
IfManager.shared.query()
|
||||||
|
let dest = IfManager.shared.nextProbableSideVPN?.destIP
|
||||||
|
if #available(iOS 26.4, *) {
|
||||||
|
return minimuxer.ready(dest) && IfManager.shared.sideVPNPatched
|
||||||
|
} else {
|
||||||
|
return minimuxer.ready(dest)
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,8 +27,10 @@ func minimuxerStartWithLogger(_ pairingFile: String, _ logPath: String, _ loggin
|
|||||||
#if targetEnvironment(simulator)
|
#if targetEnvironment(simulator)
|
||||||
print("minimuxerStartWithLogger(\(pairingFile), \(logPath), \(loggingEnabled)) is no-op on simulator")
|
print("minimuxerStartWithLogger(\(pairingFile), \(logPath), \(loggingEnabled)) is no-op on simulator")
|
||||||
#else
|
#else
|
||||||
let hostIP = IfManager.shared.nextProbableSideVPN?.hostIP
|
IfManager.shared.query()
|
||||||
try minimuxer.startWithLogger(pairingFile, logPath, hostIP, loggingEnabled)
|
let dest = IfManager.shared.nextProbableSideVPN?.destIP
|
||||||
|
print("minimuxerStartWithLogger(\(pairingFile), \(logPath), \(dest), \(loggingEnabled)) is no-op on simulator")
|
||||||
|
try minimuxer.startWithLogger(pairingFile, logPath, dest, loggingEnabled)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user