Attention : le support de WAPT 1.8.2 a pris fin le 30 juin 2022.

Il y a plusieurs vulnérabilité présente dans la branche WAPT 1.8.2.7393. Merci de mettre à jour sur la version supportée la plus récente. Liste des CVEs (non exhaustive) :
  • * python engine : python 2.7 (CVE-2020-10735, CVE-2015-20107, CVE-2022-0391, CVE-2021-23336, CVE-2021-3177, CVE-2020-27619, CVE-2020-26116, CVE-2019-20907, CVE-2020-8492, etc.)
  • * cryptography : openssl : CVE-2022-2068, CVE-2022-1292, CVE-2022-0778, CVE-2021-4160, CVE-2021-3712, CVE-2021-23841, CVE-2021-23840, CVE-2021-23839, CVE-2020-1971, CVE-2020-1968, CVE-2019-1551
  • * python dependencies : cryptography (CVE-2020-36242, CVE-2020-25659), eventlet (CVE-2021-21419), jinja2 (CVE-2020-28493), psutil (CVE-2019-18874), waitress (CVE-2022-31015), lxml (CVE-2021-4381, CVE-2021-28957, CVE-2020-27783, CVE-2018-19787), ujson (CVE-2022-31117, CVE-2022-31116, CVE-2021-45958), python-ldap (CVE-2021-46823)

Structure d’un paquet WAPT

Un paquet WAPT est un fichier zip qui contient plusieurs éléments :

WAPT package structure

Structure d’un paquet WAPT

  • un fichier setup.py à la racine ;

  • un fichier ou plusieurs fichiers binaire.exe à la racine ;

  • un fichier ou plusieurs autres fichiers additionnels à la racine ;

  • Un fichier control dans le dossier WAPT ;

  • Un fichier icon.png dans le dossier WAPT ;

  • Un fichier certificate.crt dans le dossier WAPT ;

  • Un fichier manifest.sha256 dans le dossier WAPT ;

  • Un fichier signature.sha256 dans le dossier WAPT ;

  • un fichier wapt.psproj dans le dossier WAPT, ce fichier est utilisé pour stocker les données de configuration PyScripter pour le paquet WAPT ;

  • depuis WAPT 1.8, un dossier caché .vscode qui contient un fichier launch.json et un fichier settings.json utilisés pour stocker les données de configuration VScode pour le paquet WAPT ;

Le fichier control

Le fichier control est la fiche d’identité du paquet.

package           : tis-firefox-esr
version           : 62.0-0
architecture      : all
section           : base
priority          : optional
maintainer        : Administrateur
description       : Firefox Web Browser French
description_fr    : Navigateur Web Firefox Français
description_es    : Firefox Web Browser
depends           :
conflicts         :
maturity          : PROD
locale            : fr
target_os         : windows
min_os_version    :
max_os_version    :
min_wapt_version  : 1.6.2
sources           :
installed_size    :
impacted_process  : firefox.exe
audit_schedule    :
editor            : Mozilla
keywords          : Navigateur
licence           : MPL
homepage          : https://www.mozilla.org/en-US/firefox/organizations/
signer            : Tranquil IT
signer_fingerprint: 459934db53fd804bbb1dee79412a46b7d94b638737b03a0d73fc4907b994da5d
signature         : MLOzLiz0qCHN5fChdylnvXUZ8xNJj4rEu5FAAsDTdEtQ(...)hsduxGRJpN1wLEjGRaMLBlod/p8w==
signature_date    : 20170704-164552
signed_attributes : package,version,architecture,section,priority,maintainer,description,depends,conflicts,maturity,locale,min_os_version,max_os_version,min_wapt_version,sources,installed_size,signer,signer_fingerprint,signature_date,signed_attributes
Description des options du fichier control

Paramètre

Description

Valeur Exemple

package

Nom du paquet

tis-geogebra

version

Version du paquet, ne peut pas comporter plus de 5 délimiteurs

5.0.309.0-0

architecture

Architecture de processeur

x64

section

Type de paquet (host, group, base)

base

priority

Niveau de priorité d’installation du paquet (optionnel pour le moment)

Non pris en charge pour le moment

maintainer

Auteur du paquet

Gérard Bouchard mail@mydomain.lan

description

Description du paquet qui apparaîtra dans la console et sur l’interface web

