commit 29eacb7f1b48379f0980e46e70f9fd881daeb591 Author: pcosson Date: Mon Mar 4 15:49:49 2024 +0100 first commit diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..f1c20cc --- /dev/null +++ b/setup.py @@ -0,0 +1,120 @@ +# -*- coding: utf-8 -*- +from setuphelpers import * +import shutil +import re +import subprocess +import string +from waptcrypto import * +import random +import platform +import json + + +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 +#uninstallstring='"C:\Program Files\RustDesk\RustDesk.exe" --uninstall' + +def update_package(): + # Declaring local variables + package_updated = False + proxies = get_proxies() + if not proxies: + proxies = get_proxies_from_wapt_console() + api_url = "https://api.github.com/repos/rustdesk/rustdesk/releases/latest" + download_dict = { + "windows-all": "x86_64.exe", + "windows-x64": "x86_64.exe", + "windows-x86": "x86_64.exe", + } + + # Getting latest version information from official sources + print("API used is: %s" % api_url) + json_load = json.loads(wgets(api_url, proxies=proxies)) + for to_download in json_load["assets"]: + if download_dict[f"{control.target_os}-{control.architecture}"] in to_download["name"]: + download_url = to_download["browser_download_url"] + newversion = json_load["tag_name"] + print (newversion) + latest_bin = to_download["name"] + break + + # Downloading latest binaries + print("Latest %s version is: %s" % (control.name, newversion)) + print("Download URL is: %s" % download_url) + if not isfile(latest_bin): + print("Downloading: %s" % latest_bin) + wget(download_url, latest_bin, proxies=proxies) + else: + print("Binary is present: %s" % latest_bin) + + # Checking version from file + version_from_file = get_version_from_binary(latest_bin) + print (version_from_file) + if Version(version_from_file) != Version(newversion) and version_from_file != "": + print("Changing version to the version number of the binary") + os.rename(latest_bin, latest_bin.replace(newversion, version_from_file)) + else: + print("Binary file version corresponds to online version") + + # Changing version of the package + if Version(newversion) > Version(control.get_software_version()): + print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(newversion))) + package_updated = True + else: + print("Software version up-to-date (%s)" % Version(newversion)) + control.set_software_version(newversion) + control.save_control_to_wapt() + + # Deleting outdated binaries + remove_outdated_binaries(newversion) + + # Validating update-package-sources + return package_updated + +def install(): + bin_name = glob.glob("rustdesk-*.exe")[0] + # préraration du dossier de config + destdir = makepath('C:', 'Windows', 'ServiceProfiles', 'LocalService', 'AppData', 'Roaming', 'RustDesk', 'config') + + if isdir(destdir): + print("Config folder exist") + + else: + print("Create Config folder") + mkdirs(destdir) + + shutil.copy ("RustDesk2.toml", "C:/Windows/ServiceProfiles/LocalService/AppData/Roaming/RustDesk/config") + + # Installing the software + print("Installing: ", bin_name) + install_exe_if_needed(bin_name, + silentflags='--silent-install', + min_version=control.get_software_version(), + ) + +def uninstall(): + run_notfatal(r'"C:\Program Files\RustDesk\RustDesk.exe" --uninstall') + remove_tree(r'C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk', ignore_errors=True,) + +def audit(): + def get_rustdesk_id(): + # Run the command and capture its output + result = subprocess.run(['C:\\Program Files\\RustDesk\\rustdesk.exe', '--get-id'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) + # Check if the command was successful + if result.returncode == 0: + # Store the output in a variable + rustdesk_id = result.stdout + final_id = rustdesk_id.rstrip() + # Print the output for verification + print(final_id) + else: + # If there was an error, print the error message + print("Error:", result.stderr) + return final_id + WAPT.write_audit_data("RustDesk", "id", get_rustdesk_id(), max_count=3) + return "OK" + +