tis-firefox-addon-ublock-origin icon

tis-firefox-addon-ublock-origin

Paquet d’installation silencieuse pour tis-firefox-addon-ublock-origin

1.57.2-2

  • package: tis-firefox-addon-ublock-origin
  • version: 1.57.2-2
  • categories: Extension
  • maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ
  • licence: opensource_free,cpe:/a:gnu:gpl_v3,wapt_public
  • target_os: all
  • impacted_process: firefox
  • architecture: all
  • signature_date:
  • size: 3.80 Mo

package           : tis-firefox-addon-ublock-origin
version           : 1.57.2-2
architecture      : all
section           : base
priority          : optional
name              : 
categories        : Extension
maintainer        : WAPT Team,Tranquil IT,Jimmy PELÉ
description       : 
depends           : 
conflicts         : 
maturity          : PROD
locale            : 
target_os         : all
min_wapt_version  : 2.3
sources           : 
installed_size    : 
impacted_process  : firefox
description_fr    : 
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 
editor            : 
keywords          : 
licence           : opensource_free,cpe:/a:gnu:gpl_v3,wapt_public
homepage          : 
package_uuid      : 119c6f73-9b2e-45c6-9594-ec37f4f77eaf
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 
max_os_version    : 
icon_sha256sum    : 6e57b2461e2951cda80169fd6aed7a79d51cffe0ae2701b69afdaf0c23cfbe38
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature         : FOy6d0YkNUjMHenkZd4nPLTq61pJ0tmZRg6w2INiwFxXNMxuZJkTrEG2XlAmFtdIL8L2+je99EtZiakHHdVaUkVvM7wTivU/3upCYLGGgXsR6p+uECsJ19xxHlJ2Etg1856J306A72JUhWEpWa0f8HZ7PI4Elu+af3bP9CJxnoL+r/ywJjADe8KxRikZ2xeiyre4KLX82t0kf/579Btc5Bc2XP0tcTtbP93n/JyEQX78eVvelENbs9nPj/dwwlt3tpI0MubkvCiyTqlk7d5ogItNXLB7XG4uSNSqiV9XsPNGgrFO298QjyeSR3EC/geer4JPEhlIs66f2dTvVhPveQ==
signature_date    : 2024-04-28T10:00:06.968810
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

from setuphelpers import *

"""
Installation procedures:
https://mozilla.github.io/policy-templates/
https://mozilla.github.io/policy-templates/#extensionsettings

{
    "policies": {
        "ExtensionSettings": {
            "uBlock0@raymondhill.net": {
                "installation_mode": "force_installed",
                "install_url": "file://C:\\Program Files\\Mozilla Firefox\\distribution\\ublock_origin-1.57.2.xpi"
            }
        }
    }
}

"""
policies_file = "policies.json"
addon_id = "uBlock0@raymondhill.net"
extension_file_contains = "ublock_origin-"
extension_dict = {"policies": {"ExtensionSettings": {addon_id: {}}}}


def get_firefox_policies_dirs():
    detected_apps = installed_softwares("Firefox")
    firefox_policies_dirs = []
    if get_os_name() == "Linux":
        firefox_policies_dirs.append("/etc/firefox/policies")
    else:
        if not detected_apps:
            error("Firefox is not installed on this machine.")
        for ffox in detected_apps:
            if get_os_name() == "Windows":
                firefox_policies_dirs.append(makepath(ffox["install_location"], "distribution"))
            if get_os_name() == "Darwin":
                firefox_policies_dirs.append(makepath(ffox["install_location"], "Contents", "Resources", "distribution"))

    return firefox_policies_dirs