The Graphing Calculator for Functions,Geometry, Algebra, Calculus, Statistics and 3D

description_fr

Description du paquet dans une langue précise

Calculatrice graphique

depends

Dépendances à installer avant d’installer le paquet

tis-java

conflicts

Paquets à désinstaller avant d’installer ce paquet

tis-graph

maturity

Niveau de maturité du paquet (BETA, DEV, PROD)

PROD

locale

Environment linguistique prévu pour le paquet

fr,en,es

target_os

OS Accepté par le paquet

windows,mac,linux

min_os_version

Version minimale de l’OS pour que le paquet soit vu par l’agent WAPT le paquet

6.0

max_os_version

Version maximale de l’OS pour que le paquet soit vu par l’agent WAPT le paquet

8.0

min_wapt_version

Version minimale de WAPT pour un fonctionnement correct du paquet

1.3.8

sources

Lien de stockage des versions historisées du paquet (commande sources)

https://srv-svn.mydomain.lan/sources/tis-geogebra-wapt/trunk/

installed_size

Espace de disque dur libre minimal requis pour installer le paquet

254251008

impacted_process

Indique une liste de processus impactés lors de l’installation du paquet

firefox.exe

audit_schedule

Indique la périodicité pour l’exécution de la fonction audit du paquet

60

editor

Indique l’editeur du logiciel integrée dans le paquet

Mozilla

licence

Indique la licence du logiciel integrée dans le paquet

GPLV3

keywords

Indique une liste de mots clé correspondant au paquet

Bureautique,Editeur,calcul

homepage

Indique la page d’accueil du site officiel de logiciel integrée dans le paquet

https://www.tranquil.it/

signer

Nom commun (CN) du signataire du paquet

Tranquil IT

signer_fingerprint

Empreinte de la signature du signataire du paquet

2BAFAF007C174A3B00F12E9CA1E74956

signature

Hash SHA256 du paquet

MLOzLiz0qCHN5fChdylnvXUZ8xNJj4rEu5FAAsDTdEtQ(…)hsduxGRJpN1wLEjGRaMLBlod/p8w==

signature_date

Indique la date de signature du paquet

20180307-230413

signed_attributes

Liste des attributs signés

package, version, architecture, section, priority, maintainer, description, depends, conflicts, maturity, locale, min_wapt_version, sources, installed_size, signer, signer_fingerprint, signature_date, signed_attributes

Note

Si le fichier control comporte des caractères accentués, le fichier doit être enregistré en format UTF-8 (No BOM).

PyScripter - UTF-8 (No BOM)

PyScripter - UTF-8 (No BOM)

Détails des champs

package

Nom du paquet WAPT, sans accent, sans espace, sans caractère spécial, sans majuscule.

version

De préférence, toujours commencer par la version du logiciel (chiffres uniquement) séparée par des points (.), puis suffixer avec un tiret (-) et le numéro de version de packaging WAPT.

architecture

Nouveau dans la version 1.5.

Définit si le paquet pourra s’installer sur une machine équipée d’un processeur 32bits ou 64bits.

Note

Un paquet prévu pour une architecture x64 ne sera pas visible avec un agent WAPT installé sur un poste équipé d’un processeur x86.

Valeurs possibles :

  • x86 : le paquet est destiné uniquement aux machines avec un processeur 32bits ;

  • x64 : le paquet est destiné uniquement aux machines avec un processeur 64bits ;

  • all : le paquet est a destination des machines avec un processeur 32bits OU 64bits ;

section

  • host : paquet machine ;

  • group : paquet groupe ;

  • base : paquet logiciel ;

  • unit : paquet UO ;

priority

Cette option n’est pas prise en en charge pour le moment, ce champ permettra à terme de définir la priorité d’installation d’un paquet WAPT.

maintainer

Indique le nom du créateur du paquet WAPT.

Note

indiquer l’adresse email peut être utile.

description

Décrit les fonctionnalités du paquet ; la description sera affichée dans la console, sur l’interface web des clients WAPT http://127.0.0.1:8088 et dans les lignes de commande wapt-get.v

Indication

Ajouter un champ description_fr ou description_es permet par exemple de préciser une description pour une langue précise. Si la langue n’existe pas, l’agent wapt utilisera la champ description classique.

