mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
disabling ota
This commit is contained in:
@@ -11,9 +11,9 @@ from pymobiledevice3.lockdown import create_using_usbmux
|
||||
from devicemanagement.constants import Device, Version
|
||||
from devicemanagement.data_singleton import DataSingleton
|
||||
|
||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, RdarFixTweak
|
||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak
|
||||
from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks
|
||||
from tweaks.basic_plist_locations import FileLocationsList
|
||||
from tweaks.basic_plist_locations import FileLocationsList, RiskyFileLocationsList
|
||||
from Sparserestore.restore import restore_files, FileToRestore
|
||||
|
||||
def show_error_msg(txt: str, detailed_txt: str = None):
|
||||
@@ -302,8 +302,8 @@ class DeviceManager:
|
||||
eligibility_files = tweak.apply_tweak()
|
||||
elif isinstance(tweak, AITweak):
|
||||
ai_file = tweak.apply_tweak()
|
||||
elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak):
|
||||
basic_plists = tweak.apply_tweak(basic_plists)
|
||||
elif isinstance(tweak, BasicPlistTweak) or isinstance(tweak, RdarFixTweak) or isinstance(tweak, AdvancedPlistTweak):
|
||||
basic_plists = tweak.apply_tweak(basic_plists, self.allow_risky_tweaks)
|
||||
else:
|
||||
if gestalt_plist != None:
|
||||
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
||||
@@ -368,6 +368,13 @@ class DeviceManager:
|
||||
path=location.value,
|
||||
files_to_restore=files_to_restore
|
||||
)
|
||||
if self.allow_risky_tweaks:
|
||||
for location in RiskyFileLocationsList:
|
||||
self.concat_file(
|
||||
contents=empty_data,
|
||||
path=location.value,
|
||||
files_to_restore=files_to_restore
|
||||
)
|
||||
|
||||
# restore to the device
|
||||
update_label("Restoring to device...")
|
||||
|
||||
@@ -114,6 +114,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.ui.pasteSoundChk.toggled.connect(self.on_pasteSoundChk_clicked)
|
||||
self.ui.notifyPastesChk.toggled.connect(self.on_notifyPastesChk_clicked)
|
||||
|
||||
## RISKY OPTIONS PAGE ACTIONS
|
||||
self.ui.disableOTAChk.toggled.connect(self.on_disableOTAChk_clicked)
|
||||
|
||||
## APPLY PAGE ACTIONS
|
||||
self.ui.applyTweaksBtn.clicked.connect(self.on_applyPageBtn_clicked)
|
||||
self.ui.removeTweaksBtn.clicked.connect(self.on_removeTweaksBtn_clicked)
|
||||
@@ -219,6 +222,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
self.ui.euEnablerPageContent.setDisabled(False)
|
||||
self.ui.springboardOptionsPageContent.setDisabled(False)
|
||||
self.ui.internalOptionsPageContent.setDisabled(False)
|
||||
self.ui.advancedOptionsPageContent.setDisabled(False)
|
||||
|
||||
self.ui.resetPairBtn.show()
|
||||
|
||||
@@ -321,14 +325,16 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
organization_name = self.settings.value("organization_name", "", type=str)
|
||||
|
||||
self.ui.allowWifiApplyingChk.setChecked(apply_over_wifi)
|
||||
self.ui.skipSetupChk.setChecked(skip_setup)
|
||||
self.ui.autoRebootChk.setChecked(auto_reboot)
|
||||
self.ui.showRiskyChk.setChecked(risky_tweaks)
|
||||
self.ui.skipSetupChk.setChecked(skip_setup)
|
||||
self.ui.supervisionChk.setChecked(supervised)
|
||||
self.ui.supervisionOrganization.setText(organization_name)
|
||||
|
||||
self.device_manager.apply_over_wifi = apply_over_wifi
|
||||
self.device_manager.skip_setup = skip_setup
|
||||
self.device_manager.auto_reboot = auto_reboot
|
||||
self.device_manager.allow_risky_tweaks = risky_tweaks
|
||||
self.device_manager.skip_setup = skip_setup
|
||||
self.device_manager.supervised = supervised
|
||||
self.device_manager.organization_name = organization_name
|
||||
except:
|
||||
@@ -668,6 +674,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
def on_notifyPastesChk_clicked(self, checked: bool):
|
||||
tweaks["AnnounceAllPastes"].set_enabled(checked)
|
||||
|
||||
## Risky Options Page
|
||||
def on_disableOTAChk_clicked(self, checked: bool):
|
||||
tweaks["DisableOTA"].set_enabled(checked)
|
||||
|
||||
|
||||
## SETTINGS PAGE
|
||||
def on_allowWifiApplyingChk_toggled(self, checked: bool):
|
||||
|
||||
@@ -2892,7 +2892,7 @@ class Ui_Nugget(object):
|
||||
self.springboardOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.internalOptionsPageBtn.setText(QCoreApplication.translate("Nugget", u" Internal Options", None))
|
||||
self.internalOptionsPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Advanced Options", None))
|
||||
self.advancedPageBtn.setText(QCoreApplication.translate("Nugget", u" Risky Options", None))
|
||||
self.advancedPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
self.applyPageBtn.setText(QCoreApplication.translate("Nugget", u" Apply", None))
|
||||
self.applyPageBtn.setProperty("cls", QCoreApplication.translate("Nugget", u"sidebarBtn", None))
|
||||
@@ -3035,7 +3035,7 @@ class Ui_Nugget(object):
|
||||
self.enableWakeVibrateChk.setText(QCoreApplication.translate("Nugget", u"Vibrate on Raise-to-Wake", None))
|
||||
self.pasteSoundChk.setText(QCoreApplication.translate("Nugget", u"Play Sound on Paste", None))
|
||||
self.notifyPastesChk.setText(QCoreApplication.translate("Nugget", u"Show Notifications for System Pastes", None))
|
||||
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Advanced Options", None))
|
||||
self.advancedOptionsLbl.setText(QCoreApplication.translate("Nugget", u"Risky Options", None))
|
||||
self.label_17.setText(QCoreApplication.translate("Nugget", u"Disclaimer:\n"
|
||||
"\n"
|
||||
"The options on this page may be unsafe for your device. Use these options at your own risk. Changing\n"
|
||||
|
||||
@@ -16,9 +16,15 @@ class FileLocation(Enum):
|
||||
pasteboard = "/var/Managed Preferences/mobile/com.apple.Pasteboard.plist"
|
||||
notes = "/var/Managed Preferences/mobile/com.apple.mobilenotes.plist"
|
||||
|
||||
# Risky Options
|
||||
ota = "/var/Managed Preferences/mobile/com.apple.MobileAsset.plist"
|
||||
|
||||
# support for older versions of python that cannot enumerate over enums
|
||||
FileLocationsList: list[FileLocation] = [
|
||||
FileLocation.resolution,
|
||||
FileLocation.springboard, FileLocation.footnote,
|
||||
FileLocation.globalPreferences, FileLocation.appStore, FileLocation.backboardd, FileLocation.coreMotion, FileLocation.pasteboard, FileLocation.notes
|
||||
]
|
||||
RiskyFileLocationsList: list[FileLocation] = [
|
||||
FileLocation.ota
|
||||
]
|
||||
@@ -49,13 +49,15 @@ class BasicPlistTweak(Tweak):
|
||||
value: any = True,
|
||||
edit_type: TweakModifyType = TweakModifyType.TOGGLE,
|
||||
min_version: Version = Version("1.0"),
|
||||
is_risky: bool = False,
|
||||
divider_below: bool = False
|
||||
):
|
||||
super().__init__(label=label, key=key, subkey=None, value=value, edit_type=edit_type, min_version=min_version, divider_below=divider_below)
|
||||
self.file_location = file_location
|
||||
self.is_risky = is_risky
|
||||
|
||||
def apply_tweak(self, other_tweaks: dict) -> dict:
|
||||
if not self.enabled:
|
||||
def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
|
||||
if not self.enabled or (self.is_risky and not risky_allowed):
|
||||
return other_tweaks
|
||||
if self.file_location in other_tweaks:
|
||||
other_tweaks[self.file_location][self.key] = self.value
|
||||
@@ -63,6 +65,27 @@ class BasicPlistTweak(Tweak):
|
||||
other_tweaks[self.file_location] = {self.key: self.value}
|
||||
return other_tweaks
|
||||
|
||||
class AdvancedPlistTweak(BasicPlistTweak):
|
||||
def __init__(
|
||||
self, label: str,
|
||||
file_location: FileLocation,
|
||||
keyValues: dict,
|
||||
edit_type: TweakModifyType = TweakModifyType.TOGGLE,
|
||||
min_version: Version = Version("1.0"),
|
||||
is_risky: bool = False,
|
||||
divider_below: bool = False
|
||||
):
|
||||
super().__init__(label=label, file_location=file_location, key=None, value=keyValues, edit_type=edit_type, min_version=min_version, is_risky=is_risky, divider_below=divider_below)
|
||||
|
||||
def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
|
||||
if not self.enabled or (self.is_risky and not risky_allowed):
|
||||
return other_tweaks
|
||||
plist = {}
|
||||
for key in self.value:
|
||||
plist[key] = self.value[key]
|
||||
other_tweaks[self.file_location] = plist
|
||||
return other_tweaks
|
||||
|
||||
|
||||
class RdarFixTweak(BasicPlistTweak):
|
||||
def __init__(self, divider_below: bool = False):
|
||||
@@ -97,7 +120,7 @@ class RdarFixTweak(BasicPlistTweak):
|
||||
def set_di_type(self, type: int):
|
||||
self.di_type = type
|
||||
|
||||
def apply_tweak(self, other_tweaks: dict) -> dict:
|
||||
def apply_tweak(self, other_tweaks: dict, risky_allowed: bool = False) -> dict:
|
||||
if not self.enabled:
|
||||
return other_tweaks
|
||||
if self.di_type == -1:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from devicemanagement.constants import Version
|
||||
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, RdarFixTweak
|
||||
from .tweak_classes import MobileGestaltTweak, MobileGestaltMultiTweak, MobileGestaltPickerTweak, FeatureFlagTweak, TweakModifyType, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak
|
||||
from .eligibility_tweak import EligibilityTweak, AITweak
|
||||
from .basic_plist_locations import FileLocation
|
||||
|
||||
@@ -267,5 +267,20 @@ tweaks = {
|
||||
"Show Notifications for System Pastes",
|
||||
FileLocation.pasteboard,
|
||||
"AnnounceAllPastes"
|
||||
),
|
||||
|
||||
## Risky Options
|
||||
"DisableOTA": AdvancedPlistTweak(
|
||||
"Disable OTA Updates",
|
||||
FileLocation.ota,
|
||||
{
|
||||
"MobileAssetServerURL-com.apple.MobileAsset.MobileSoftwareUpdate.UpdateBrain": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
|
||||
"MobileAssetSUAllowOSVersionChange": False,
|
||||
"MobileAssetSUAllowSameVersionFullReplacement": False,
|
||||
"MobileAssetServerURL-com.apple.MobileAsset.RecoveryOSUpdate": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
|
||||
"MobileAssetServerURL-com.apple.MobileAsset.RecoveryOSUpdateBrain": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
|
||||
"MobileAssetServerURL-com.apple.MobileAsset.SoftwareUpdate": "https://mesu.apple.com/assets/tvOS16DeveloperSeed",
|
||||
"MobileAssetAssetAudience": "65254ac3-f331-4c19-8559-cbe22f5bc1a6"
|
||||
}
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user