def install():
    bin_name = glob.glob("*.xpi")[0]

    # Interact differently with Luti
    if params.get("running_as_luti", False):
        WAPT.install("tis-firefox")

    for firefox_policies_dir in get_firefox_policies_dirs():
        policies_path = makepath(firefox_policies_dir, policies_file)
        killalltasks(ensure_list(control.impacted_process))
        if get_os_name() == "Darwin":
            run("sudo defaults write /Library/Preferences/org.mozilla.firefox EnterprisePoliciesEnabled -bool TRUE")
        mkdirs(firefox_policies_dir)

        # Copying extension_file
        extension_path = makepath(firefox_policies_dir, bin_name)
        print(f"Copying: {extension_path}")
        filecopyto(bin_name, firefox_policies_dir)

        # Prepare policies.json
        extension_dict["policies"]["ExtensionSettings"][addon_id]["install_url"] = "file://" + extension_path
        extension_dict["policies"]["ExtensionSettings"][addon_id]["installation_mode"] = "force_installed"

        # Write policies.json
        if isfile(policies_path):
            app_policies_dict = json_load_file(policies_path)
        else:
            app_policies_dict = {}
        merged_app_policies_dict = merge_dicts(app_policies_dict, extension_dict)
        print(f"Updating Firefox configuration to: {policies_path}")
        json_write_file(policies_path, merged_app_policies_dict, 2)

    if get_os_name() == "Windows":
        ffox_policies_reg_path = r"SOFTWARE\Policies\Mozilla\Firefox"
        if reg_key_exists(HKEY_LOCAL_MACHINE, ffox_policies_reg_path):
            print(
                "WARNING: Registry policies has been removed because it bypasses the policies.json file (source: https://support.mozilla.org/bm/questions/1236197)."
            )
            registry_deletekey(HKEY_LOCAL_MACHINE, ffox_policies_reg_path, "", force=True)


def uninstall():
    for firefox_policies_dir in get_firefox_policies_dirs():
        policies_path = makepath(firefox_policies_dir, policies_file)

        # Write policies.json if needed
        if isfile(policies_path):
            app_policies_dict = json_load_file(policies_path)
            try:
                del app_policies_dict["policies"]["ExtensionSettings"][addon_id]
                print(f"Updating Firefox configuration to: {policies_path}")
                json_write_file(policies_path, app_policies_dict, 2)
            except KeyError as e:
                print(f"The key {addon_id} does not exist in the dictionary: {e}")

        for extension_file in glob.glob(makepath(firefox_policies_dir, extension_file_contains + "*.xpi")):
            remove_file(extension_file)


# def audit():
#     audit_status = "OK"
#     for firefox_policies_dir in get_firefox_policies_dirs():
#         policies_path = makepath(firefox_policies_dir, policies_file)
#         if not isfile(policies_path):
#             print("WARNING: Configuration is NOT applied for Firefox, re-applying...")
#             install()
#             audit_status = "WARNING"
#         else:
#             print("OK: Configuration is correctly applied for Firefox.")
#             audit_status = "OK"

#     return audit_status


def merge_dicts(dict1, dict2):
    for key, value in dict2.items():
        if key in dict1 and isinstance(value, dict) and isinstance(dict1[key], dict):
            merge_dicts(dict1[key], value)  # recursive merge
        else:
            dict1[key] = value
    return dict1

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


def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    download_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"

    # Getting latest version information from download url
    requests_result = requests.head(download_url, proxies=proxies, allow_redirects=True)
    latest_bin = requests_result.url.split("/")[-1]
    version = latest_bin.split("-")[-1].rsplit(".", 1)[0]

    # 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, "xpi")

    # # 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 update-package-sources
    return package_updated

    # # Changing version of the package and validating update-package-sources
    # return complete_control_version(control, version)

09fbc4402f75ea97f921d958f70ea45fd86c89079d368015173dd3a2fe40ae58 : setup.py
9928e79a52cecf7cfa231fdb0699c7d7a427660d94eb10d711ed5a2f10d2eb89 : ublock_origin-1.57.2.xpi
c12b43e7dcc5b4f64947de76401e50807de88bb5ef5b11ed9178315353825e37 : update_package.py
6e57b2461e2951cda80169fd6aed7a79d51cffe0ae2701b69afdaf0c23cfbe38 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
730f35251337e8aac7047ad715f5b426f329687ea6c2d7475940d01e59b1bff7 : luti.json
19d98e539c1bd97fa7333f4d92c6ad37dc10afe84fcb41d662b34361d28f93c7 : WAPT/control