#!/usr/bin/env bash # 02-upravy.sh – úpravy RustDesku 1.5.0 na appku „e-digiroot Podpora“ (net.edigiroot.podpora). # Začne vždy z čistého zdrojáka (git checkout), takže sa dá spúšťať opakovane. # Kľúč servera sa číta zo server/rustdesk-remote.ps1 (verejný kľúč RustDesk servera), nevypisuje sa. set -euo pipefail RD=/opt/edr/rustdesk W=/mnt/c/Apps/ecommerce_edigiroot SERVER=support.e-digiroot.net NAME="e-digiroot Podpora" APPID=net.edigiroot.podpora cd "$RD" git checkout -q -- . git -C libs/hbb_common checkout -q -- . git clean -fdq flutter/android/app/src/main/res KEY="$(grep -oP "\[string\]\\\$Key\s*=\s*'\K[^']+" "$W/server/rustdesk-remote.ps1" | head -n1)" [[ "$KEY" =~ ^[A-Za-z0-9+/]{43}=$ ]] || { echo "CHYBA: kľúč servera sa nenašiel v server/rustdesk-remote.ps1"; exit 1; } # 1) náš server a kľúč natvrdo perl -0pi -e "s|pub const RENDEZVOUS_SERVERS: &\[&str\] = &\[\"rs-ny.rustdesk.com\"\];|pub const RENDEZVOUS_SERVERS: &[&str] = &[\"$SERVER\"];|; s|pub const RS_PUB_KEY: &str = \"[^\"]+\";|pub const RS_PUB_KEY: &str = \"$KEY\";|" libs/hbb_common/src/config.rs grep -q "\"$SERVER\"" libs/hbb_common/src/config.rs # 2) pri štarte: server a kľúč sa nedajú zmeniť, pripojenie iba po kliknutí na Prijať, bez trvalého hesla perl -0pi -e 's|(fn initialize\(app_dir: &str, custom_client_config: &str\) \{\n)|$1 // e-digiroot: vlastny server, pripojenie iba po kliknuti na Prijat, bez trvaleho hesla\n {\n let mut o = config::OVERWRITE_SETTINGS.write().unwrap();\n o.insert("custom-rendezvous-server".to_owned(), config::RENDEZVOUS_SERVERS[0].to_owned());\n o.insert("key".to_owned(), config::RS_PUB_KEY.to_owned());\n o.insert("approve-mode".to_owned(), "click".to_owned());\n o.insert("verification-method".to_owned(), "use-temporary-password".to_owned());\n drop(o);\n *config::APP_NAME.write().unwrap() = "e-digiroot Podpora".to_owned();\n }\n|' src/flutter_ffi.rs grep -q 'e-digiroot: vlastny server' src/flutter_ffi.rs # 3) Android: ID balíka, názov, ikony A=flutter/android/app sed -i "s|applicationId \"com.carriez.flutter_hbb\"|applicationId \"$APPID\"|" $A/build.gradle grep -q "applicationId \"$APPID\"" $A/build.gradle sed -i "s|android:label=\"RustDesk\"|android:label=\"$NAME\"|; s|android:label=\"RustDesk Input\"|android:label=\"$NAME – ovládanie\"|" $A/src/main/AndroidManifest.xml sed -i "s|RustDesk|$NAME|; s|when RustDesk screen sharing|when $NAME screen sharing|; s|Keeps the RustDesk remote desktop|Keeps the $NAME remote desktop|" $A/src/main/res/values/strings.xml sed -i "s|#ffffff|#0c1622|" $A/src/main/res/values/*.xml cp -r "$W/android/ikony/res/." $A/src/main/res/ K=$A/src/main/kotlin/com/carriez/flutter_hbb sed -i "s|const val DEFAULT_NOTIFY_TITLE = \"RustDesk\"|const val DEFAULT_NOTIFY_TITLE = \"$NAME\"|; s|val channelName = \"RustDesk Service\"|val channelName = \"$NAME\"|; s|description = \"RustDesk Service Channel\"|description = \"$NAME\"|" $K/MainService.kt sed -i "s|\"RustDesk is Open\"|\"$NAME\"|" $K/BootReceiver.kt # 4) ID sa samo zapíše do účtu v e-shope: odkaz edigiroot-podpora://registracia?api&u&e&t z Môj účet (plugin 1.8.1) cp "$W/android/build/edigiroot.dart" flutter/lib/edigiroot.dart perl -0pi -e "s|(import 'package:flutter_hbb/models/state_model.dart';\n)|\$1import 'package:flutter_hbb/edigiroot.dart';\n|" flutter/lib/main.dart grep -q "edigiroot.dart" flutter/lib/main.dart || perl -0pi -e "s|^(import [^\n]+;\n)|\$1import 'edigiroot.dart';\n|m" flutter/lib/main.dart perl -0pi -e 's|(runApp\(App\(\)\);\n await initUniLinks\(\);\n)|$1 edrInit(); // e-digiroot\n|' flutter/lib/main.dart grep -q 'edrInit(); // e-digiroot' flutter/lib/main.dart # odkaz zachytí aj RustDesk-ov handleUriLink (Android doručí odkaz iba poslednému poslucháčovi, napr. karte Pripojiť) perl -0pi -e 's|(bool handleUriLink\(\{List\? cmdArgs, Uri\? uri, String\? uriString\}\) \{\n)|$1 if (edrSpracujOdkaz(uri: uri, uriString: uriString)) return true; // e-digiroot\n|' flutter/lib/common.dart grep -q 'edrSpracujOdkaz(uri: uri' flutter/lib/common.dart perl -0pi -e "s|^(import [^\n]+;\n)|\$1import 'package:flutter_hbb/edigiroot.dart';\n|m" flutter/lib/common.dart perl -0pi -e 's|( \n \n)|$1 \n \n \n \n \n \n \n|' $A/src/main/AndroidManifest.xml grep -q 'android:scheme="edigiroot-podpora"' $A/src/main/AndroidManifest.xml echo "úpravy hotové:" git status --short | sed 's/^/ /'