depends

Définit quelle(s) dépendance(s) doit(doivent) être satisfaite(s) avant d’installer le paquet WAPT, par exemple tis-java devra être installé avant le paquet LibreOffice.

On peut définir plusieurs dépendances en les séparant par des virgules (,)

exemple :

depends: tis-java,tis-firefox-esr,tis-thunderbird

conflicts

Fonctionne exactement à l’inverse de depends.

conflicts définit quel(s) paquet(s) doit(vent) être désinstallé(s) avant d’installer le paquet WAPT. Par exemple si vous voulez désinstaller firefox avant d’installer firefox-esr, ou bien si vous voulez LibreOffice, alors il faudra désinstaller OpenOffice d’abord.

On peut définir plusieurs conflits en les séparant par des virgules (,).

maturity

Nouveau dans la version 1.5.1.19.

Indique la maturité du paquet.

Un agent verra par défault les paquets PROD et les paquet sans maturité.

Pour qu’un Poste Client puisse voir un paquet d’un autre niveau de maturité, il faudra ajouter dans wapt-get.ini la configuration maturities.

locale

Nouveau dans la version 1.5.1.19.

Indique la langue du paquet.

Un agent verra par défault les paquets dans sa langue et les paquets avec un champ local sans valeur.

Pour qu’un Poste client puisse voir un paquet d’une autre langue, il faudra ajouter dans wapt-get.ini la configuration locales.

locales = fr,en,es

La langue indiquée dans ce champ doit être en format ISO 639-1.

target_os

Nouveau dans la version 1.5.1.18.

Indique le système d’exploitation prévu pour le paquet.

Un agent verra par défault les paquets prévus pour son système d’exploitation et les paquets avec un champ target_os sans valeur.

Since version 1.8 the field target_os can either be windows, mac, linux or left empty.

min_os_version

Nouveau dans la version 1.3.9.

For a windows target_os, this field defines the minimal Windows Operating System Version. For example, this attribute may be used to avoid installing on WindowsXP packages that only work on Windows7 and above.

Since version 1.8, it can also define the minimal Mac OS version. We advise not to use it with Linux since there are several different distributions.

max_os_version

Nouveau dans la version 1.3.9.

For a windows target_os, it defines the maximal Windows Operating System Version. For example, this attribute may be used to install on Windows7 more recent versions of a software that are no more supported on Windows XP.

Since version 1.8, it can also define the maximal Mac OS version. We advise not to use it with Linux since there are several different distributions.

min_wapt_version

Nouveau dans la version 1.3.8.

Il s’agit de la version minimale de WAPT nécessaire pour installer du paquet.

Note

Le code de WAPT évoluant, certaines fonctions que vous aurez utilisées dans vos anciens paquets peuvent devenir obsolètes avec les nouvelles versions des agents WAPT.

sources

Définit un dépôt SVN, par exemple :

Cela permet de versionner le paquet et de concevoir collaborativement le paquet.

Indication

Le versionnement des paquets est très utile dans un contexte où plusieurs personnes créent des paquets de manière collaborative. Cette fonction permet également une traçabilité qui peut être utile dans un contexte réglementaire.

installed_size

Définit un espace disque libre minimum que doit avoir la machine pour lancer l’installation du paquet.

Exemple :

installed_size: 254251008

Le test d’espace disque disponible est fait sur le dossier C:Program Files.

La valeur renseignée dans installed_size doit être en bytes.

Indication

Pour convertir des valeurs de stockage en bytes, visiter https://www.convertworld.com/fr/mesures-informatiques/.

impacted_process

Nouveau dans la version 1.5.1.18.

Indique les processus impactés par le paquet.

Exemple :

impacted_process : firefox.exe,chrome.exe,iexplorer.exe

Ce champ est utilisé par les fonctions install_msi_if_needed et install_exe_if_needed si killbefore n’est pas renseigné.

impacted_process est également utilisé lors de la désinstallation d’un paquet. Cela permet de fermer l’application si l’application est ouverture avant sa désinstallation.

audit_schedule

Nouveau dans la version 1.6.

Indique une periodicité pour l’exécution de la fonction audit du paquet.

Exemple :

audit_schedule : 60

