mirror of
https://github.com/leminlimez/Nugget.git
synced 2025-04-08 04:23:05 +08:00
fix applying for cli & gui
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
from . import backup, perform_restore
|
from . import backup, perform_restore
|
||||||
from pymobiledevice3.lockdown import LockdownClient
|
from pymobiledevice3.lockdown import LockdownClient
|
||||||
|
import os
|
||||||
|
|
||||||
class FileToRestore:
|
class FileToRestore:
|
||||||
|
# TODO: Depricate this in favor of second init definition
|
||||||
def __init__(self, contents: str, restore_path: str, restore_name: str, owner: int = 501, group: int = 501):
|
def __init__(self, contents: str, restore_path: str, restore_name: str, owner: int = 501, group: int = 501):
|
||||||
self.contents = contents
|
self.contents = contents
|
||||||
self.restore_path = restore_path
|
self.restore_path = restore_path
|
||||||
@@ -9,6 +11,14 @@ class FileToRestore:
|
|||||||
self.owner = owner
|
self.owner = owner
|
||||||
self.group = group
|
self.group = group
|
||||||
|
|
||||||
|
def __init__(self, contents: str, restore_path: str, owner: int = 501, group: int = 501):
|
||||||
|
self.contents = contents
|
||||||
|
path, file = os.path.split(restore_path)
|
||||||
|
self.restore_path = path + "/"
|
||||||
|
self.restore_name = file # TODO: Remove this and handle splitting in the restore_files function
|
||||||
|
self.owner = owner
|
||||||
|
self.group = group
|
||||||
|
|
||||||
# files is a list of FileToRestore objects
|
# files is a list of FileToRestore objects
|
||||||
def restore_files(files: list, reboot: bool = False, lockdown_client: LockdownClient = None):
|
def restore_files(files: list, reboot: bool = False, lockdown_client: LockdownClient = None):
|
||||||
# create the files to be backed up
|
# create the files to be backed up
|
||||||
|
|||||||
29
cli_app.py
29
cli_app.py
@@ -1,5 +1,5 @@
|
|||||||
from Sparserestore.restore import restore_files, FileToRestore, restore_file
|
from Sparserestore.restore import restore_files, FileToRestore, restore_file
|
||||||
from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak
|
from tweaks.tweaks import tweaks, TweakModifyType, FeatureFlagTweak, EligibilityTweak, BasicPlistTweak
|
||||||
from devicemanagement.constants import Device
|
from devicemanagement.constants import Device
|
||||||
|
|
||||||
from pymobiledevice3.exceptions import PyMobileDevice3Exception
|
from pymobiledevice3.exceptions import PyMobileDevice3Exception
|
||||||
@@ -48,7 +48,7 @@ while running:
|
|||||||
'---' \\ \\ / \\ \\ / `----'
|
'---' \\ \\ / \\ \\ / `----'
|
||||||
`--`-' `--`-'
|
`--`-' `--`-'
|
||||||
""")
|
""")
|
||||||
print("CLI v2.2")
|
print("CLI v3.0")
|
||||||
print("by LeminLimez")
|
print("by LeminLimez")
|
||||||
print("Thanks @disfordottie for the clock animation and @lrdsnow for EU Enabler\n")
|
print("Thanks @disfordottie for the clock animation and @lrdsnow for EU Enabler\n")
|
||||||
print("Please back up your device before using!")
|
print("Please back up your device before using!")
|
||||||
@@ -102,6 +102,7 @@ while running:
|
|||||||
# create the other plists
|
# create the other plists
|
||||||
flag_plist: dict = {}
|
flag_plist: dict = {}
|
||||||
eligibility_files = None
|
eligibility_files = None
|
||||||
|
basic_plists: dict = {}
|
||||||
|
|
||||||
# verify the device credentials before continuing
|
# verify the device credentials before continuing
|
||||||
if gestalt_plist["CacheExtra"]["qNNddlUK+B/YlooNoymwgA"] != device.version or gestalt_plist["CacheExtra"]["0+nc/Udy4WNG8S+Q7a/s1A"] != device.model:
|
if gestalt_plist["CacheExtra"]["qNNddlUK+B/YlooNoymwgA"] != device.version or gestalt_plist["CacheExtra"]["0+nc/Udy4WNG8S+Q7a/s1A"] != device.model:
|
||||||
@@ -120,8 +121,11 @@ while running:
|
|||||||
elif isinstance(tweak, EligibilityTweak):
|
elif isinstance(tweak, EligibilityTweak):
|
||||||
tweak.set_region_code(device.locale[-2:])
|
tweak.set_region_code(device.locale[-2:])
|
||||||
eligibility_files = tweak.apply_tweak()
|
eligibility_files = tweak.apply_tweak()
|
||||||
|
elif isinstance(tweak, BasicPlistTweak):
|
||||||
|
basic_plists = tweak.apply_tweak(basic_plists)
|
||||||
else:
|
else:
|
||||||
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
||||||
|
# TODO: Improve resetting (make it work with basic plist tweaks)
|
||||||
|
|
||||||
# create the restore file list
|
# create the restore file list
|
||||||
files_to_restore = [
|
files_to_restore = [
|
||||||
@@ -138,6 +142,11 @@ while running:
|
|||||||
]
|
]
|
||||||
if eligibility_files != None:
|
if eligibility_files != None:
|
||||||
files_to_restore += eligibility_files
|
files_to_restore += eligibility_files
|
||||||
|
for location, plist in basic_plists:
|
||||||
|
files_to_restore.append(FileToRestore(
|
||||||
|
contents=plistlib.dumps(plist),
|
||||||
|
restore_path=location.value
|
||||||
|
))
|
||||||
# restore to the device
|
# restore to the device
|
||||||
try:
|
try:
|
||||||
restore_files(files=files_to_restore, reboot=True, lockdown_client=device.ld)
|
restore_files(files=files_to_restore, reboot=True, lockdown_client=device.ld)
|
||||||
@@ -169,14 +178,18 @@ while running:
|
|||||||
if page > 0 and page <= num_tweaks and tweak.is_compatible(device.version):
|
if page > 0 and page <= num_tweaks and tweak.is_compatible(device.version):
|
||||||
if tweak.edit_type == TweakModifyType.TEXT:
|
if tweak.edit_type == TweakModifyType.TEXT:
|
||||||
# text input
|
# text input
|
||||||
# for now it is just for set model, deal with a fix later
|
inp_txt = ""
|
||||||
print("\n\nSet Model Name")
|
print(f"\n\n{tweak.label}")
|
||||||
print("Leave blank to turn off custom name.\n")
|
print("Leave blank to turn off.\n")
|
||||||
name = input("Enter Model Name: ")
|
if tweak.label == "Set Device Model Name":
|
||||||
if name == "":
|
inp_txt = "Enter Model Name: "
|
||||||
|
elif tweak.label == "Set Lock Screen Footnote Text":
|
||||||
|
inp_txt = "Enter Footnote: "
|
||||||
|
new_txt = input(inp_txt)
|
||||||
|
if new_txt == "":
|
||||||
tweak.set_enabled(False)
|
tweak.set_enabled(False)
|
||||||
else:
|
else:
|
||||||
tweak.set_value(name)
|
tweak.set_value(new_txt)
|
||||||
elif tweak.edit_type == TweakModifyType.PICKER:
|
elif tweak.edit_type == TweakModifyType.PICKER:
|
||||||
# pick between values
|
# pick between values
|
||||||
print("\n\nSelect a value.")
|
print("\n\nSelect a value.")
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from pymobiledevice3.lockdown import create_using_usbmux
|
|||||||
from devicemanagement.constants import Device, Version
|
from devicemanagement.constants import Device, Version
|
||||||
from devicemanagement.data_singleton import DataSingleton
|
from devicemanagement.data_singleton import DataSingleton
|
||||||
|
|
||||||
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak
|
from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, BasicPlistTweak
|
||||||
from Sparserestore.restore import restore_files, FileToRestore
|
from Sparserestore.restore import restore_files, FileToRestore
|
||||||
|
|
||||||
def show_error_msg(txt: str):
|
def show_error_msg(txt: str):
|
||||||
@@ -105,6 +105,7 @@ class DeviceManager:
|
|||||||
# create the other plists
|
# create the other plists
|
||||||
flag_plist: dict = {}
|
flag_plist: dict = {}
|
||||||
eligibility_files = None
|
eligibility_files = None
|
||||||
|
basic_plists: dict = {}
|
||||||
|
|
||||||
# set the plist keys
|
# set the plist keys
|
||||||
if not resetting:
|
if not resetting:
|
||||||
@@ -114,6 +115,8 @@ class DeviceManager:
|
|||||||
flag_plist = tweak.apply_tweak(flag_plist)
|
flag_plist = tweak.apply_tweak(flag_plist)
|
||||||
elif isinstance(tweak, EligibilityTweak):
|
elif isinstance(tweak, EligibilityTweak):
|
||||||
eligibility_files = tweak.apply_tweak()
|
eligibility_files = tweak.apply_tweak()
|
||||||
|
elif isinstance(tweak, BasicPlistTweak):
|
||||||
|
basic_plists = tweak.apply_tweak(basic_plists)
|
||||||
else:
|
else:
|
||||||
if gestalt_plist != None:
|
if gestalt_plist != None:
|
||||||
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
gestalt_plist = tweak.apply_tweak(gestalt_plist)
|
||||||
@@ -136,6 +139,11 @@ class DeviceManager:
|
|||||||
))
|
))
|
||||||
if eligibility_files:
|
if eligibility_files:
|
||||||
files_to_restore += eligibility_files
|
files_to_restore += eligibility_files
|
||||||
|
for location, plist in basic_plists:
|
||||||
|
files_to_restore.append(FileToRestore(
|
||||||
|
contents=plistlib.dumps(plist),
|
||||||
|
restore_path=location.value
|
||||||
|
))
|
||||||
|
|
||||||
# restore to the device
|
# restore to the device
|
||||||
update_label("Restoring to device...")
|
update_label("Restoring to device...")
|
||||||
|
|||||||
@@ -1518,7 +1518,7 @@ QToolButton:pressed {
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Nugget GUI - Version 2.2</string>
|
<string>Nugget GUI - Version 3.0 (beta 1)</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
|||||||
@@ -2151,7 +2151,7 @@ class Ui_Nugget(object):
|
|||||||
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
|
self.toolButton_15.setText(QCoreApplication.translate("Nugget", u"Additional Thanks", None))
|
||||||
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
|
self.libiBtn.setText(QCoreApplication.translate("Nugget", u"pymobiledevice3", None))
|
||||||
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
|
self.qtBtn.setText(QCoreApplication.translate("Nugget", u"Qt Creator", None))
|
||||||
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 2.2", None))
|
self.label.setText(QCoreApplication.translate("Nugget", u"Nugget GUI - Version 3.0 (beta 1)", None))
|
||||||
self.exploreLbl.setText(QCoreApplication.translate("Nugget", u"Explore", None))
|
self.exploreLbl.setText(QCoreApplication.translate("Nugget", u"Explore", None))
|
||||||
self.exploreSubLbl.setText("")
|
self.exploreSubLbl.setText("")
|
||||||
self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
|
self.statusBarLbl_2.setText(QCoreApplication.translate("Nugget", u"Location Simulation", None))
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ tweaks = {
|
|||||||
|
|
||||||
## Springboard Tweaks
|
## Springboard Tweaks
|
||||||
"LockScreenFootnote": BasicPlistTweak(
|
"LockScreenFootnote": BasicPlistTweak(
|
||||||
"Lock Screen Footnote Text",
|
"Set Lock Screen Footnote Text",
|
||||||
FileLocation.footnote,
|
FileLocation.footnote,
|
||||||
key="LockScreenFootnote", value="",
|
key="LockScreenFootnote", value="",
|
||||||
edit_type=TweakModifyType.TEXT
|
edit_type=TweakModifyType.TEXT
|
||||||
|
|||||||
Reference in New Issue
Block a user