From f9602be1bacf44452856f4ede40864966d19f2d1 Mon Sep 17 00:00:00 2001 From: happyhappyhappy-arch <39981845+happyhappyhappy-arch@users.noreply.github.com> Date: Thu, 5 Jun 2025 15:36:17 +0800 Subject: [PATCH 1/5] Add ssl support (#4840) * Add: add ssl authentication * Fix: unify the format for ssl config --------- Co-authored-by: LmeSzinc --- config/deploy.template-AidLux-cn.yaml | 8 ++++++++ config/deploy.template-AidLux.yaml | 8 ++++++++ config/deploy.template-cn.yaml | 8 ++++++++ config/deploy.template-docker-cn.yaml | 8 ++++++++ config/deploy.template-docker.yaml | 8 ++++++++ config/deploy.template-linux-cn.yaml | 8 ++++++++ config/deploy.template-linux.yaml | 8 ++++++++ config/deploy.template.yaml | 8 ++++++++ deploy/config.py | 2 ++ gui.py | 20 +++++++++++++++++++- 10 files changed, 85 insertions(+), 1 deletion(-) diff --git a/config/deploy.template-AidLux-cn.yaml b/config/deploy.template-AidLux-cn.yaml index 5e400d27a..50e6bd7c3 100644 --- a/config/deploy.template-AidLux-cn.yaml +++ b/config/deploy.template-AidLux-cn.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template-AidLux.yaml b/config/deploy.template-AidLux.yaml index 0b515705f..cb2c1bde3 100644 --- a/config/deploy.template-AidLux.yaml +++ b/config/deploy.template-AidLux.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template-cn.yaml b/config/deploy.template-cn.yaml index 9c031ecbd..4e75328ba 100644 --- a/config/deploy.template-cn.yaml +++ b/config/deploy.template-cn.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template-docker-cn.yaml b/config/deploy.template-docker-cn.yaml index 302c2a19e..dde3fb12c 100644 --- a/config/deploy.template-docker-cn.yaml +++ b/config/deploy.template-docker-cn.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template-docker.yaml b/config/deploy.template-docker.yaml index 7d8288ed2..8b5990d96 100644 --- a/config/deploy.template-docker.yaml +++ b/config/deploy.template-docker.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template-linux-cn.yaml b/config/deploy.template-linux-cn.yaml index eb32dee35..285a00dba 100644 --- a/config/deploy.template-linux-cn.yaml +++ b/config/deploy.template-linux-cn.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template-linux.yaml b/config/deploy.template-linux.yaml index c1656b478..ed0729146 100644 --- a/config/deploy.template-linux.yaml +++ b/config/deploy.template-linux.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/config/deploy.template.yaml b/config/deploy.template.yaml index 22d0e938a..8b725e90f 100644 --- a/config/deploy.template.yaml +++ b/config/deploy.template.yaml @@ -157,3 +157,11 @@ Deploy: # '["alas"]' specified "alas" config # '["alas","alas2"]' specified "alas" "alas2" configs Run: null + # SSL support + # Only effective when both parameters below are set + # --ssl-key. Path to SSL key file + # [Default] null (no SSL) + WebuiSSLKey: null + # --ssl-cert. Path to SSL cert file + # [Default] null (no SSL) + WebuiSSLCert: null diff --git a/deploy/config.py b/deploy/config.py index 03bf4c1b5..e63128169 100644 --- a/deploy/config.py +++ b/deploy/config.py @@ -54,6 +54,8 @@ class ConfigModel: # Webui WebuiHost: str = "0.0.0.0" WebuiPort: int = 22267 + WebuiSSLKey: Optional[str] = None + WebuiSSLCert: Optional[str] = None Language: str = "en-US" Theme: str = "default" DpiScaling: bool = True diff --git a/gui.py b/gui.py index 97b5f3cf4..ffed55044 100644 --- a/gui.py +++ b/gui.py @@ -40,6 +40,12 @@ def func(ev: threading.Event): parser.add_argument( "--electron", action="store_true", help="Runs by electron client." ) + parser.add_argument( + "--ssl-key", dest="ssl_key", type=str, help="SSL key file path for HTTPS support" + ) + parser.add_argument( + "--ssl-cert", type=str, help="SSL certificate file path for HTTPS support" + ) parser.add_argument( "--run", nargs="+", @@ -50,11 +56,15 @@ def func(ev: threading.Event): host = args.host or State.deploy_config.WebuiHost or "0.0.0.0" port = args.port or int(State.deploy_config.WebuiPort) or 22267 + ssl_key = args.ssl_key or State.deploy_config.WebuiSSLKey + ssl_cert = args.ssl_cert or State.deploy_config.WebuiSSLCert + ssl = ssl_key is not None and ssl_cert is not None State.electron = args.electron logger.hr("Launcher config") logger.attr("Host", host) logger.attr("Port", port) + logger.attr("SSL", ssl) logger.attr("Electron", args.electron) logger.attr("Reload", ev is not None) @@ -64,7 +74,15 @@ def func(ev: threading.Event): from module.logger import console_hdlr logger.removeHandler(console_hdlr) - uvicorn.run("module.webui.app:app", host=host, port=port, factory=True) + if ssl_cert is None and ssl_key is not None: + logger.error("SSL key provided without certificate. Please provide both SSL key and certificate.") + elif ssl_key is None and ssl_cert is not None: + logger.error("SSL certificate provided without key. Please provide both SSL key and certificate.") + + if ssl: + uvicorn.run("module.webui.app:app", host=host, port=port, factory=True, ssl_keyfile=ssl_key, ssl_certfile=ssl_cert) + else: + uvicorn.run("module.webui.app:app", host=host, port=port, factory=True) if __name__ == "__main__": From d7d729e198bb3e4dcdfc9791d0e547a872b6085e Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Thu, 5 Jun 2025 16:20:45 +0800 Subject: [PATCH 2/5] Fix: handle empty rows from "ldconsole.exe list2" (#4846) --- module/device/method/ldopengl.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/module/device/method/ldopengl.py b/module/device/method/ldopengl.py index a7a71bd2a..81f2a4a25 100644 --- a/module/device/method/ldopengl.py +++ b/module/device/method/ldopengl.py @@ -2,7 +2,6 @@ import ctypes import os import subprocess import time -import typing as t from dataclasses import dataclass from functools import wraps @@ -102,17 +101,31 @@ class LDConsole: logger.warning(f'TimeoutExpired when calling {cmd}, stdout={stdout}, stderr={stderr}') return stdout - def list2(self) -> t.List[DataLDPlayerInfo]: + def list2(self): """ > ldconsole.exe list2 0,雷电模拟器,28053900,42935798,1,59776,36816,1280,720,240 1,雷电模拟器-1,0,0,0,-1,-1,1280,720,240 + + Returns: + list[DataLDPlayerInfo]: """ out = [] data = self.subprocess_run(['list2']) for row in data.strip().split(b'\n'): - info = row.strip().split(b',') - info = DataLDPlayerInfo(*info) + row = row.strip() + if not row: + continue + info = row.split(b',') + # check parts + if len(info) != 10: + logger.warning(f'ldplayer info does not have 10 parts: "{row}"') + continue + # build info + try: + info = DataLDPlayerInfo(*info) + except Exception as e: + logger.warning(f'Failed to build ldplayer info from "{row}", {e}') out.append(info) return out From 2247d72bf74ab731342c578b03d38d1f4d6d327e Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 6 Jun 2025 01:18:31 +0800 Subject: [PATCH 3/5] ix: Handle TACTICAL_CHECK without black-blurred background (#4861) --- module/tactical/tactical_class.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/module/tactical/tactical_class.py b/module/tactical/tactical_class.py index 84b60ab54..062db8988 100644 --- a/module/tactical/tactical_class.py +++ b/module/tactical/tactical_class.py @@ -434,7 +434,10 @@ class RewardTacticalClass(Dock): continue # Get finish time - if self.appear(TACTICAL_CHECK, offset=(20, 20), interval=2): + # sometimes you have TACTICAL_CHECK without black-blurred background + # TACTICAL_CLASS_CANCEL and TACTICAL_CHECK appears + if not self.appear(TACTICAL_CLASS_CANCEL, offset=(20, 20)) \ + and self.appear(TACTICAL_CHECK, offset=(20, 20), interval=2): self.interval_clear([POPUP_CONFIRM, POPUP_CANCEL, GET_MISSION]) if book_empty: self.device.click(BACK_ARROW) From 938d98a2430e70a5b05318609c06eb0df30a3e62 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Fri, 6 Jun 2025 01:39:18 +0800 Subject: [PATCH 4/5] Fix: handle insufficient fund in guild operation --- .../cn/guild/GUILD_OPERATION_FUND_CHECK.png | Bin 0 -> 8275 bytes module/guild/assets.py | 1 + module/guild/operations.py | 35 +++++++++++++++--- 3 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 assets/cn/guild/GUILD_OPERATION_FUND_CHECK.png diff --git a/assets/cn/guild/GUILD_OPERATION_FUND_CHECK.png b/assets/cn/guild/GUILD_OPERATION_FUND_CHECK.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5b0bad50e6e4b2b4f517e706feb8930d889bdb GIT binary patch literal 8275 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 Date: Sun, 1 Jun 2025 18:34:20 +0900 Subject: [PATCH 5/5] Add: check manjuu loading in os_mission_overview_accept --- assets/cn/handler/MANJUU_AREA.png | Bin 0 -> 2997 bytes assets/cn/handler/TEMPLATE_MANJUU.png | Bin 0 -> 600 bytes module/handler/assets.py | 2 ++ module/handler/info_handler.py | 39 ++++++++++++++++++++++++++ module/os_handler/mission.py | 6 +++- 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 assets/cn/handler/MANJUU_AREA.png create mode 100644 assets/cn/handler/TEMPLATE_MANJUU.png diff --git a/assets/cn/handler/MANJUU_AREA.png b/assets/cn/handler/MANJUU_AREA.png new file mode 100644 index 0000000000000000000000000000000000000000..93e657c733eb492087fd805145284b0b5c8d9c60 GIT binary patch literal 2997 zcmeAS@N?(olHy`uVBq!ia0y~yUFT;T;M>zfzm)yF__#jFR=mrM{W(I}^ z1~wp*kq1aHNdO5J10cbX03-ws011T#V7^AMh|z+knSd5-_Tkoo(}`HM;P(}p7GeSd zp#{Mr5O!dN;7}x53(>(n8g_I@s=!Pz3PwXP000mO0ssI2Y=lGn0006XNkleUGfesqmkvu`18y+pOIQ`VPZ5jM>x+27|mT0GXbb4v6>-c>5P^@nTMFt zS~C+PMfNaT3=0~+pFeuM{puxLWG|jPeY3S?5VPeHtX|tc`nvPu)5i<3I*rE8`|WTz zoWe3yq)rNrYlXtLL&u7RN8vITsF)^kATnj?=cNs}obtk-7;$-*p@wYEd zq#~*7N*AtI?>$^gxJ#Ngr`3{|jIn}YoCw+A+7l{O9PfR2cjZpC;MaOd0L0Bb#gVx# z7;!lOXL5u!R<>YJa7Mx(ZEA?Sp~D?n+wX(USU5asZOX_ZE1}e~z!J-~y72R;ys=Ta zS?$Im=o`gRt=adk-f~P*NqIE-Q;4&Fd#TA(p3wAzgV)av1E}7AaBcH$lFpp;{vRvt m2~Fg-fF&-jaXQ96FYXTvQUYHu^99@h0000 2: + logger.info(f'Manjuu count: {count}, waiting for manjuu to disappear') + self.wait_until_manjuu_disappear() + return True + else: + return False \ No newline at end of file diff --git a/module/os_handler/mission.py b/module/os_handler/mission.py index 35faceb43..3b911d27c 100644 --- a/module/os_handler/mission.py +++ b/module/os_handler/mission.py @@ -189,7 +189,8 @@ class MissionHandler(GlobeOperation, ZoneManager): self.os_map_goto_globe(unpin=False) # is_in_globe self.ui_click(MISSION_OVERVIEW_ENTER, check_button=MISSION_OVERVIEW_CHECK, - offset=(200, 20), retry_wait=3, skip_first_screenshot=True) + offset=(200, 20), retry_wait=3, additional=self.handle_manjuu, + skip_first_screenshot=True) # MISSION_OVERVIEW_CHECK confirm_timer = Timer(1, count=3).start() @@ -201,6 +202,9 @@ class MissionHandler(GlobeOperation, ZoneManager): else: self.device.screenshot() + if self.handle_manjuu(): + confirm_timer.reset() + continue if self.info_bar_count(): logger.info('Unable to accept missions, because reached the maximum number of missions') success = False