1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-14 14:39:25 +08:00

fix: override original method to bypass opsi backdoor

This commit is contained in:
0O0o0oOoO00
2026-01-23 10:47:28 +08:00
parent 8d17eeb803
commit c9fee2bfbc
3 changed files with 107 additions and 1 deletions

View File

@@ -815,6 +815,61 @@ class ConfigUpdater:
return data
class ConfigUpdater(ConfigUpdater):
def config_update(self, old, is_template=False):
"""
Args:
old (dict):
is_template (bool):
Returns:
dict:
"""
new = {}
for keys, data in deep_iter(self.args, depth=3):
value = deep_get(old, keys=keys, default=data['value'])
typ = data['type']
display = data.get('display')
if is_template or value is None or value == '' \
or typ in ['lock', 'state'] or (display == 'hide' and typ != 'stored'):
value = data['value']
value = parse_value(value, data=data)
deep_set(new, keys=keys, value=value)
# AzurStatsID
if is_template:
deep_set(new, 'Alas.DropRecord.AzurStatsID', None)
else:
deep_default(new, 'Alas.DropRecord.AzurStatsID', random_id())
# In the original method,
# when OpsiHazard1Leveling is enabled,
# the OpsiMeowfficerFarming will be set to enabled
# Update to latest event
server = to_server(deep_get(new, 'Alas.Emulator.PackageName', 'cn'))
if not is_template:
for task in EVENTS + RAIDS + COALITIONS:
opts = deep_get(self.args, keys=f'{task}.Campaign.Event.option_{server}', default=[])
if not deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') in opts:
deep_set(new,
keys=f'{task}.Campaign.Event',
value=opts[0])
for task in ['GemsFarming']:
if deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') != 'campaign_main':
deep_set(new,
keys=f'{task}.Campaign.Event',
value=deep_get(self.args, f'{task}.Campaign.Event.option_{server}')[0])
# War archive does not allow campaign_main
for task in WAR_ARCHIVES:
if deep_get(new, keys=f'{task}.Campaign.Event', default='campaign_main') == 'campaign_main':
deep_set(new,
keys=f'{task}.Campaign.Event',
value=deep_get(self.args, f'{task}.Campaign.Event.option_{server}')[0])
FULL_CONFIG_IMPORT = '''
# This file was automatically generated by module/config/config_updater.py.
# Don't modify it manually.