mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
* Implement em_proxy * Update libimobiledevice * Add minimuxer library to Xcode * Build missing C files for libimobiledevice * Remove objective C library * Add pairing file to Info.plist * Heartbeat self on startup * Enable JIT on-device * Implement on-device installation * Fix OpenSSL header errors * Random submodule bullcrap go * Search release folder for emotional damage * Clean dependencies * Build Rust dependencies attempt 1/999 * Update em_proxy * Implement refreshing apps * Clean up old operations * Remove all AltServer code * Remove files from Xcode project * Implement auto mounting the developer DMG * Recover from app being backgrounded * Fixed keeping pairing file in app after updating SideStore (#3) * Use compliant error handling for minimuxer * Fix app failing to install * Don't kill proxy on backgrounding * Makes sure the ALTPairingFile gets transferred even if team IDs change (#4) * Step 1 to allow SideStore to resign itself * Update ResignAppOperation.swift * Adding cache for action runner (#5) * Start caching commit for actions Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Update build.yml Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Update build.yml Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Use rust lib directories to cache Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Cache cargo also Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Fix spacing Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Replace cargo id for caching Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Remove cache if statements Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> * Add disconnected WireGuard detection * Add minimuxer logging Signed-off-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com> Co-authored-by: jawshoeadan <62785552+jawshoeadan@users.noreply.github.com> Co-authored-by: Joelle Stickney <joellestickney@gmail.com> Co-authored-by: Spidy123222 <64176728+Spidy123222@users.noreply.github.com>
117 lines
3.0 KiB
Swift
117 lines
3.0 KiB
Swift
//
|
|
// Contexts.swift
|
|
// AltStore
|
|
//
|
|
// Created by Riley Testut on 6/20/19.
|
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import CoreData
|
|
import Network
|
|
|
|
import AltStoreCore
|
|
import AltSign
|
|
|
|
class OperationContext
|
|
{
|
|
var error: Error?
|
|
|
|
var presentingViewController: UIViewController?
|
|
|
|
let operations: NSHashTable<Foundation.Operation>
|
|
|
|
init(error: Error? = nil, operations: [Foundation.Operation] = [])
|
|
{
|
|
self.error = error
|
|
|
|
self.operations = NSHashTable<Foundation.Operation>.weakObjects()
|
|
for operation in operations
|
|
{
|
|
self.operations.add(operation)
|
|
}
|
|
}
|
|
|
|
convenience init(context: OperationContext)
|
|
{
|
|
self.init(error: context.error, operations: context.operations.allObjects)
|
|
}
|
|
}
|
|
|
|
class AuthenticatedOperationContext: OperationContext
|
|
{
|
|
var session: ALTAppleAPISession?
|
|
|
|
var team: ALTTeam?
|
|
var certificate: ALTCertificate?
|
|
|
|
weak var authenticationOperation: AuthenticationOperation?
|
|
|
|
convenience init(context: AuthenticatedOperationContext)
|
|
{
|
|
self.init(error: context.error, operations: context.operations.allObjects)
|
|
|
|
self.session = context.session
|
|
self.team = context.team
|
|
self.certificate = context.certificate
|
|
self.authenticationOperation = context.authenticationOperation
|
|
}
|
|
}
|
|
|
|
@dynamicMemberLookup
|
|
class AppOperationContext
|
|
{
|
|
let bundleIdentifier: String
|
|
let authenticatedContext: AuthenticatedOperationContext
|
|
|
|
var app: ALTApplication?
|
|
var provisioningProfiles: [String: ALTProvisioningProfile]?
|
|
|
|
var isFinished = false
|
|
|
|
var error: Error? {
|
|
get {
|
|
return _error ?? self.authenticatedContext.error
|
|
}
|
|
set {
|
|
_error = newValue
|
|
}
|
|
}
|
|
private var _error: Error?
|
|
|
|
init(bundleIdentifier: String, authenticatedContext: AuthenticatedOperationContext)
|
|
{
|
|
self.bundleIdentifier = bundleIdentifier
|
|
self.authenticatedContext = authenticatedContext
|
|
}
|
|
|
|
subscript<T>(dynamicMember keyPath: WritableKeyPath<AuthenticatedOperationContext, T>) -> T
|
|
{
|
|
return self.authenticatedContext[keyPath: keyPath]
|
|
}
|
|
}
|
|
|
|
class InstallAppOperationContext: AppOperationContext
|
|
{
|
|
lazy var temporaryDirectory: URL = {
|
|
let temporaryDirectory = FileManager.default.uniqueTemporaryURL()
|
|
|
|
do { try FileManager.default.createDirectory(at: temporaryDirectory, withIntermediateDirectories: true, attributes: nil) }
|
|
catch { self.error = error }
|
|
|
|
return temporaryDirectory
|
|
}()
|
|
|
|
var resignedApp: ALTApplication?
|
|
var installedApp: InstalledApp? {
|
|
didSet {
|
|
self.installedAppContext = self.installedApp?.managedObjectContext
|
|
}
|
|
}
|
|
private var installedAppContext: NSManagedObjectContext?
|
|
|
|
var beginInstallationHandler: ((InstalledApp) -> Void)?
|
|
|
|
var alternateIconURL: URL?
|
|
}
|