mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-14 09:13:25 +01:00
[AltServer] Supports enabling JIT on devices running iOS 17
AltServer embeds the AltJIT CLI tool in its app bundle and runs it as an admin subprocess.
This commit is contained in:
@@ -147,44 +147,36 @@ struct ServerRequestHandler: RequestHandler
|
||||
func handleEnableUnsignedCodeExecutionRequest(_ request: EnableUnsignedCodeExecutionRequest, for connection: Connection, completionHandler: @escaping (Result<EnableUnsignedCodeExecutionResponse, Error>) -> Void)
|
||||
{
|
||||
guard let device = ALTDeviceManager.shared.availableDevices.first(where: { $0.identifier == request.udid }) else { return completionHandler(.failure(ALTServerError(.deviceNotFound))) }
|
||||
|
||||
let process: AppProcess
|
||||
|
||||
ALTDeviceManager.shared.prepare(device) { result in
|
||||
switch result
|
||||
if let processID = request.processID
|
||||
{
|
||||
process = .pid(processID)
|
||||
}
|
||||
else if let processName = request.processName
|
||||
{
|
||||
process = .name(processName)
|
||||
}
|
||||
else
|
||||
{
|
||||
return completionHandler(.failure(ALTServerError(.invalidRequest)))
|
||||
}
|
||||
|
||||
Task<Void, Never> {
|
||||
do
|
||||
{
|
||||
case .failure(let error): completionHandler(.failure(error))
|
||||
case .success:
|
||||
ALTDeviceManager.shared.startDebugConnection(to: device) { (connection, error) in
|
||||
guard let connection = connection else { return completionHandler(.failure(error!)) }
|
||||
|
||||
func finish(success: Bool, error: Error?)
|
||||
{
|
||||
if let error = error, !success
|
||||
{
|
||||
print("Failed to enable unsigned code execution for process \(request.processID?.description ?? request.processName ?? "nil"):", error)
|
||||
completionHandler(.failure(ALTServerError(error)))
|
||||
}
|
||||
else
|
||||
{
|
||||
print("Enabled unsigned code execution for process:", request.processID ?? request.processName ?? "nil")
|
||||
|
||||
let response = EnableUnsignedCodeExecutionResponse()
|
||||
completionHandler(.success(response))
|
||||
}
|
||||
}
|
||||
|
||||
if let processID = request.processID
|
||||
{
|
||||
connection.enableUnsignedCodeExecutionForProcess(withID: processID, completionHandler: finish)
|
||||
}
|
||||
else if let processName = request.processName
|
||||
{
|
||||
connection.enableUnsignedCodeExecutionForProcess(withName: processName, completionHandler: finish)
|
||||
}
|
||||
else
|
||||
{
|
||||
finish(success: false, error: ALTServerError(.invalidRequest))
|
||||
}
|
||||
}
|
||||
try await JITManager.shared.enableUnsignedCodeExecution(process: process, device: device)
|
||||
|
||||
print("Enabled unsigned code execution for process:", request.processID ?? request.processName ?? "nil")
|
||||
|
||||
let response = EnableUnsignedCodeExecutionResponse()
|
||||
completionHandler(.success(response))
|
||||
}
|
||||
catch
|
||||
{
|
||||
print("Failed to enable unsigned code execution for process \(request.processID?.description ?? request.processName ?? "nil"):", error)
|
||||
completionHandler(.failure(ALTServerError(error)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user