
Charles
Silent install package for Charles
4.6.6-1
- package: tis-charles
- name: Charles
- version: 4.6.6-1
- maintainer: Administrator
- licence: Copyright (c) 2019 Tam Nguyen M.
- target_os: darwin
- architecture: x64
- signature_date:
- size: 57.19 Mo
- homepage : https://www.charlesproxy.com/
package : tis-charles
version : 4.6.6-1
architecture : x64
section : base
priority : optional
name : Charles
categories :
maintainer : Administrator
description : Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information)
depends :
conflicts :
maturity : PROD
locale :
target_os : darwin
min_wapt_version :
sources :
installed_size :
impacted_process :
description_fr : Charles est un proxy HTTP / moniteur HTTP / proxy inverse qui permet à un développeur de visualiser l'ensemble du trafic HTTP et SSL / HTTPS entre sa machine et l'Internet. Cela inclut les requêtes, les réponses et les en-têtes HTTP (qui contiennent les cookies et les informations de mise en cache)
description_pl : Charles to serwer proxy HTTP / monitor HTTP / Reverse Proxy, który umożliwia programiście przeglądanie całego ruchu HTTP i SSL / HTTPS między jego komputerem a Internetem. Obejmuje to żądania, odpowiedzi i nagłówki HTTP (które zawierają pliki cookie i informacje o buforowaniu)
description_de : Charles ist ein HTTP-Proxy / HTTP-Monitor / Reverse Proxy, der es einem Entwickler ermöglicht, den gesamten HTTP- und SSL-/HTTPS-Verkehr zwischen seinem Rechner und dem Internet einzusehen. Dazu gehören Anfragen, Antworten und die HTTP-Header (die die Cookies und Caching-Informationen enthalten)
description_es : Charles es un proxy HTTP / monitor HTTP / Proxy Inverso que permite a un desarrollador ver todo el tráfico HTTP y SSL / HTTPS entre su máquina e Internet. Esto incluye peticiones, respuestas y las cabeceras HTTP (que contienen las cookies y la información de caché)
description_pt : O Charles é um proxy HTTP / monitor HTTP / proxy inverso que permite a um programador visualizar todo o tráfego HTTP e SSL / HTTPS entre a sua máquina e a Internet. Isto inclui pedidos, respostas e os cabeçalhos HTTP (que contêm os cookies e a informação de cache)
description_it : Charles è un proxy HTTP / monitor HTTP / Reverse Proxy che consente a uno sviluppatore di visualizzare tutto il traffico HTTP e SSL / HTTPS tra il proprio computer e Internet. Questo include le richieste, le risposte e le intestazioni HTTP (che contengono i cookie e le informazioni sulla cache)
description_nl : Charles is een HTTP-proxy / HTTP-monitor / Reverse Proxy waarmee een ontwikkelaar al het HTTP- en SSL / HTTPS-verkeer tussen zijn machine en het internet kan bekijken. Dit omvat verzoeken, antwoorden en de HTTP-headers (die de cookies en caching-informatie bevatten)
description_ru : Charles - это HTTP-прокси / HTTP-монитор / обратный прокси, который позволяет разработчику просматривать весь HTTP и SSL / HTTPS трафик между его машиной и Интернетом. Сюда входят запросы, ответы и HTTP-заголовки (которые содержат куки и информацию о кэшировании)
audit_schedule :
editor :
keywords :
licence : Copyright (c) 2019 Tam Nguyen M.
homepage : https://www.charlesproxy.com/
package_uuid : 2bf31d36-f77c-4916-80a5-3298a4aa5546
valid_from :
valid_until :
forced_install_on :
changelog : https://www.charlesproxy.com/documentation/version-history/
min_os_version :
max_os_version :
icon_sha256sum : 07e375c532e9eab58ddcfdcb7b2989b7a6163b2de1e179964571b2c9bbc728a2
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : Fvlv/7fLMgj/YZcuD3AMXCTuqNATwP1qijUddtCTQQQcKR4NILKlBxxj7MR6iyggN8rzIVvlwUWDgc3Y2e+cfhEjpw33UZYZLwru+0qqvJr5HxzRnmLe/bVQuDB9zTdSZBcQdNbXowEcPU+oTjZB2tEFki0XO8oHGx3AJslEIyS5TObSodYj8+XDvYF4btK0julxug/ukubDWThswlLAUauBw+01TcDEIVgJf6e7a+nXS/j7TtRMXMNgO4i9/KkFZqXpXvHk+7a05U6FvFQR2PCJnxyEIowUnpuHc/NlQHLXPN2CeIGejYNuKqw64P/jmwOHtL0fcK3nigalBrSbMQ==
signature_date : 2024-05-22T14:00:09.517269
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 *
r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()
{
"key":"{C71C4442-CA69-443C-AFC1-53E0D4AD7D1A}",
"name":"Charles 4.6.6",
"version":"4.6.6.0",
"install_date":"2024-05-16 00:00:00",
"install_location":"",
"uninstall_string":"MsiExec.exe /X{C71C4442-CA69-443C-AFC1-53E0D4AD7D1A}",
"publisher":"XK72 Ltd",
"system_component":0,
"win64":true
}
"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls
def install():
# Declaring local variables
bin_name = glob.glob("*.dmg")[0]
def mount_dmg(dmg_path):
"""Mounts a dmg file.
Returns: The path to the mount point.
"""
try:
return run("yes | hdiutil mount '" + dmg_path + "'").split("\t")[-1].rstrip()
except subprocess.CalledProcessError as e:
raise Exception("Error in mount_dmg : {0}".format(e.output))
def install_dmg(dmg_path, key="", min_version="", get_version=None, force=False, killbefore=None, uninstallkeylist=None):
"""Installs a .dmg if it isn't already installed on the system.
Arguments:
dmg_path : the path to the dmg file
Returns:
True if it succeeded, False otherwise
"""
ret_val = True
dmg_name = os.path.basename(dmg_path)
dmg_mount_path = mount_dmg(dmg_path)
try:
dmg_file_assoc = {".pkg": install_pkg, ".mpkg": install_pkg, ".app": install_app}
files = [dmg_mount_path + "/" + fname for fname in os.listdir(dmg_mount_path)]
nb_files_handled = 0
for file in files:
fname, fextension = os.path.splitext(file)
if fextension in dmg_file_assoc:
dmg_file_assoc[fextension](
file,
key=key,
min_version=min_version,
get_version=get_version,
force=force,
uninstallkeylist=uninstallkeylist,
killbefore=killbefore,
)
nb_files_handled += 1
if nb_files_handled == 0:
error("Error : the dmg provided did not contain a package or an application, or none could be found.")
unmount_dmg(dmg_mount_path)
except Exception as e:
unmount_dmg(dmg_mount_path)
raise
# Installing the software
install_dmg(bin_name,
key='/Applications/Charles.app',
min_version=control.get_software_version()
)
def uninstall():
if isdir('/Applications/Charles.app'):
remove_tree('/Applications/Charles.app')
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import glob
import re
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies_from_wapt_console()
if not proxies:
proxies = proxies = get_proxies()
url_base = "https://www.charlesproxy.com/latest-release/download.do"
paragraph = bs_find(url_base,"div", "class", "content")
all_p_tags = paragraph.find_all('p')
# Vérifier s'il y a au moins deux <p> tags
if len(all_p_tags) > 1:
second_p_tag = all_p_tags[1]
second_p_text = second_p_tag.get_text(strip=True)
# Utiliser une expression régulière pour extraire la version
version_match = re.search(r'(\d+\.\d+\.\d+)', second_p_text)
if version_match:
version = version_match.group(1)
else:
version = "Version non trouvée"
else:
version = "Deuxième paragraphe non trouvé"
print(version)
download_dict = {
"windows-x64": "https://www.charlesproxy.com/assets/release/{version}/charles-proxy-{version}-win64.msi",
"darwin-x64" :"https://www.charlesproxy.com/assets/release/{version}/charles-proxy-{version}.dmg",
"linux-x64" : "https://www.charlesproxy.com/assets/release/{version}/charles-proxy-{version}_amd64.tar.gz"
}
download_url = download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]].format(version=version)
latest_bin = download_url.split("/")[-1]
# Downloading latest binaries
if not isfile(latest_bin):
package_updated = True
wget(download_url, latest_bin, proxies=proxies)
filtre = '*.' + latest_bin.split('.')[-1]
for f in glob.glob(filtre):
if f != latest_bin:
remove_file(f)
control.set_software_version(version)
control.save_control_to_wapt()
return package_updated
41eb080565cda19f51a3f1e16ab79025414639dfc3e7b4d8a89897e8168189d7 : setup.py
7011a6f553748959833555d0f8060991d50c4df9d8ee0d52e6b5e98d62531bed : update_package.py
ca67b827df8e9d58f64ae2a1cba493832f335f0d28257e704395839623a7cbb0 : charles-proxy-4.6.6.dmg
07e375c532e9eab58ddcfdcb7b2989b7a6163b2de1e179964571b2c9bbc728a2 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
94d501d9a1f3e27587d72893298210256f15afbafb01b0cece892470fc16e451 : luti.json
dae8275deccd87a38fb8de460a29c1a651c1112e6bab9000a3fa23363585d554 : WAPT/control