La valeur peut être indiquée de plusieurs manières :

  • Un entier (en minutes) ;

  • un entier suivi d’une lettre (m = minutes , h = heure , d = jour , w = semaine) ;

editor

Nouveau dans la version 1.6.

Indique le nom de l’éditeur du logiciel embarqué dans le paquet WAPT.

Exemple :

editor: Mozilla

La liste des valeurs pourra être utilisée dans la console et dans le selfservice pour trier les paquets.

keywords

Nouveau dans la version 1.6.

Liste de mots clés décrivant le paquet dans un objectif de classification.

Exemple :

keywords: editeur,bureautique,tableur

La liste des valeurs pourra être utilisée dans la console et dans le selfservice pour trier les paquets.

licence

Nouveau dans la version 1.6.

Indique la licence du logiciel integré dans le paquet

Exemple :

licence: GPLV3

La liste des valeurs pourra être utilisée dans la console et dans le selfservice pour trier les paquets.

homepage

Nouveau dans la version 1.6.

Indique la page d’accueil du site officiel de logiciel integrée dans le paquet.

Exemple :

homepage: https://wapt.fr

La liste des valeurs pourra être utilisée dans la console et dans le selfservice pour trier les paquets.

signer

Automatiquement renseigné lors de la signature des paquets.

Il s’agit du CN renseigné dans la clé privée du signataire du paquet. Il s’agit le plus souvent du nom complet du signataire.

signer_fingerprint

Automatiquement renseigné lors de la signature des paquets.

Il s’agit de l’empreinte de la clé privée qui a signé le paquet.

signature

Automatiquement renseigné lors de la signature des paquets.

Il s’agit de la signature des attributs du paquet.

signature_date

Automatiquement renseigné lors de la signature des paquets.

Il s’agit de la date de signature des attributs du paquet.

signed_attributes

Automatiquement renseigné lors de la signature des paquets.

Il s’agit de la liste des attributs signés.

Le fichier setup.py

import setuphelpers

On trouvera au début de chaque paquet cette ligne :

from setuphelpers import *

Nous demandons au paquet d’importer toutes les fonctions depuis la librairie Setuphelpers.

Setuphelpers est la librairie integrée à WAPT, elle embarque des fonctions simplifiées pour aider à créer des paquets.

uninstallkey list

Nous trouvons ensuite :

uninstallkey = ['tisnaps2','Mozilla Firefox 45.6.0 ESR (x86 fr)']

Nous déclarerons ici une liste des uninstall keys associées au paquet. Quand un paquet est supprimé, l’agent WAPT recherche dans la base de registre la uninstallkey correspondant au paquet. Cette uninstallkey indiquera à l’agent WAPT les actions à déclencher pour supprimer le logiciel.

Même s’il n’y a pas de uninstallkey pour le paquet, il faudra quand même déclarer une uninstallkey vide :

uninstallkey = []

Fonction install()

Vient ensuite la déclaration de la fonction setup.py.

C’est la recette du paquet WAPT.

def install():
    run('"install.exe" /S')

Le fichier wapt.psproj

On trouve dans le dossier WAPT un fichier wapt.psproj.

C’est le projet PyScripter du paquet WAPT.

Pour éditer un paquet avec PyScripter, il suffira d’ouvrir ce fichier.

Le fichier icon.png

On trouve dans le dossier WAPT un fichier icon.png.

Il permet d’associer une icône au paquet.

Cette icône apparaîtra dans l’interface web du self-service WAPT (http://127.0.0.1:8088).

Indication

L’icône devra être au format png 48px par 48px.

Le fichier manifest.sha256

On trouve dans le dossier WAPT un fichier manifest.sha256.

Il contient l’empreinte sha256 de chaque fichier du package.

Le fichier control

On trouve dans le dossier WAPT un fichier signature.

Le fichier contient la signature du fichier manifest.sha256.

A l’installation du paquet, wapt-get vérifie :

  • C:\Program Files (x86)\wapt\

  • que l’empreinte sha256 de chaque fichier est identique à celle contenue dans le fichier manifest.sha256 ;

Autres fichiers

D’autres fichiers peuvent être embarqués dans le paquet WAPT. Par exemple :

  • un installeur à côté du setup.py à appeler dans votre setup.py ;

  • un fichier de réponses à passer à l’installeur du logiciel ;

  • un fichier de licence ;