- package: tis-signal-desktop
- name: Signal
- version: 7.62.0-5
- categories: Messaging
- maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ,Flavien SCHELFAUT
- editor: Signal Foundation,Signal Messenger LLC
- licence: GPLv3
- locale: all
- target_os: debian_based
- impacted_process: signal
- architecture: x64
- signature_date:
- size: 108.47 Mo
- homepage : https://signal.org/
package : tis-signal-desktop
version : 7.62.0-5
architecture : x64
section : base
priority : optional
name : Signal
categories : Messaging
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Flavien SCHELFAUT
description : Signal is a cross-platform encrypted messaging service. It uses the Internet to send one-to-one and group messages, which can include files, voice notes, images and videos.
depends :
conflicts :
maturity : PROD
locale : all
target_os : debian_based
min_wapt_version : 2.1
sources : https://signal.org/download/
installed_size :
impacted_process : signal
description_fr : Signal permet de communiquer (appels vocaux et vidéo, messages texte ou médias) de façon chiffrée et sécurisée.
description_pl : Signal to wieloplatformowa usługa szyfrowania wiadomości. Wykorzystuje Internet do wysyłania wiadomości od jednego do drugiego i grupowych, które mogą zawierać pliki, notatki głosowe, obrazy i filmy
description_de : Signal ist ein plattformübergreifender verschlüsselter Nachrichtendienst. Er nutzt das Internet, um Einzel- und Gruppennachrichten zu versenden, die Dateien, Sprachnotizen, Bilder und Videos enthalten können
description_es : Signal es un servicio de mensajería encriptada multiplataforma. Utiliza Internet para enviar mensajes uno a uno y en grupo, que pueden incluir archivos, notas de voz, imágenes y vídeos
description_pt : O sinal é um serviço de mensagens encriptadas multiplataforma. Utiliza a Internet para enviar mensagens individuais e de grupo, que podem incluir ficheiros, notas de voz, imagens e vídeos
description_it : Signal è un servizio di messaggistica criptata multipiattaforma. Utilizza Internet per inviare messaggi individuali e di gruppo, che possono includere file, note vocali, immagini e video
description_nl : Signal is een platformonafhankelijke versleutelde berichtendienst. Het gebruikt het internet om één-op-één-berichten en groepsberichten te versturen, die bestanden, spraaknotities, afbeeldingen en video's kunnen bevatten
description_ru : Signal - это кросс-платформенная служба обмена зашифрованными сообщениями. Он использует Интернет для отправки индивидуальных и групповых сообщений, которые могут включать файлы, голосовые заметки, изображения и видео
audit_schedule :
editor : Signal Foundation,Signal Messenger LLC
keywords :
licence : GPLv3
homepage : https://signal.org/
package_uuid : 2264808b-19a8-4e7a-90bd-15a48f696a3c
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version :
max_os_version :
icon_sha256sum : 3adb886fd11d1ac878e24c20600a8c65721098a0607e1723638e5719c9805539
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date : 2025-07-22T00:00:51.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 : a073ARPcAmS9TbILINbcMUZwGMjuFdTVDF7QhtgPQ9+CtO5sNLc1BQHlXY5VKWg+2xxK1Hbqx3nvquDhDt7wpB9LLzEwvTVp7ktDPNfIJCiJJRCgQeP2Txmv3r5dUkbi8xIlTo3bx3cwuewK6r2MRqxgjd+usTDDamIUb+DBoJ30/kiD1SJ+tfZzyua4sLB++aA7SjWaAoR1j0toKacMCB0dfUdSC5AAC890m3gW4w6cx6fZn9gTcobhrLdpnfcSkB07bJBuFVUivy6zZWEzWg2GSFCUvSyztfpF6xT4PSYHzdaEeOS32KUpuGK8JGpGaoS6V9JCiVBX72hhOTqiSg==
# -*- coding: utf-8 -*-
from setuphelpers import *
def install():
deb_file = glob.glob('signal-desktop*.deb')[0]
install_deb(deb_file)
def uninstall():
uninstall_apt("signal-desktop", autoremove=True)
# -*- coding: utf-8 -*-
from setuphelpers import *
from io import BytesIO
import gzip
import os
import re
class DebianPackagesParser:
def __init__(self, file):
file_text = self.__read_input(file)
file_text = self.__remove_pgp_key(file_text)
packages = file_text.split("\n\n")
self.raw_pkg_info = []
if len(packages[0]):
self.raw_pkg_info = [self.__get_raw_info(pkg) for pkg in packages]
def __read_input(self, input_obj):
"""Ensures valid input type"""
if type(input_obj) is not str:
raise TypeError("input must be string or string path to file")
elif os.path.exists(os.path.abspath(input_obj)):
with open(input_obj, "r", encoding="utf8") as f:
file_text = f.read().strip()
return file_text
else:
return input_obj.strip()
def __remove_pgp_key(self, text):
gpg_regex = re.compile(r"^-----BEGIN PGP PUBLIC KEY BLOCK-----[a-zA-Z\d\n\/.:+= ]+-----END PGP PUBLIC KEY BLOCK-----$", flags=re.MULTILINE)
return re.sub(gpg_regex, '', text)
def __get_raw_info(self, text):
"""Parses a Debian control file and returns raw dictionary"""
split_regex = re.compile(r"^[A-Za-z0-9-]+:\s", flags=re.MULTILINE)
keys = [key[:-2].lower() for key in split_regex.findall(text)]
values = [value.strip() for value in re.split(split_regex, text)[1:]]
if values:
return dict(zip(keys, values))
else:
raise ValueError("file or text don't match Debian Control File schema")
def get_all_dep_version_package(list_package, package_name, all_dep):
"""Recursively get all dependencies of a given package."""
# Get the latest version of the package
last_package = sorted([u for u in list_package if u['package'] == package_name],
key=lambda p: Version(p['version']), reverse=True)
if not last_package:
return # Exit if the package is not found
last_package = last_package[0]
# Add the last package to the dependencies list
if last_package not in all_dep:
all_dep.append(last_package)
# Parse the dependencies
dependencies = last_package.get('depends', '').split(',')
for dep_group in dependencies:
dep_candidates = dep_group.split('|')
# Pick the first available candidate
for dep in dep_candidates:
dep_name = dep.split('(')[0].strip()
# Recursively fetch dependencies for this package
get_all_dep_version_package(list_package, dep_name, all_dep)
def download_all_dependencies(list_package, package_name, urldepot, proxies=None):
"""Download all dependencies of a package."""
all_dep = []
# Fetch all dependencies of the package
get_all_dep_version_package(list_package, package_name, all_dep)
# Create the list of URLs for all dependencies
list_deb = [urldepot + '/' + u['filename'] for u in all_dep]
# Download each dependency
for f in list_deb:
filename = f.split('/')[-1]
if not isfile(filename):
wget(f, filename, proxies=proxies)
else:
print(f"{filename} already exists.")
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies_from_wapt_console()
if not proxies:
proxies = get_proxies()
app_name = control.name
base_url = 'https://updates.signal.org/desktop/apt'
dist = "xenial"
arch = "amd64"
package_name = "signal-desktop"
# We remove all deb file first
for deb in glob.glob('*.deb'):
remove_file(deb)
urldepot = f"{base_url}/dists/{dist}/main/binary-{arch}/Packages.gz"
print(f"Repo url is {urldepot}")
with gzip.open(BytesIO(wgets(urldepot, proxies=proxies))) as f:
data = f.read().decode('utf-8')
list_package = DebianPackagesParser(data).raw_pkg_info
# Getting latest version of the package
last_package = sorted([u for u in list_package if u['package'] == package_name], key=lambda p: (Version(p['version'])), reverse=True)[0]
last_version = last_package['version']
download_all_dependencies(list_package, package_name, base_url, proxies)
control.set_software_version(last_version)
control.save_control_to_wapt()
38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
ac015a6ecdb37ca70403c41997676251657e51bd6196e2c6e58125d0f80994a9 : WAPT/control
3adb886fd11d1ac878e24c20600a8c65721098a0607e1723638e5719c9805539 : WAPT/icon.png
68d8838366b30f9fd8d38cb1b5ab287073e7a92984ac8d4119284df60b7ad5c2 : luti.json
1c89a6885d49327ec222d45e5ce8fada90d706de69a505d5f2cba778655c3442 : setup.py
6c986a073600d737156b3af121d3e7d3162cd7d594beda251a6c74c441f8be04 : signal-desktop_7.62.0_amd64.deb
c740f955dc5ca247cc6c88f0868731bac43a4eaa4331ca635de15c3b1856c36e : update_package.py