OXIESEC PANEL
- Current Dir:
/
/
lib
/
python3.6
/
site-packages
/
up2date_client
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
02/07/2025 11:05:01 PM
rwxr-xr-x
📄
__init__.py
0 bytes
04/03/2024 11:01:35 AM
rw-r--r--
📁
__pycache__
-
07/09/2024 11:23:34 AM
rwxr-xr-x
📄
capabilities.py
7.28 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
cldetect.py
2.97 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
clientCaps.py
2.16 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
clpwd.py
3.56 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
config.py
12.5 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
debUtils.py
2.73 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
getMethod.py
4.2 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
haltree.py
4.53 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
hardware.py
31.91 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
hardware_gudev.py
12.89 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
hardware_hal.py
11.32 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
hardware_udev.py
12.99 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
pkgUtils.py
295 bytes
04/03/2024 11:01:35 AM
rw-r--r--
📄
pkgplatform.py
309 bytes
04/03/2024 12:46:35 PM
rw-r--r--
📄
pmPlugin.py
2.79 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhnChannel.py
4.4 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhnHardware.py
328 bytes
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhnPackageInfo.py
2.04 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhncli.py
9.12 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhnreg.py
32.13 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhnreg_constants.py
18.13 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rhnserver.py
8.66 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rpcServer.py
10.96 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
rpmUtils.py
5.2 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
transaction.py
4.09 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
tui.py
43.7 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
up2dateAuth.py
6.85 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
up2dateErrors.py
10.26 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
up2dateLog.py
2.06 KB
04/03/2024 11:01:35 AM
rw-r--r--
📄
up2dateUtils.py
5.06 KB
04/03/2024 12:46:35 PM
rw-r--r--
Editing: rpmUtils.py
Close
# some high level utility stuff for rpm handling # Client code for Update Agent # Copyright (c) 1999--2016 Red Hat, Inc. Distributed under GPLv2. # # Author: Preston Brown <pbrown@redhat.com> # Adrian Likins <alikins@redhat.com> # # # FIXME: Some exceptions in here are currently in up2date.py # fix by moving to up2dateErrors.py and importing from there # # import os import rpm from rhn.i18n import sstr from up2date_client import transaction import gettext t = gettext.translation('rhn-client-tools', fallback=True) # Python 3 translations don't have a ugettext method if not hasattr(t, 'ugettext'): t.ugettext = t.gettext _ = t.ugettext def installedHeaderByKeyword(**kwargs): """ just cause this is such a potentially useful looking method... """ _ts = transaction.initReadOnlyTransaction() mi = _ts.dbMatch() for keyword in kwargs.keys(): mi.pattern(keyword, rpm.RPMMIRE_GLOB, kwargs[keyword]) # we really shouldnt be getting multiples here, but what the heck headerList = [] for h in mi: headerList.append(h) return headerList def verifyPackages(packages): """ given a list of package labels, run rpm -V on them and return a dict keyed off that data """ data = {} missing_packages = [] # data structure is keyed off package # label, with value being an array of each # line of the output from -V retlist = [] for package in packages: # we have to have at least name... # Note: we cant reliable match on epoch, so just # skip it... two packages that only diff by epoch is # way broken anyway keywords = {'name': package[0], 'version': package[1], 'release': package[2], # we left our epoch 'arch': package[4] } for key in (keywords.keys()): if (keywords[key] == None) or (keywords[key] == ""): del(keywords[key]) headers = installedHeaderByKeyword(**keywords) if len(headers) == 0: missing_packages.append(package) for header in headers: epoch = header['epoch'] if epoch == None: epoch = "" # gpg-pubkey "packages" can have an arch of None, see bz #162701 arch = header["arch"] if arch == None: arch = "" pkg = (header['name'], header['version'], header['release'], epoch, arch) # dont include arch in the label if it's a None arch, #162701 if header["arch"] == "": packageLabel = "%s-%s-%s" % (pkg[0], pkg[1], pkg[2]) else: packageLabel = "%s-%s-%s.%s" % (pkg[0], pkg[1], pkg[2], pkg[4]) verifystring = "/usr/bin/rpmverify -V %s" % packageLabel fd = os.popen(verifystring) res = fd.readlines() fd.close() reslist = [] for line in res: reslist.append(line.strip()) retlist.append([pkg, reslist]) return retlist, missing_packages #FIXME: this looks like a good candidate for caching, since it takes a second # or two to run, and I can call it a couple of times def getInstalledPackageList(msgCallback = None, progressCallback = None, getArch=None, getInfo = None): """ Return list of packages. Package is hash with keys name, epoch, version, release and optionaly arch and cookie """ pkg_list = [] if msgCallback != None: msgCallback(_("Getting list of packages installed on the system")) _ts = transaction.initReadOnlyTransaction() count = 0 total = 0 for h in _ts.dbMatch(): if h == None: break count = count + 1 total = count count = 0 for h in _ts.dbMatch(): if h == None: break package = { 'name': sstr(h['name']), 'epoch': h['epoch'], 'version': sstr(h['version']), 'release': sstr(h['release']), 'installtime': h['installtime'] } if package['epoch'] == None: package['epoch'] = "" else: # convert it to string package['epoch'] = "%s" % package['epoch'] if getArch: package['arch'] = h['arch'] # the arch on gpg-pubkeys is "None"... if package['arch']: package['arch'] = sstr(package['arch']) pkg_list.append(package) elif getInfo: if h['arch']: package['arch'] = sstr(h['arch']) if h['cookie']: package['cookie'] = sstr(h['cookie']) pkg_list.append(package) else: pkg_list.append(package) if progressCallback != None: progressCallback(count, total) count = count + 1 pkg_list.sort(key=lambda x:(x['name'], x['epoch'], x['version'], x['release'])) return pkg_list def setDebugVerbosity(): """Set rpm's verbosity mode """ try: rpm.setVerbosity(rpm.RPMLOG_DEBUG) except AttributeError: print("extra verbosity not supported in this version of rpm")