#!/bin/bash # Micro-System - seuls les quatre reglages reseau sont modifies. set -euo pipefail umask 077 check_only=0 if [ "${1:-}" = '--check' ]; then check_only=1; shift; fi if [ "$#" -gt 1 ]; then echo 'Usage: sudo bash script.sh [--check] [chemin-rustdesk]' >&2; exit 1; fi if [ "$EUID" -ne 0 ]; then echo 'Relancez avec sudo pour joindre le service RustDesk installe.' >&2; exit 1; fi if [ "$#" -eq 1 ]; then rd="$1" elif [ "$(uname -s)" = Darwin ]; then rd=/Applications/RustDesk.app/Contents/MacOS/RustDesk else rd="$(command -v rustdesk || true)"; fi if [ -z "$rd" ] || [ ! -x "$rd" ]; then echo 'RustDesk installe est introuvable. Installez-le ou utilisez l import par presse-papiers.' >&2; exit 1; fi keys=('custom-rendezvous-server' 'relay-server' 'api-server' 'key') expected=('rustdesk.micro-system.fr:21116' 'rustdesk.micro-system.fr:21117' 'https://rustdesk.micro-system.fr' '9hi5ib5Iq8Ceuwx9V28e36RvDp2gwd49NWlcDj7Qv0s=') previous=() different=0 read_option() { local value value="$("$rd" --option "$1")" || return 1 case "$value" in *required*|*disabled*|*error*|*failed*) echo 'Lecture des reglages impossible. Ouvrez RustDesk et utilisez l import manuel.' >&2; return 1;; esac printf '%s' "$value" } for i in 0 1 2 3; do previous[$i]="$(read_option "${keys[$i]}")" if [ "${previous[$i]}" = "${expected[$i]}" ]; then printf '%s: conforme\n' "${keys[$i]}" else printf '%s: a corriger\n' "${keys[$i]}"; different=1; fi done if [ "$check_only" -eq 1 ]; then [ "$different" -eq 0 ] || exit 2; exit 0; fi if [ "$different" -eq 0 ]; then echo 'Configuration deja conforme. Aucun changement.'; exit 0; fi echo 'Changer le serveur peut couper cette assistance. Gardez une personne sur place ou un autre acces.' echo 'Aucun redemarrage automatique ne sera force.' printf 'Tapez APPLIQUER pour corriger les quatre reglages reseau : ' read -r answer if [ "$answer" != APPLIQUER ]; then echo 'Annule, aucun changement.'; exit 0; fi backup="$(mktemp -d /var/tmp/Micro-System-RustDesk.XXXXXXXX)" { printf '#!/bin/bash\nset -euo pipefail\n' printf '[ "$EUID" -eq 0 ] || { echo "Relancer avec sudo"; exit 1; }\n' for i in 0 1 2 3; do printf '%q --option %q %q\n' "$rd" "${keys[$i]}" "${previous[$i]}"; done printf 'echo "Anciens parametres reappliques. Verifiez la connexion."\n' } > "$backup/retablir-reseau.sh" printf 'Sauvegarde reseau : %s\n' "$backup/retablir-reseau.sh" echo 'Application dans 10 secondes...' sleep 10 "$rd" --config '0nI9MHM2F1NqR0YsdlT5QDZ3dmMwRkdSZzMlhjMWlDe3VXZDhTcJVjYpVTaoljI6ISeltmIsIicm5SblR3c5NXLvJ3Yp1mLrNXZkR3c1J3LvozcwRHdoJiOikGchJCLicTMxEjM6InZu0WZ0NXez1ybyNWat5yazVGZ0NXdyJiOikXYsVmciwiI2ETMxIjOyZmLtVGdzl3ct8mcjlWbus2clRGdzVnciojI0N3boJye' sleep 2 for i in 0 1 2 3; do if [ "$(read_option "${keys[$i]}")" != "${expected[$i]}" ]; then printf 'Configuration non confirmee pour %s. Sauvegarde : %s\n' "${keys[$i]}" "$backup" >&2 exit 1 fi done echo 'Les quatre reglages reseau ont ete relus et sont conformes. Testez maintenant la connexion Web.' echo 'Si necessaire, relancez RustDesk apres avoir termine cette assistance.'