[RISOLTO] Proposta di script per RustDesk

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
jlatieule
Messaggi: 59
Registrazione: 3 luglio 2019 - 9:18

8 agosto 2024 - 11:11

Buongiorno,


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


Amministratore di sistema e di rete presso Domitia Habitat
rmaurisso
Messaggi: 4
Registrazione: 12 gennaio 2021 - 17:12

14 agosto 2024 - 09:34

Ciao,
grazie @jlatieule per questo script.
Quando si utilizzano strumenti esterni in wapt, è possibile usare "rustdesk_id" come argomento? Questo semplificherebbe la connessione al computer selezionato (come farebbe TightVNC).
Grazie.
jlatieule
Messaggi: 59
Registrazione: 3 luglio 2019 - 9:18

14 agosto 2024 - 20:50

Al momento non so come recuperare l'ID visualizzato nei log di installazione per inserirlo in wapt.

Di default, ho abilitato l'accesso tramite indirizzo IP. Funziona perfettamente con strumenti wapt esterni.

P.S.: Promemoria GDPR: nessuna connessione senza il consenso dell'utente. La password permanente disponibile nei log serve solo per la manutenzione del sistema quando nessun utente è connesso.
Amministratore di sistema e di rete presso Domitia Habitat
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

22 agosto 2024 - 18:05

Ciao @jlatieule,

grazie per il tuo suggerimento.

Ho iniziato a lavorare su RustDesk.

Ci sono tre pacchetti:

tis-rustdesk-server (per installare il server RustDesk su Linux o Windows)

, tis-rustdesk (per installare l'agente RustDesk su Linux, Windows o Mac senza configurazione)

e tis-rustdesk-config-template (configura l'agente RustDesk; richiede l'esecuzione di un pacchetto di aggiornamento per fornire la configurazione).

La password casuale viene trasmessa in forma crittografata.

Valuteremo l'aggiunta di una piccola integrazione nativa al menu contestuale (clic destro) per semplificarne l'utilizzo. ;)
jlatieule
Messaggi: 59
Registrazione: 3 luglio 2019 - 9:18

22 agosto 2024 - 18:44

Ottimo, Simon! Sono molto curioso di vedere la parte server. Abbiamo dovuto fare delle ricerche per ottimizzare l'installazione su Debian.

Quando torno dalle vacanze, posso inviarti la procedura di installazione del server; magari troverai qualche spunto utile per configurarlo... fammi sapere quale metodo di comunicazione preferisci.

PS: Quando lavoravo come tecnico informatico alla scuola media Victor Hugo di Narbonne, contribuivo al forum con lo pseudonimo di "percherie". Immagino che ti ricordi di me e, come allora, credo sinceramente che la condivisione sia fondamentale per il progresso della comunità.
Amministratore di sistema e di rete presso Domitia Habitat
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

23 agosto 2024 - 09:57

jlatieule ha scritto: 22 agosto 2024 - 18:44 PS: Quando ero specialista ICT presso la scuola media Victor Hugo di Narbonne, contribuivo al forum con lo pseudonimo percherie. Immagino che vi ricordiate di me e, come allora, credo sinceramente nella condivisione per far progredire la collettività.
Certo che mi ricordo ;)Se mai vi trovate a Nantes, venite a trovarci, mi farebbe molto piacere (non vado spesso a Narbonne) :D )
jlatieule ha scritto: 22 agosto 2024 - 18:44 Sono molto curioso di vedere il lato server. Abbiamo dovuto fare delle ricerche per ottimizzare l'installazione su Debian.
Niente di straordinario, ho solo riprodotto lo script Python che si trova nella loro documentazione e qui: https://github.com/techahold/rustdeskin ... install.sh

E per il server Windows, ho appena sostituito nssm con angelizzare

E per quanto riguarda il client Rustdesk per Mac, non è stato un granché nei miei test, probabilmente dovremo tornarci sopra.
rmaurisso
Messaggi: 4
Registrazione: 12 gennaio 2021 - 17:12

5 settembre 2024 - 16:10

Ciao,
grazie a entrambi.
Funziona bene sia per gli strumenti esterni con l'indirizzo IP che per il template. ;)
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

9 settembre 2024 - 15:46

Ciao Régis,

grazie per il feedback. :-) Contrassegno la discussione come risolta.

Cordiali saluti,

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
Bloccato