#!/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/^/ /'