tis-anydesk icon

AnyDesk

Paquet d’installation silencieuse pour AnyDesk

7.1.1-13
Utilities
Utilities

  • package: tis-anydesk
  • name: AnyDesk
  • version: 7.1.1-13
  • categories: Utilities
  • maintainer: WAPT Team,Tranquil IT,Bertrand Lemoigne,Gaëtan Segat,Jimmy PELÉ,Clément BAZIRET
  • editor: AnyDesk Software GmbH
  • licence: proprietary_restricted,wapt_public
  • locale: all
  • target_os: redhat_based
  • impacted_process: AnyDesk
  • architecture: x64
  • signature_date:
  • size: 14.66 Mo
  • installed_size: 4.04 Mo
  • homepage : https://anydesk.com

package           : tis-anydesk
version           : 7.1.1-13
architecture      : x64
section           : base
priority          : optional
name              : AnyDesk
categories        : Utilities
maintainer        : WAPT Team,Tranquil IT,Bertrand Lemoigne,Gaëtan Segat,Jimmy PELÉ,Clément BAZIRET
description       : AnyDesk is a remote desktop application distributed by AnyDesk Software GmbH. The proprietary software program provides platform independent remote access to personal computers and other devices running the host application
depends           : 
conflicts         : 
maturity          : PROD
locale            : all
target_os         : redhat_based
min_wapt_version  : 2.3
sources           : https://anydesk.com/downloads
installed_size    : 4038720
impacted_process  : AnyDesk
description_fr    : AnyDesk est une application de bureau à distance distribuée par AnyDesk Software GmbH. Le logiciel propriétaire fournit un accès à distance indépendant de la plate-forme aux ordinateurs personnels et autres appareils exécutant l'application hôte
description_pl    : AnyDesk to aplikacja zdalnego pulpitu dystrybuowana przez AnyDesk Software GmbH. To zastrzeżone oprogramowanie zapewnia niezależny od platformy zdalny dostęp do komputerów osobistych i innych urządzeń z uruchomioną aplikacją hosta
description_de    : AnyDesk ist eine von der AnyDesk Software GmbH vertriebene Remote-Desktop-Anwendung. Das proprietäre Softwareprogramm ermöglicht einen plattformunabhängigen Fernzugriff auf Personal Computer und andere Geräte, auf denen die Host-Anwendung
description_es    : AnyDesk es una aplicación de escritorio remoto distribuida por AnyDesk Software GmbH. El programa de software propietario proporciona acceso remoto independiente de la plataforma a ordenadores personales y otros dispositivos que ejecutan la aplicación host
description_pt    : AnyDesk é uma aplicação de ambiente de trabalho remoto distribuída pela AnyDesk Software GmbH. O programa de software proprietário fornece acesso remoto independente da plataforma a computadores pessoais e outros dispositivos que executam a aplicação anfitriã
description_it    : AnyDesk è un'applicazione di desktop remoto distribuita da AnyDesk Software GmbH. Il programma software proprietario fornisce un accesso remoto indipendente dalla piattaforma ai personal computer e ad altri dispositivi che eseguono l'applicazione host
description_nl    : AnyDesk is een toepassing voor bureaublad op afstand, gedistribueerd door AnyDesk Software GmbH. Het eigen softwareprogramma biedt platformonafhankelijke toegang op afstand tot personal computers en andere apparaten waarop de hosttoepassing
description_ru    : AnyDesk - это приложение для удаленного рабочего стола, распространяемое компанией AnyDesk Software GmbH. Проприетарное программное обеспечение обеспечивает независимый от платформы удаленный доступ к персональным компьютерам и другим устройствам, на которых запущено хост-приложение
audit_schedule    : 
editor            : AnyDesk Software GmbH
keywords          : anydesk,remote,desktop,application,remote,access,personal,computers,computer
licence           : proprietary_restricted,wapt_public
homepage          : https://anydesk.com
package_uuid      : b534d3b5-db19-4d9d-b8a3-d4fb7b438eea
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://download.anydesk.com/changelog.txt
min_os_version    : 8
max_os_version    : 
icon_sha256sum    : 61e27edac9e3eeb15cdea6114a0bc2f09a150e39add65fde398c03cd322aab0e
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2025-11-04T18:29:40.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         : iT1rgAXloRR+R1Q83gB9JsCqFK/iAQF2RTaamUuXNfxmJn4NdXYgWxzgwBm0hHElLghHK084bX/lH7C7jpvzbowv8acWvhjExaoQgjDUrwS0s6DaMOhYQn9vjeovZVQpq3lK7yHgl2NqkJ+gY6jsrYZQJebypODE5PU1HflFmZLfbw8bhWqIQDBrkxgOls844ZCKx1FuQ5E9gt1EecKJz2Y1XSAtJ95UcqzIEq2eLR754ioBQoILRzqqiiKejuLJ7T1drGBWyFAfa37dZLVw5StVfHxXmKQYn5V6yxBElBybWEtrb7x1O5mdJNkdUYEN+QdHsc2bdKJsejj0bu6JYQ==

# -*- coding: utf-8 -*-
from setuphelpers import *


def install():
    bin_name = glob.glob("anydesk_*.rpm")[0]
    if get_distrib_linux() == 'fedora':
        install_yum(bin_name)
    else:
        install_rpm(bin_name)

def uninstall():
    uninstall_yum("anydesk")

# -*- coding: utf-8 -*-
from setuphelpers import *
from io import BytesIO
import gzip
import xml.etree.ElementTree as ET

