In sostituzione di TeamViewer, utilizziamo un server RustDesk accessibile solo alle nostre postazioni di lavoro. È un relay privato.
Per installare un relay privato, hai un ottimo script di installazione e aggiornamento su https://github.com/techahold/rustdeskinstall
Devo aggiornare tutti i client alla nuova versione.
A questo scopo ho creato il seguente pacchetto (vedi codice alla fine del messaggio)... l'installazione avviene tramite il formato EXE: rustdesk-1.2.7-x86_64.exe
Dopo l'installazione, modifico due opzioni prima di riavviare il servizio.
Questa sezione non è per niente ottimizzata e ho commentato cosa manca
Tuttavia, poiché RustDesk lo gestisce bene (molteplici scenari di test), per ora mi fermerò qui
Mancano i file update_package, uninstall e audit
Denis o Simon, potreste prenderne possesso e aggiungerlo allo store in modo che possa essere riutilizzato da altri?
Immagino che sarai più a tuo agio di me nel finalizzare la sezione "opzioni" in modo più ordinato e nel gestire update_package (ho indicato l'URL da interrogare)
Grazie in anticipo
Codice: Seleziona tutto
# -*- coding: utf-8 -*-
from setuphelpers import *
import time, string, secrets
r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()
"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls
# Création d'un mot de passe aléatoire
alphabet = string.ascii_letters + string.digits
rustdesk_pw = ''.join(secrets.choice(alphabet) for i in range(12))
# Configuration réseau pour RustDesk à importer
# Si vide ou invalide, la configuration réseau restera inchangée
rustdesk_cfg = "METTEZ-VOTRE-CONFIG-ENTRE-LES-GUILLEMETS"
def install():
# Récupération de l'exécutable
bin_name = glob.glob("rustdesk-*.exe")[0]
# Désactivé car pas de détection de fin d'installation
## install_exe_if_needed(
## bin_name,
## silentflags="--silent-install",
## key="RustDesk",
## min_version=control.get_software_version(),
## )
# Méthode manuelle
# Si n'est pas installé ou version est inférieure à celle du paquet
if ( not installed_softwares ('rustdesk') or
Version(installed_softwares('rustdesk')[0]["version"]) < Version(control['version'].split('-',1)[0]) ):
print("Installation de %s %s" % ( control['name'], control['version'].split('-',1)[0] ) )
# Timeout pour sortir sans erreur... ajouter une pause de 10s si on n'utilise plus cette méthode
run_notfatal( '%s --silent-install' % (bin_name), timeout=15 )
else:
print("%s %s est déjà installé" % ( control['name'], control['version'].split('-',1)[0] ) )
# Récupération du dossier d'installation
software = installed_softwares ('rustdesk')
install_location = software[0]["install_location"]
# Exécution ou installation du service
if service_installed ("rustdesk"):
if not service_is_running ("rustdesk"):
print ('Démarrage du service')
service_start('rustdesk')
else:
print ("Installation du service RustDesk")
run_notfatal( '"%s\\rustdesk.exe" --install-service -wait -Verbose' % (install_location), timeout = 20 )
print("Patientez quelques secondes avant que l'installation se poursuive")
time.sleep(10)
print("Application de la configuration réseau")
run_notfatal( '"%s\\rustdesk.exe" --config %s' % (install_location, rustdesk_cfg) )
print("Définition d'un mot de passe permanent aléatoire")
run( '"%s\\rustdesk.exe" --password %s' % (install_location, rustdesk_pw) )
# ID de RustDesk
rustdesk_id = run_notfatal( '"%s\\rustdesk.exe" --get-id' % (install_location) )
# Arrêt du service Rustdesk pour modifications des options
if service_installed("rustdesk"):
if service_is_running("rustdesk"):
print("Arrêt du service Rustdesk")
service_stop("rustdesk")
# Ajout d'option personnalisé à la configuration
# inifile_writestring ne peut pas être utiliser suite à mauvaise en-tête dans le fichier
# En cas de ligne en doublon dans le fichier RustDesk2.toml, les dernières seront prise en compte... mais pas toujours !!!
# Point d'amélioration :
# Supprimer les fichier %appdata%\RustDesk\config de tous les profile
# Chercher et remplacer les chaînes concernée
# Si absent, créer les chaînes au lieu de le faire systématiquement
toml = makepath("c:", "Windows", "ServiceProfiles", "LocalService", "AppData", "Roaming", "RustDesk", "config", "RustDesk2.toml")
f = open( toml, 'a')
f.write("\n" + "direct-server = 'Y'")
f.write("\n" + "direct-access-port = '21118'")
f.close
# Redémarrage du service Rustdesk
if service_installed("rustdesk"):
if service_is_stopped("rustdesk"):
print("Démarrage du service RustDesk")
service_start("rustdesk")
else:
print ("Installation du service RustDesk")
run_notfatal( '"%s\\rustdesk.exe" --install-service -wait -Verbose' % (install_location), timeout = 20 )
# Retour sur la console de l'ID et du mot de passe permanent
print ( "-------------------" )
print ( "ID RustDesk : %s" % rustdesk_id )
print ( "Mot de passe : %s" % rustdesk_pw )
print ( "-------------------" )
def session_setup():
# Créer le session_setup
def update_package():
# Créer l'update package
# curl latest sur https://www.github.com//rustdesk/rustdesk/releases/latest
# fichier lastest avec $RDLATEST sur https://github.com/rustdesk/rustdesk/releases/download/$RDLATEST/rustdesk-$RDLATEST-x86_64.exe
def uninstall():
# Créer l'uninstall
def audit():
# Créer l'audit
# Vérifier si service fonctionne
# Vérifier configuration dans makepath("c:", "Windows", "ServiceProfiles", "LocalService", "AppData", "Roaming", "RustDesk", "config", "RustDesk2.toml")
