- package: tis-signal-desktop
- name: Signal
- version: 7.56.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.09 Mo
- homepage : https://signal.org/
package : tis-signal-desktop
version : 7.56.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 : d977283e-8851-43ee-bd03-6b1cf6749bd4
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-06-02T20:01:34.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 : jbLN5NpIQE9CHr7fwPC3uOYxYTgnfMrveUHAZGnJ2Vz/UtNPRWCa/Ogaypa0VHdVov9IAuZPkgLG/1skIqATXSVvDfAWC+jrbkrn5eJc6lRr3o5cgciarNYrtYqE3SURWmr6acCR1+71YceGj0l0NxqyfVyhWEo74kuWfAj3x/UIc6V3QGoFAnv8IhrsqgUWI8KZztWerZuGshfmc7/ZL/+VJLeWDmlx4WgR98vO1Py1qw4jlyAyuqTrBDevL0S0txQS60E4POyudJEI6TrdZ1vBmzukgVK6pJCAFh3fQdxVEpks8b2y/oOKhl6hXnitCdHe/f8xRVKnLeovf2YsWA==
# -*- 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
7d3d5595a08b63be1120c477faac439b7d278df3a6b87805e9a8ac503ef26342 : WAPT/control
3adb886fd11d1ac878e24c20600a8c65721098a0607e1723638e5719c9805539 : WAPT/icon.png
e1734d55218680d324f5311b2a1052b9ffa084ec11b68d34a18a5af5df67e419 : luti.json
1c89a6885d49327ec222d45e5ce8fada90d706de69a505d5f2cba778655c3442 : setup.py
26f98dfbe132636b4b424db5f80e5de69c09c54e3c2f613fd341b6dac7c14546 : signal-desktop_7.56.0_amd64.deb
c740f955dc5ca247cc6c88f0868731bac43a4eaa4331ca635de15c3b1856c36e : update_package.py