[RESOLU] Proposition script pour RustDesk

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
jlatieule
Messages : 49
Inscription : 03 juil. 2019 - 09:18

08 août 2024 - 11:11

Bonjour,


En remplacement de TeamViewer nous utilisons un serveur RustDesk accessible uniquement pour nos poste. C'est un relais privé.
Pour l'installation d'un relais privé, vous avez un super script d'installation et de mise à jour sur https://github.com/techahold/rustdeskinstall
Je dois mettre à jour l'ensemble des clients vers la nouvelle version.
Pour l'occasion j'ai créé le paquet suivant (voir code en fin du message)... l'installation s’effectue avec le format EXE : rustdesk-1.2.7-x86_64.exe

Après installation, je modifie deux options avant de relancer le service.
Cette partie n'est absolument pas optimisé et j'ai commenté ce qu'il manque
Toutefois, comme RustDesk arrive bien a s'en sortir (multiple scénario de tests)), pour l'instant je vais m'arrêter là

Il manque l'update_package, le uninstall et l'audit

Denis ou Simon, est-ce que vous pourriez vous l'approprier afin de l'ajouter dans le store pour que cela puisse être réutiliser par d'autre ?
J'ai bien sûr dans l'idée que vous serez plus à l'aise que moi pour finaliser plus proprement la partie "options" et pour gérer l'update_package (j'ai indiqué l'url à interroger)

En vous remerciant par avance

Code : Tout sélectionner

# -*- 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")


Administrateur Système et Réseaux chez Domitia Habitat
rmaurisso
Messages : 4
Inscription : 12 janv. 2021 - 17:12

14 août 2024 - 09:34

Bonjour,
Merci @jlatieule pour ce script.
En utilisant les outils externes dans wapt, est il possible d'utiliser dans arguments "rustdesk_id" ? Afin de simplifier la connexion au poste sélectionné (comme le ferait tightvnc)
Merci
jlatieule
Messages : 49
Inscription : 03 juil. 2019 - 09:18

14 août 2024 - 20:50

Pour l'instant je ne sais pas comment remonter l'ID affiché dans les logs d'installation pour alimenter wapt

Par défaut j'ai activé la connexion par adresse ip. Ça fonctionne super bien avec les outils externes wapt

Ps : rappel rgpd, pas de connexion sans l'accord de l'utilisateur. Le mot de passe permanent disponible dans les logs c'est uniquement pour de la maintenance système quand aucun utilisateur n'a ouvert de session
Administrateur Système et Réseaux chez Domitia Habitat
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1885
Inscription : 10 juil. 2014 - 23:52
Contact :

22 août 2024 - 18:05

Bonjour @jlatieule

Merci pour ta proposition

J'ai commencer a travailler sur rustdesk

Il y a 3 paquet :

tis-rustdesk-server (pour installer le serveur rustdesk sous linux ou windows)

tis-rustdesk (Installer l'agent rustdesk sur linux window ou mac sans configuration)

tis-rustdesk-config-template (configure l'agent rustdesk, nécessite de lancer un update package pour donner la configuration)

Le password random est remonté de manière chiffrée.

On va voir pour faire une petite integration native dans le clique droit pour simplifier l'usage ;)
jlatieule
Messages : 49
Inscription : 03 juil. 2019 - 09:18

22 août 2024 - 18:44

Excellent Simon, je suis très curieux de voir la partie serveur. Chez nous on a du faire quelques recherches pour optimiser l'installation sur Debian

De retour de congé je peut te passer mon mode opératoire sur l'installation serveur, peut-être que tu trouvera des Tips sur son installation... indique moi sur quel moyen de communication

Ps : quand j'étais TICE au collège Victor Hugo de Narbonne je contribuait sur le forum sous le pseudonyme percherie, j'imagine que tu te rappel de moi et comme à l'époque je crois sincèrement au partage pour faire avancer le collectif
Administrateur Système et Réseaux chez Domitia Habitat
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1885
Inscription : 10 juil. 2014 - 23:52
Contact :

23 août 2024 - 09:57

jlatieule a écrit : 22 août 2024 - 18:44 Ps : quand j'étais TICE au collège Victor Hugo de Narbonne je contribuait sur le forum sous le pseudonyme percherie, j'imagine que tu te rappel de moi et comme à l'époque je crois sincèrement au partage pour faire avancer le collectif
Évidement que je me souviens ;), si tu passe sur Nantes passe nous voir ça me ferais plaisir (je suis pas souvent sur Narbonne :D )
jlatieule a écrit : 22 août 2024 - 18:44 je suis très curieux de voir la partie serveur. Chez nous on a du faire quelques recherches pour optimiser l'installation sur Debian
Rien d'extraordinaire, J'ai juste reproduit le script en python présent sur leur doc et présent ici : https://github.com/techahold/rustdeskin ... install.sh

Et pour le serveur windows j'ai juste remplacer nssm par angelize

Et pour le client rustdesk macos c'est pas foufou dans mes test, il faudra surement revenir dessus.
rmaurisso
Messages : 4
Inscription : 12 janv. 2021 - 17:12

05 sept. 2024 - 16:10

Bonjour,
Merci à vous deux.
Fonctionne bien pour les outils externes avec l'ip et pour le template ;)
Avatar de l’utilisateur
dcardon
Expert WAPT
Messages : 1516
Inscription : 18 juin 2014 - 09:58
Localisation : Saint Sébastien sur Loire
Contact :

09 sept. 2024 - 15:46

Bonjour Régis,

merci pour le retour :-) Je passe le topic en résolu

Cordialement,

Denis
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
Verrouillé