add audit_data

This commit is contained in:
2023-10-23 09:45:30 +02:00
parent 1f0a3a269f
commit 2465a26e30
2 changed files with 87 additions and 37 deletions

View File

@@ -1,5 +1,5 @@
package : comi-apps-to-update-on-wapt-server
version : 0-10
version : 0-13
architecture : all
section : base
priority : optional

View File

@@ -3,6 +3,46 @@ from setuphelpers import *
import requests
import json
from configparser import ConfigParser
from waptpackage import HostCapabilities
from waptpackage import WaptRemoteRepo
from waptpackage import PackageVersion
all_package = {}
dict_host_capa = {
"ubuntu22frx64": HostCapabilities(
architecture="x64",
language="fr",
os="ubuntu",
packages_locales=["fr", "en", "es", "de", "it"],
tags=["debian", "debian_based", "linux", "unix", "debian11", "ubuntu-22"],
os_version="11",
),
"ubuntu20frx64": HostCapabilities(
architecture="x64",
language="fr",
os="ubuntu",
packages_locales=["fr", "en", "es", "de", "it"],
tags=["debian", "debian_based", "linux", "unix", "debian11", "ubuntu-20"],
os_version="11",
),
"debian11frx64": HostCapabilities(
architecture="x64",
language="fr",
os="debian",
packages_locales=["fr", "en", "es", "de", "it"],
tags=["debian-bullseye", "debian", "debian_based", "linux", "unix", "debian11", "debian-11"],
os_version="11",
),
"win10x64fr": HostCapabilities(
architecture="x64",
language="fr",
os="windows",
packages_locales=["fr", "en", "es", "de", "it"],
tags=["windows-10", "win-10", "w-10", "windows10", "win10", "w10", "windows", "win", "w"],
os_version="10.0.19043",
),
}
def install():
@@ -25,45 +65,55 @@ def audit():
print("suppression de l'ancienne version du fichier json")
remove_file(app_to_update_json_path)
store = WaptRemoteRepo(name="main", url="https://wapt.tranquil.it/wapt", timeout=4, verify_cert=False)
localstore = WaptRemoteRepo(name="main", url="https://srvwapt.comitari.fr/wapt", timeout=4, verify_cert=False)
# Download JSON data from the URL
json_data = download_json_from_url("https://wapt.tranquil.it/store/packages_list")
if json_data is None:
return "ERROR"
online_dict = {}
transformed_package_dict = {}
app_to_update_list = []
online_package_list = {}
local_package_list = {}
for hc in dict_host_capa:
online_package_version = {}
for packageentry in store.packages():
if dict_host_capa[hc].is_matching_package(packageentry):
if not packageentry.package in online_package_version:
online_package_version[packageentry.package] = "0"
if PackageVersion(online_package_version[packageentry.package]) < PackageVersion(packageentry.version):
online_package_version[packageentry.package] = packageentry.version
online_package_list[hc] = online_package_version
# Transform data from JSON into a dictionary
for element in json_data:
online_dict[element[0].replace("tis-", "comi-")] = element[1]
for hc in dict_host_capa:
local_package_version = {}
for packageentry in localstore.packages():
if dict_host_capa[hc].is_matching_package(packageentry):
if not packageentry.package in local_package_version:
local_package_version[packageentry.package] = "0"
if PackageVersion(local_package_version[packageentry.package]) < PackageVersion(packageentry.version):
local_package_version[packageentry.package] = packageentry.version
local_package_list[hc] = local_package_version
# Assuming WAPT.list() returns a list of dictionaries containing package data
local_package_dict = json.loads(wgets("https://%s:%s@%s/api/v3/packages" % (wapt_user, wapt_password, wapt_url)))
# count the number of packages in the WAPT repository
print("Nombre de paquets dans le dépôt WAPT : " + str(len(local_package_dict)))
# Transform package data into a dictionary
for element in local_package_dict["result"]:
transformed_package_dict[element["package"]] = element["version"]
# Compare versions and find packages that need to be updated
for key in online_dict:
if key in transformed_package_dict:
if Version(online_dict[key]) > Version(transformed_package_dict[key]):
print(f"{key} doit etre mis a jour de la version {transformed_package_dict[key]} vers la version {online_dict[key]}")
app_to_update_list.append({"new_package": key, "new_version": online_dict[key], "old_version": transformed_package_dict[key]})
list_app_to_update = []
for hc in dict_host_capa:
for app in local_package_list[hc]:
if "-" in app:
if "tis-" + app.split("-", 1)[1] in online_package_list[hc]:
if PackageVersion(local_package_list[hc][app]) < PackageVersion(online_package_list[hc]["tis-" + app.split("-", 1)[1]]):
print(
f'{app} new version detected from {local_package_list[hc][app]} to {online_package_list[hc]["tis-"+app.split("-", 1)[1]]} for {hc}'
)
list_app_to_update.append(
{
"package": app,
"old_version": local_package_list[hc][app],
"new_version": online_package_list[hc]["tis-" + app.split("-", 1)[1]],
}
)
WAPT.write_audit_data_if_changed("apps_to_upgrade", "list", list_app_to_update, max_count=3)
with open(app_to_update_json_path, "w") as json_file:
json.dump(app_to_update_list, json_file)
return "OK"
json.dump(list_app_to_update, json_file)
def download_json_from_url(url):
try:
response = requests.get(url, verify=False)
response.raise_for_status() # Raise an exception for unsuccessful responses
json_data = response.json()
return json_data
except requests.exceptions.RequestException as e:
print(f"Error downloading JSON from URL: {e}")
return None
if not list_app_to_update:
print("your repository seems up to date")
return "OK"
else:
print("you need to update some packages")
return "WARNING"