tis-rustdesk-config-template icon

RustDesk Config

Paquet d’installation silencieuse pour RustDesk Config

28
Utilities
Utilities

Procédure de configuration :

Trois paquets sont nécessaires pour faire fonctionner RustDesk au travers de la console WAPT. tis-rustdesk , tis-rustdesk-server et tis-rustdesk-config-template

tis-rustdesk-server

https://wapt.tranquil.it/store/fr/tis-rustdesk-server

  • Installer ce paquet sur votre serveur RustDesk.
  • Une fois installé, se rendre dans les données d'audit de la machine et récupérer celle du paquet "tis-rustdesk-server".
  • Récupérer la clée "rustdesk_cfg" et la copier.

tis-rustdesk-config-template

https://wapt.tranquil.it/store/fr/tis-rustdesk-config-template

  • Télécharger le paquet "tis-rustdesk-config-template".
  • Dépôt Privé > "tis-rustdesk-config-template" > clic-droit > lancer l'update_package.
  • Cliquer sur OK dans le message indiquant le lancement de la fonction update-package().
  • Une fois la fenêtre présente, Cocher "uploader directement", Sélectionner une maturité de paquet, noter votre préfixe de paquet et cocher "incémenter la version du paquet".
  • Cliquer sur "Lancer l'update-package pour les paquets sélectionnés".
  • Renseigner la clée "rustdesk_cfg" > Cliquer sur "Upload du paquet".
  • Installer ce nouveau paquet sur les postes clients.

