tis-linphone
5.2.5-10
Linphone is an open source softphone for voice and video over IP calling and instant messaging. It is fully SIP-based, for all calling, presence and IM features
2666 downloads
Download
See build result See VirusTotal scan

- package : tis-linphone
- name : Linphone
- version : 5.2.5-10
- categories : Messaging
- maintainer : WAPT Team,Tranquil IT,Alexandre Gauvrit,Jimmy PELÉ
- installed_size : 317656975
- editor : Belledonne Communications
- licence : opensource_free,cpe:/a:gnu:gpl_v3,wapt_private
- signature_date : 2024-07-22T16:02:28.880259
- size : 58.31 Mo
- locale : all
- target_os : macos
- impacted_process : linphone
- architecture : all
- Homepage : https://www.linphone.org/
package : tis-linphone
version : 5.2.5-10
architecture : all
section : base
priority : optional
name : Linphone
categories : Messaging
maintainer : WAPT Team,Tranquil IT,Alexandre Gauvrit,Jimmy PELÉ
description : Linphone is an open source softphone for voice and video over IP calling and instant messaging. It is fully SIP-based, for all calling, presence and IM features
depends :
conflicts :
maturity : PROD
locale : all
target_os : macos
min_wapt_version : 2.3
sources : https://www.linphone.org/technical-corner/linphone
installed_size : 317656975
impacted_process : linphone
description_fr : Linphone est un softphone open source pour les appels vocaux et vidéo sur IP et la messagerie instantanée. Il est entièrement basé sur le protocole SIP, pour toutes les fonctions d'appel, de présence et de messagerie instantanée
description_pl : Linphone to softphone o otwartym kodzie źródłowym do połączeń głosowych i wideo przez IP oraz komunikatorów internetowych. Jest w pełni oparty na protokole SIP dla wszystkich funkcji połączeń, obecności i wiadomości błyskawicznych
description_de : Linphone ist ein Open-Source-Softphone für Sprach- und Videoanrufe über IP und Instant Messaging. Es ist vollständig SIP-basiert, für alle Anruf-, Präsenz- und IM-Funktionen
description_es : Linphone es un softphone de código abierto para llamadas de voz y vídeo sobre IP y mensajería instantánea. Está totalmente basado en SIP, para todas las funciones de llamada, presencia y mensajería instantánea
description_pt : O Linphone é um softphone de código aberto para chamadas de voz e vídeo sobre IP e mensagens instantâneas. É totalmente baseado em SIP, para todas as funcionalidades de chamada, presença e IM
description_it : Linphone è un softphone open source per chiamate vocali e video su IP e messaggistica istantanea. È completamente basato su SIP, per tutte le funzioni di chiamata, presenza e messaggistica istantanea
description_nl : Linphone is een open source softphone voor spraak en video over IP bellen en instant messaging. Het is volledig gebaseerd op SIP, voor alle functies voor bellen, aanwezigheid en IM
description_ru : Linphone - это программный телефон с открытым исходным кодом для голосовых и видеовызовов по IP и обмена мгновенными сообщениями. Он полностью основан на протоколе SIP и обеспечивает все функции звонков, присутствия и обмена мгновенными сообщениями
audit_schedule :
editor : Belledonne Communications
keywords :
licence : opensource_free,cpe:/a:gnu:gpl_v3,wapt_private
homepage : https://www.linphone.org/
package_uuid : 922625a5-747c-4d15-aff2-d00c6dd8e4fb
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version :
max_os_version :
icon_sha256sum : 73897b6f03daf2d4bbe00c4d1e75819b9b9f69415cae467997665ddcba080ea5
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : Pc3WbAWuntH3v6BoBFO/cp6syGUYPKSOsudySiPDozpM6dTx+a4lCIemGp8Lp1C1vyrvGbNCEvzx1FUxmOXjdkXbDcqK5zJfNUr0/Cp9guMdVx/dRE3S5nurCBmXGaRzP3oIxG/TLJ+YBJA6QUEUjTNGAGASn+hzpe8Hv3cF0KynfJhlAv2saClPzF9he3eObNAdOOmv+9tpYTJSLwJNns2EYwOmFxp5cjibcBX5+1ENUokbsfKZmHdrsjYDUPX/oj1Cg1GvTnsjvOwXRQzzexj0Oi9O9YhbH6Kwo1CzhJiW73ILbQf39LAM7QWTefKNi8dAUgcl9s03S3WY/CYm9w==
signature_date : 2024-07-22T16:02:28.880259
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
# -*- coding: utf-8 -*-
from setuphelpers import *
def install():
bin_name = glob.glob("Linphone-*-mac.dmg")[0]
tempo_path = "/tmp/cdrTempo"
run(f"hdiutil convert -quiet {bin_name} -format UDTO -o {tempo_path}")
install_dmg(f"{tempo_path}.cdr", min_version=control.get_software_version())
if isfile(f"{tempo_path}.cdr"):
remove_file(f"{tempo_path}.cdr")
def uninstall():
remove_tree("/Applications/Linphone.app")
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import bs4 as BeautifulSoup
from urllib.parse import urlparse, urljoin
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
download_dict = {
"windows": "https://download.linphone.org/releases/windows/app/",
"macos": "https://download.linphone.org/releases/macosx/app/",
"linux": "https://download.linphone.org/releases/linux/app/",
}
url = download_dict[control.target_os]
# Getting latest version information from official sources
print("URL used is: %s" % url)
binaries_dict = bs_index_of_to_dict(url, proxies=proxies)
newer_version = "0"
for to_download in binaries_dict.keys():
filename = to_download
try:
checked_version = filename.split("-")[1]
checked_version = checked_version if is_version(checked_version) else "0"
except:
checked_version = "0"
if Version(checked_version, 4) > Version(newer_version, 4):
newer_version = checked_version
download_url = binaries_dict[to_download]
latest_bin = filename
version = newer_version
# Downloading latest binaries
print("Latest %s version is: %s" % (control.name, version))
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)
# Deleting outdated binaries
remove_outdated_binaries(latest_bin)
# arch_list = ensure_list(control.architecture)
# remove_outdated_binaries(version, filename_contains=("x64" if "x64" in arch_list else "x86" if "x86" in arch_list else []))
# # Checking version from file
# if get_os_name() == "Windows" and "windows" in control.target_os.lower():
# version_from_file = get_version_from_binary(latest_bin)
# if Version(version_from_file, 4) == Version(version, 4):
# print(f"INFO: Binary file version ({version_from_file}) corresponds to online version ({version})")
# else:
# error(f"ERROR: Binary file version ({version_from_file}) do NOT corresponds to online version ({version})")
# Changing version of the package
if Version(version, 4) > Version(control.get_software_version(), 4):
print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(version)))
package_updated = True
else:
print("Software version up-to-date (%s)" % Version(version))
control.set_software_version(version)
control.save_control_to_wapt()
# Validating or not update-package-sources
return package_updated
# # Changing version of the package and validating update-package-sources
# return complete_control_version(control, version)
def bs_index_of_to_dict(url, **kwargs):
r"""Parse html "Index of" web page with BeautifulSoup and get a dict of the result
Args:
url (str): url of the web page to parse
Return:
result: a dict of the index URLs
"""
result = {}
for elem in bs_find_all(url, "a", "href"):
if not "://" in elem["href"]:
# absolute_link = urljoin(url, url + "/" + elem.get("title", elem["href"]) if not url.endswith("/") else url + elem.get("title", elem["href"]))
absolute_link = url + "/" + elem.get("title", elem["href"]) if not url.endswith("/") else url + elem.get("title", elem["href"])
if len(absolute_link.rsplit("//")) > 2:
absolute_link = absolute_link.rsplit("//", 1)[0] # fix for Parent Dir, to test if it break any other link
if "parent" in elem.text.lower():
absolute_link = absolute_link.rsplit("/", 1)[0] # Parent Dir is uplevel
else:
absolute_link = elem["href"]
key = elem.text
if key.endswith("..>"): # if key.endswith("..>"):
key = elem["href"]
result[key] = absolute_link
return result
def is_version(version_str, max_members=4):
parts = version_str.split(".")
if len(parts) > max_members:
error(f'"{version_str} contains more members than the specified maximum: ({max_members})')
for part in parts:
if not part.isdigit():
return False
return True
def is_url(x):
try:
result = urlparse(x)
return all([result.scheme, result.netloc])
except:
return False
def bs_find_all(url, element, attribute=None, value=None, user_agent=None, proxies=None, features="html.parser", **kwargs):
"""
Parse an HTML or XML web page with BeautifulSoup and retrieve a list of all matching results.
Args:
url (str): URL of the web page or string to parse.
element (str): Searched element.
attribute (str): Selected attribute of the element.
value (str): Value of the selected attribute.
user_agent (str): Specify a user-agent if needed.
proxies (dict): Specify proxies if needed.
features (str): BeautifulSoup feature to use.
**kwargs: Additional parameters for the requests library.
Returns:
list: List of bs4.element.Tag objects representing the matching elements.
Examples:
>>> bs_find_all('https://www.w3.org/', 'a', 'title', 'Open Web Platform testing')[0]['href']
'https://web-platform-tests.org/'
>>> bs_find_all('https://www.w3.org/', 'span', 'class', 'alt-logo')[0].string
'W3C'
.. versionadded:: 2.0
.. versionchanged:: 2.5
Function can now parse string content of a page or reparse a "bs_result". It is now possible to parse a specific attribute.
"""
url = str(url)
if is_url(url):
if user_agent:
page = requests.get(url, proxies=proxies, headers={"User-Agent": user_agent}, **kwargs).text
else:
page = requests.get(url, proxies=proxies, **kwargs).text
else:
page = url
soup = BeautifulSoup.BeautifulSoup(page, features=features)
if value:
return soup.find_all(element, {attribute: value})
elif attribute:
return soup.find_all(element, attrs={attribute: True})
else:
return soup.find_all(element)
302d668ca451f0cc39b39422917b6c8f1ffa033d11dde687040fa6e951989281 : setup.py
: __pycache__
742a42e205473f9378d0657c647d370b108022e0ba5592cefdaae7e6b0bd1941 : update_package.py
73897b6f03daf2d4bbe00c4d1e75819b9b9f69415cae467997665ddcba080ea5 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
6e25d3aa162c545c90eb919b4eb144478133617311d33f766b629a775d46c98f : luti.json
148c8de586bcf06f6e482f71cfd841e584f79802cbdb72e19da19b86862891c9 : Linphone-5.2.5-mac.dmg
dc4b5aae206faa0d5b981c4dae409c7c2932984765fc5c20e294c26ab4eef9d9 : WAPT/control