Update latest changes

parent 2d7b817a
...@@ -49,10 +49,24 @@ else ...@@ -49,10 +49,24 @@ else
pip install -r requirements.txt --break-system-packages pip install -r requirements.txt --break-system-packages
fi fi
# Backup MBetterDiscovery.exe if it exists
if [ -f "dist/MBetterDiscovery.exe" ]; then
echo "📦 Backing up MBetterDiscovery.exe..."
cp dist/MBetterDiscovery.exe /tmp/MBetterDiscovery.exe.backup
fi
# Run the build script # Run the build script
echo "🔨 Starting build process..." echo "🔨 Starting build process..."
python3 build.py python3 build.py
# Restore MBetterDiscovery.exe if backup exists
if [ -f "/tmp/MBetterDiscovery.exe.backup" ]; then
echo "📦 Restoring MBetterDiscovery.exe..."
mkdir -p dist
cp /tmp/MBetterDiscovery.exe.backup dist/MBetterDiscovery.exe
rm /tmp/MBetterDiscovery.exe.backup
fi
# Removed Qt platform plugins and qt.conf copying for self-contained binary # Removed Qt platform plugins and qt.conf copying for self-contained binary
echo "📦 Building self-contained binary - no external Qt files needed" echo "📦 Building self-contained binary - no external Qt files needed"
......
...@@ -21,7 +21,7 @@ if hasattr(sys, '_MEIPASS'): ...@@ -21,7 +21,7 @@ if hasattr(sys, '_MEIPASS'):
# Running in PyInstaller bundle # Running in PyInstaller bundle
qt_plugins_path = os.path.join(sys._MEIPASS, 'platforms') qt_plugins_path = os.path.join(sys._MEIPASS, 'platforms')
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_plugins_path os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_plugins_path
print(f"Set QT_QPA_PLATFORM_PLUGIN_PATH to: {qt_plugins_path}") print("Set QT_QPA_PLATFORM_PLUGIN_PATH to: {}".format(qt_plugins_path))
from mbetterclient.core.application import MbetterClientApplication from mbetterclient.core.application import MbetterClientApplication
from mbetterclient.utils.logger import setup_logging from mbetterclient.utils.logger import setup_logging
...@@ -203,6 +203,13 @@ Examples: ...@@ -203,6 +203,13 @@ Examples:
help='Configure timer delay in minutes for START_GAME_DELAYED message when START_GAME is received (default: 4 minutes)' help='Configure timer delay in minutes for START_GAME_DELAYED message when START_GAME is received (default: 4 minutes)'
) )
parser.add_argument(
'--rustdesk_id',
type=str,
default=None,
help='RustDesk ID for periodic whoami API calls (enables /api/whoami endpoint)'
)
return parser.parse_args() return parser.parse_args()
def validate_arguments(args): def validate_arguments(args):
...@@ -272,7 +279,14 @@ def main(): ...@@ -272,7 +279,14 @@ def main():
if args.db_path: if args.db_path:
settings.database_path = args.db_path settings.database_path = args.db_path
# Set RustDesk ID if provided
if args.rustdesk_id:
settings.api.rustdesk_id = args.rustdesk_id
logger.info("COMMAND LINE: Set rustdesk_id to: {}".format(args.rustdesk_id))
else:
logger.info("COMMAND LINE: No rustdesk_id provided")
# Create and initialize application # Create and initialize application
app = MbetterClientApplication(settings, start_timer=args.start_timer) app = MbetterClientApplication(settings, start_timer=args.start_timer)
......
This diff is collapsed.
...@@ -120,6 +120,9 @@ class MbetterClientApplication: ...@@ -120,6 +120,9 @@ class MbetterClientApplication:
# Update settings from database # Update settings from database
stored_settings = self.config_manager.get_settings() stored_settings = self.config_manager.get_settings()
if stored_settings: if stored_settings:
# Preserve command-line rustdesk_id before merging
command_line_rustdesk_id = getattr(self.settings.api, 'rustdesk_id', None)
# Merge runtime settings with stored settings (command line overrides database) # Merge runtime settings with stored settings (command line overrides database)
stored_settings.fullscreen = self.settings.fullscreen stored_settings.fullscreen = self.settings.fullscreen
stored_settings.web_host = self.settings.web_host stored_settings.web_host = self.settings.web_host
...@@ -131,14 +134,19 @@ class MbetterClientApplication: ...@@ -131,14 +134,19 @@ class MbetterClientApplication:
# Preserve command line Qt overlay setting # Preserve command line Qt overlay setting
stored_settings.qt.use_native_overlay = self.settings.qt.use_native_overlay stored_settings.qt.use_native_overlay = self.settings.qt.use_native_overlay
# Preserve command line SSL settings # Preserve command line SSL settings
stored_settings.web.enable_ssl = self.settings.web.enable_ssl stored_settings.web.enable_ssl = self.settings.web.enable_ssl
stored_settings.web.ssl_cert_path = self.settings.web.ssl_cert_path stored_settings.web.ssl_cert_path = self.settings.web.ssl_cert_path
stored_settings.web.ssl_key_path = self.settings.web.ssl_key_path stored_settings.web.ssl_key_path = self.settings.web.ssl_key_path
stored_settings.web.ssl_auto_generate = self.settings.web.ssl_auto_generate stored_settings.web.ssl_auto_generate = self.settings.web.ssl_auto_generate
self.settings = stored_settings self.settings = stored_settings
# Restore command-line rustdesk_id after settings merge
if command_line_rustdesk_id is not None:
self.settings.api.rustdesk_id = command_line_rustdesk_id
logger.debug("APPLICATION: Restored command-line rustdesk_id: {}".format(command_line_rustdesk_id))
# Re-sync runtime settings to component configs # Re-sync runtime settings to component configs
self.settings.qt.fullscreen = self.settings.fullscreen self.settings.qt.fullscreen = self.settings.fullscreen
......
...@@ -310,15 +310,27 @@ class OverlayWebView(QWebEngineView): ...@@ -310,15 +310,27 @@ class OverlayWebView(QWebEngineView):
def _setup_custom_scheme(self): def _setup_custom_scheme(self):
"""Setup custom URL scheme handler for overlay resources""" """Setup custom URL scheme handler for overlay resources"""
try: try:
# Register the custom scheme before installing the handler
from PyQt6.QtWebEngineCore import QWebEngineUrlScheme
overlay_scheme = QWebEngineUrlScheme(b"overlay")
overlay_scheme.setSyntax(QWebEngineUrlScheme.Syntax.HostAndPort)
overlay_scheme.setDefaultPort(0)
overlay_scheme.setFlags(QWebEngineUrlScheme.Flag.SecureScheme |
QWebEngineUrlScheme.Flag.LocalScheme |
QWebEngineUrlScheme.Flag.LocalAccessAllowed)
QWebEngineUrlScheme.registerScheme(overlay_scheme)
logger.info("Custom overlay:// URL scheme registered successfully")
# Get the page's profile # Get the page's profile
profile = self.page().profile() profile = self.page().profile()
# Create and install URL scheme handler # Create and install URL scheme handler
self.scheme_handler = OverlayUrlSchemeHandler(self) self.scheme_handler = OverlayUrlSchemeHandler(self)
profile.installUrlSchemeHandler(b"overlay", self.scheme_handler) profile.installUrlSchemeHandler(b"overlay", self.scheme_handler)
logger.info("Custom overlay:// URL scheme handler installed successfully") logger.info("Custom overlay:// URL scheme handler installed successfully")
except Exception as e: except Exception as e:
logger.error(f"Failed to setup custom URL scheme: {e}") logger.error(f"Failed to setup custom URL scheme: {e}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment