tis-brave icon

Brave

Silent install package for Brave

1.83.120-11
Internet
Internet

  • package: tis-brave
  • name: Brave
  • version: 1.83.120-11
  • categories: Internet
  • maintainer: WAPT Team,Tranquil IT,Flavien Schelfaut,Jimmy PELÉ
  • editor: Brave Software, Inc.
  • licence: opensource_free,cpe:/a:mozilla:public_license_2.0,wapt_public
  • locale: all
  • target_os: debian_based
  • impacted_process: brave,brave_vpn_helper
  • architecture: x64
  • signature_date:
  • size: 127.96 Mo
  • installed_size: 690.14 Mo
  • homepage : https://brave.com/

package           : tis-brave
version           : 1.83.120-11
architecture      : x64
section           : base
priority          : optional
name              : Brave
categories        : Internet
maintainer        : WAPT Team,Tranquil IT,Flavien Schelfaut,Jimmy PELÉ
description       : Brave is a free and open-source web browser developed by Brave Software, Inc. It blocks ads and website trackers, and provides a way for users to send cryptocurrency contributions in the form of Basic Attention Tokens to websites and content creators
depends           : 
conflicts         : 
maturity          : PROD
locale            : all
target_os         : debian_based
min_wapt_version  : 2.3
sources           : https://github.com/brave/brave-browser/releases/latest
installed_size    : 690141109
impacted_process  : brave,brave_vpn_helper
description_fr    : Brave est un navigateur web gratuit et open-source développé par Brave Software, Inc. Il bloque les publicités et les traqueurs de sites web, et permet aux utilisateurs d'envoyer des contributions en crypto-monnaie sous la forme de jetons d'attention de base à des sites web et à des créateurs de contenu
description_pl    : Brave to darmowa i otwarta przeglądarka internetowa opracowana przez Brave Software, Inc. Blokuje ona reklamy i elementy śledzące witryn internetowych, a także zapewnia użytkownikom możliwość wysyłania kryptowalut w postaci tokenów Basic Attention Token do witryn internetowych i twórców treści
description_de    : Brave ist ein freier und quelloffener Webbrowser, der von Brave Software, Inc. entwickelt wurde. Er blockiert Werbung und Website-Tracker und bietet Nutzern die Möglichkeit, Kryptowährungsbeiträge in Form von Basic Attention Tokens an Websites und Inhaltsersteller zu senden
description_es    : Brave es un navegador web gratuito y de código abierto desarrollado por Brave Software, Inc. Bloquea los anuncios y los rastreadores de sitios web, y permite a los usuarios enviar contribuciones en criptomoneda en forma de Basic Attention Tokens a sitios web y creadores de contenidos
description_pt    : O Brave é um navegador web gratuito e de código aberto desenvolvido pela Brave Software, Inc. Bloqueia anúncios e rastreadores de sítios Web e fornece uma forma de os utilizadores enviarem contribuições em criptomoeda sob a forma de Basic Attention Tokens para sítios Web e criadores de conteúdos
description_it    : Brave è un browser web gratuito e open-source sviluppato da Brave Software, Inc. Blocca gli annunci e i tracker dei siti web e offre agli utenti la possibilità di inviare contributi in criptovaluta sotto forma di Basic Attention Token a siti web e creatori di contenuti
description_nl    : Brave is een gratis en open-source webbrowser ontwikkeld door Brave Software, Inc. Het blokkeert advertenties en website trackers, en biedt een manier voor gebruikers om cryptocurrency bijdragen in de vorm van Basic Attention Tokens te sturen naar websites en content creators
description_ru    : Brave - свободный веб-браузер с открытым исходным кодом, разработанный компанией Brave Software, Inc. Он блокирует рекламу и трекеры сайтов, а также предоставляет пользователям возможность отправлять криптовалютные взносы в виде токенов Basic Attention Tokens на сайты и создателям контента
audit_schedule    : 
editor            : Brave Software, Inc.
keywords          : browser,navigateur,brave,chromium
licence           : opensource_free,cpe:/a:mozilla:public_license_2.0,wapt_public
homepage          : https://brave.com/
package_uuid      : 32904396-00c6-4699-b32b-86b5d27226d1
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://brave.com/latest/
min_os_version    : 
max_os_version    : 
icon_sha256sum    : 0ac229cb58fe612c76230e09124cef96cff2272017a956f69f5f432c7ab63c99
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2025-10-29T13:04:29.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         : azApeZC2UwIzZ1mYTOg1Ep5YDhqJ1uNmK++e9MUQc6xsaCVi0vRKdO3Tm1iSuXONqteEOjWkJz/EOZuHvDQXDoA5mtNZW3Q11C2coZmCJLeYzyFlXS2YOnfKg/VLhYGAFGDoHLt5fZC+iqftuLb58iIGCzUdQF+Cm+NumxdY5moipcdFpItsyUjOpEh+clFoYeNUea5VA5ZR2fNDifieKntifJNvTpeqklCLO7YEqxeomsYvooCvAFYUq2J22QYtu+7aa/mBCvQDstdnzmPdKc5cWNvxbYfRz4dmLv/5rACKl2dV8Q7m098PGl2bxtHFHQQHwsbI6ZjWhjeYHw8JEw==

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


def install():
    bin_name = glob.glob("*.deb")
    install_deb(" ".join(bin_name))


def uninstall():
    uninstall_apt("brave-browser")
    uninstall_apt("brave-keyring")

# -*- 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):
            print(f"Download URL is: {f}")
            wget(f, filename, proxies=proxies)
        else:
            print(f"{filename} already exists.")

def get_package_version(input_obj):
    parts = input_obj.split(':', 1)
    if len(parts) == 2:
        epoch, version = parts
    else:
        epoch, version = 0, parts[0]
        
    for i in "+~":
        version = version.split(i)[0]
    return epoch, version

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://brave-browser-apt-release.s3.brave.com'
    dist = "stable"
    arch = "amd64"
    package_name = "brave-browser"

    # 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]
    epoch, version = get_package_version(last_package['version'])

    print(f"Latest {app_name} version is: {version}")
    download_all_dependencies(list_package, package_name, base_url, 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
2de4668c77fb4d33b5c09289ddc0d77f0594020c805c8970be52fecee6bfd48b : WAPT/control
0ac229cb58fe612c76230e09124cef96cff2272017a956f69f5f432c7ab63c99 : WAPT/icon.png
13520a73a7ed04ef3c5955dad1182300586d72404d9bf853420c733332b5ecf6 : brave-browser_1.83.120_amd64.deb
2c3d8436fd639661401f6c76c58fce0dd5eddcb868f20bafc507f98b10a86420 : brave-keyring_1.19-1.deb
a0211ea670bd1e2b7386276732c132b27447d41530175091cfb8ab548d36e724 : luti.json
34398bd386537eaffba7131df2e9c2e9f20f14a29c9a306c1e4d776b8a45452a : setup.py
dd99a6ec676e768ee7c9d9baf2ed6eb9bf337007268070c99ea638ae02c45dfd : update_package.py