RPM_NS = {
    "common": "http://linux.duke.edu/metadata/common",
    "rpm": "http://linux.duke.edu/metadata/rpm",
    "repo": "http://linux.duke.edu/metadata/repo",
}


def fetch_primary_xml_url(repo_base, proxies=None):
    repomd_url = f"{repo_base}/repodata/repomd.xml"
    repomd = wgets(repomd_url, proxies=proxies)
    if isinstance(repomd, bytes):
        repomd = repomd.decode("utf-8")

    root = ET.fromstring(repomd)
    data_primary = root.find(".//repo:data[@type='primary']", RPM_NS)
    if data_primary is None:
        error("primary metadata not found in repomd.xml")
    loc = data_primary.find("repo:location", RPM_NS)
    href = loc.attrib.get("href")
    if not href:
        error("primary location href missing in repomd.xml")
    return f"{repo_base}/{href}"


class RPMPackagesParser:

    def __init__(self, file):
        self.root = ET.fromstring(file)
        self.raw_pkg_info = self._parse()

    def _parse(self):
        out = []
        for pkg in self.root.findall("common:package", RPM_NS):
            ver = pkg.find("common:version", RPM_NS)
            fmt = pkg.find("common:format", RPM_NS)
            requires = []

            if fmt is not None:
                reqs = fmt.find("rpm:requires", RPM_NS)
                if reqs is not None:
                    for e in reqs.findall("rpm:entry", RPM_NS):
                        n = e.attrib.get("name")
                        if n:
                            requires.append(n)

            out.append({
                "name": pkg.findtext("common:name", default="", namespaces=RPM_NS),
                "arch": pkg.findtext("common:arch", default="", namespaces=RPM_NS),
                "epoch": ver.attrib.get("epoch") or "0",
                "version": ver.attrib.get("ver", ""),
                "release": ver.attrib.get("rel", ""),
                "filename": pkg.find("common:location", RPM_NS).attrib.get("href", ""),
                "summary": pkg.findtext("common:summary", default="", namespaces=RPM_NS),
                "description": pkg.findtext("common:description", default="", namespaces=RPM_NS),
                "url": pkg.findtext("common:url", default="", namespaces=RPM_NS),
                "checksum": pkg.findtext("common:checksum", default="", namespaces=RPM_NS),
                "dependencies": requires,
            })
        return out


def rpm_sort_key(p):
    return (
        int(p.get("epoch", "0") or "0"),
        Version(p.get("version", "")),
        Version(p.get("release", "0"))
    )


def get_all_dep_version_package(list_package, package_name, all_dep):
    cand = sorted([p for p in list_package if p["name"] == package_name], key=rpm_sort_key, reverse=True)
    if not cand:
        return
    pkg = cand[0]
    if pkg not in all_dep:
        all_dep.append(pkg)
        for dep in pkg.get("dependencies", []):
            get_all_dep_version_package(list_package, dep, all_dep)


def download_all_dependencies(list_package, package_name, repo_base, proxies=None):
    all_dep = []
    get_all_dep_version_package(list_package, package_name, all_dep)
    for p in all_dep:
        url = f"{repo_base}/{p['filename']}"
        fn = url.rsplit("/", 1)[-1]
        if not isfile(fn):
            print(f"Download URL is: {url}")
            wget(url, fn, proxies=proxies)
        else:
            print(f"{fn} already exists.")


def update_package():
    package_updated = False
    proxies = get_proxies_from_wapt_console() or get_proxies()
    app_name = control.name

    arch = "x86_64"
    repo_base = f"http://rpm.anydesk.com/rhel/{arch}"

    primary_url = fetch_primary_xml_url(repo_base, proxies=proxies)
    print(f"Repo primary metadata: {primary_url}")

    with gzip.open(BytesIO(wgets(primary_url, proxies=proxies))) as f:
        data = f.read().decode('utf-8')

    pkgs = RPMPackagesParser(data).raw_pkg_info
    package_name = "anydesk"

    last_pkg = sorted([p for p in pkgs if p["name"] == package_name], key=rpm_sort_key, reverse=True)[0]
    epoch, version, release = last_pkg["epoch"], last_pkg["version"], last_pkg["release"]

    print(f"Latest {app_name} version is: {version}-{release} (epoch {epoch})")
    download_all_dependencies(pkgs, package_name, repo_base, proxies)

    # Changing version of the package
    if Version(version) > Version(control.get_software_version()):
        print(f"Software version updated (from: {control.get_software_version()} to: {Version(version)})")
        package_updated = True
    else:
        print(f"Software version up-to-date ({Version(version)})")

    control.set_software_version(version)
    control.save_control_to_wapt()

    return package_updated

38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
cec871676d0e45c181121ebd7a2944423d64683ba628a2924bdbdfd36876e289 : WAPT/control
61e27edac9e3eeb15cdea6114a0bc2f09a150e39add65fde398c03cd322aab0e : WAPT/icon.png
06e4097a7a8b724247083ca8475dcd90b4b51787878794304844269f246d4642 : anydesk_7.1.1-1_x86_64.rpm
5592c923d57e88b99348fa4e7dfcaa204f0543d7d4cefcf4e15dc02a4f5c830c : luti.json
fa5b9e692e878e18a68bfd30addafd484920142bd076076e27d51d43f9c4bb91 : setup.py
a1cf85b77045995f7f5882f94e2d6f1743d3fdbb4de2a36ee7b49ac92b455c20 : update_package.py