Procédure d'installation sur les postes clients :

  • Installer sur les machines client le paquet tis-rustdesk ( https://wapt.tranquil.it/store/en/tis-rustdesk ).
  • Installer le paquet de configuration de RustDesk personnalisé par vos soins.
  • Lancer la console WAPT
  • Sélectionner dans l'inventaire, la machine à piloter en PMAD > Clic-droit "Connect via RustDesk"

⚠️ Il est nécessaire que la machine ayant la console WAPT ai le paquet Rustdesk ainsi que le paquet de configuration installé ⚠️

  • package: tis-rustdesk-config-template
  • name: RustDesk Config
  • version: 28
  • categories: Utilities
  • maintainer: WAPT Team,Tranquil IT
  • locale: all
  • target_os: all
  • architecture: all
  • signature_date:
  • size: 9.55 Ko
  • homepage : https://rustdesk.com/
  • depends:

package           : tis-rustdesk-config-template
version           : 28
architecture      : all
section           : base
priority          : optional
name              : RustDesk Config
categories        : Utilities
maintainer        : WAPT Team,Tranquil IT
description       : Config for RustDesk
depends           : tis-rustdesk
conflicts         : 
maturity          : PROD
locale            : all
target_os         : all
min_wapt_version  : 2.3
sources           : 
installed_size    : 
impacted_process  : 
description_fr    : Config rustdesk
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 30d
editor            : 
keywords          : RustDesk
licence           : 
homepage          : https://rustdesk.com/
package_uuid      : 8eb44570-336c-4024-9d5f-59c7242d0961
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://github.com/rustdesk/rustdesk/releases
min_os_version    : 
max_os_version    : 
icon_sha256sum    : 2435ab1227e19048fc0d782821cc7258a41b69dc1e22914aedddd288a38b6ccc
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2025-11-14T14:01:33.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature         : xwndoSZEEvP+NDTjGbaNKn5UYGSDzhy7E8sxQGxQRdm9T6eVcJWlTI/JRG/IyBmgD++pyfNmPXqPWW1c+JueeD7crjRefpKoOdQVhLi/FdTirSWsYd5Rjzw79DmFg6z8Y+YPX9/HS+ZtGnutb4yiBvMqj/C65WkbcBLEo/q1zc2azDuy3HWNRY6rRp2cgtzmHzOVUA/NgbgUjK+TyJgxdDNux6AQ0ojcdtUgLt7z9axZLsP2PDth8Qh88CCWeRg6bgoeVDMRbtJSxw1s28eZftQ6go11bKypN+sLtenyGiOTh4eg5BR7rrsCmnAaUpTljXc1tE6qtbXiWmhDCl95GQ==

# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import string, secrets
import platform
import json
import base64


if platform.system() == 'Windows':
    if uninstall_key_exists('RustDesk'):
        RustDeskBin = makepath(install_location('RustDesk'),'rustdesk.exe')
    dest_rustdesk_toml =  makepath(systemdrive, r"Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config")
elif platform.system() == 'Darwin':
    RustDeskBin = "/Applications/RustDesk.app/Contents/MacOS/RustDesk"
else:
    RustDeskBin = "/usr/bin/rustdesk"
    dest_rustdesk_toml =  "/root/.config/rustdesk/RustDesk2.toml"

def install():

    package_rustdesk_toml = makepath(basedir, 'RustDesk2.toml')
    if isfile(package_rustdesk_toml):
        if service_is_running("rustdesk"):
            service_stop("rustdesk")
        filecopyto(package_rustdesk_toml, dest_rustdesk_toml)
    else:
        rustdesk_cfg = open(makepath(basedir, 'rustdesk.cfg')).read()
        run_notfatal('"%s" --config %s' % (RustDeskBin, rustdesk_cfg))
    
    alphabet = string.ascii_letters + string.digits
    rustdesk_pw = ''.join(secrets.choice(alphabet) for _ in range(12))

    run('"%s" --password %s' % (RustDeskBin, rustdesk_pw))

    if platform.system() == 'Windows':
        if service_is_running("rustdesk"):
            service_stop("rustdesk")
        service_start("rustdesk")

    elif platform.system() == 'Darwin':
        print('todo')
    else:
        systemd_restart_service('rustdesk')

def audit():
    rustdesk_id = run('"%s" --get-id' % RustDeskBin)
    if rustdesk_id.endswith('\n'):
        rustdesk_id = rustdesk_id.split('\n')[-2]

    alphabet = string.ascii_letters + string.digits
    rustdesk_pw = ''.join(secrets.choice(alphabet) for i in range(12))
    run('"%s" --password %s' % (RustDeskBin, rustdesk_pw))

    WAPT.write_audit_data_if_changed("rustdesk", 'rustdesk-id', rustdesk_id, max_count=365)
    WAPT.write_audit_data_if_changed("rustdesk", 'password_encryption', rsa_encrypted_data_str(rustdesk_pw, WAPT.public_certs_dir), max_count=365)
    
    return "OK"

def encode_rustdesk_config(config):
    rustdesk_list = list(base64.b64encode(json.dumps(config, separators=(',', ':')).encode('utf-8')).decode('utf-8').replace('=',''))
    rustdesk_list.reverse()
    return ''.join(rustdesk_list)

def update_package():

    old_cfg = open('rustdesk.cfg').read() if isfile('rustdesk.cfg') else ''
    old_toml = open('RustDesk2.toml').read() if isfile('RustDesk2.toml') else """
rendezvous_server = 'srvwapt.tranquil.it:21116'
nat_type = 1
serial = 0
unlock_pin = ''

[options]
custom-rendezvous-server = 'srvwapt.tranquil.it'
key = 'bForncTm9zFiZQ6BDv1H2FHtv6YkmqkwdRq7xV7c5U8='
av1-test = 'Y'
relay-server = 'srvwapt.tranquil.it'
"""
        
    if not params.get("install_with_luti", False):
        from waptguihelper import message_dialog, memo_dialog, input_dialog, MB_YESNO, MB_ICONQUESTION, ID_YES

        # CFG config from waptconsole audit data
        if message_dialog("RUSTDESK Config", "Do you have a cfg config / file?", MB_YESNO + MB_ICONQUESTION) == ID_YES:
            cfg_input = memo_dialog("RUSTDESK Config", "Paste your rustdesk CFG config from the 'Audit data' of your host server", old_cfg)
            with open('rustdesk.cfg', 'w') as f:
                f.write(cfg_input)

        # Allow user to use TOML file
        elif message_dialog("RUSTDESK Config", "Do you have a TOML config file?", MB_YESNO + MB_ICONQUESTION) == ID_YES:
            toml_input = memo_dialog("RUSTDESK Config", "Paste your rustdesk TOML config", old_toml)
            toml_input = "\n".join([line for line in toml_input.splitlines() if line.strip()])
            with open('RustDesk2.toml', 'w') as f:
                f.write(toml_input)

        else:
            conf = {"api": ""}
            conf['host'] = input_dialog('Host', 'Please give ip or dns name of HOST rustdesk server :', 'rustdesk.mydomain.lan')
            conf['relay'] = input_dialog('Host', 'Please give ip or dns name of RELAY rustdesk server :', conf['host'])
            conf['key'] = input_dialog('Host', 'Please give the public key of the rustdesk server (content of the file /opt/rustdesk/*.pub) :', '')
            with open('rustdesk.cfg', 'w') as f:
                f.write( encode_rustdesk_config(conf))

        control.package = control.package.replace('-template', '')
        control.save_control_to_wapt()

f0744b62dfa39063edc124ff7f337c6a97de94831cc5b47698b05696bb8c044f : WAPT/README.md
265af39b6382c184830ca3b5fe0e04dd19935c1dd437b944ca9d7cb43c4a905a : WAPT/README_fr.md
38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
6c1c6ac1f6c6b2c271b197904b65c17b67d4e6a0959f84bcffecba1ee8433c98 : WAPT/control
2435ab1227e19048fc0d782821cc7258a41b69dc1e22914aedddd288a38b6ccc : WAPT/icon.png
313789e2bd05ebb8281e3f6b6e68f116104331f7ff4599086a42c2e9ec37fb96 : luti.json
14b45dfcc6a7226d08d7ec7889b087eea2e9fade9f1ef151e6e8e7a59a81fc29 : setup.py