Server IP : 103.169.32.36 / Your IP : 216.73.216.202 Web Server : Apache System : Linux web.dpmptsp 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64 User : apache ( 48) PHP Version : 5.6.40 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/python2.7/site-packages/yum/ |
Upload File : |
| Current File : /usr/lib/python2.7/site-packages/yum/igroups.py |
#! /usr/bin/python -tt
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Copyright 2010, 2012 Red Hat
#
# James Antill <james@fedoraproject.org>
import os
import fnmatch
import re
def _open_no_umask(*args):
""" Annoying people like to set umask's for root, which screws everything
up for user readable stuff. """
oumask = os.umask(022)
try:
ret = open(*args)
finally:
os.umask(oumask)
return ret
def _makedirs_no_umask(*args):
""" Annoying people like to set umask's for root, which screws everything
up for user readable stuff. """
oumask = os.umask(022)
try:
ret = os.makedirs(*args)
finally:
os.umask(oumask)
return ret
def _read_str(fo):
for s in fo:
if s[:-1]:
return s[:-1]
return ''
class InstalledGroup(object):
def __init__(self, gid):
self.gid = gid
self.pkg_names = set()
self.environment = None
def __cmp__(self, other):
if other is None:
return 1
return cmp(self.gid, other.gid)
def _additions(self, pkg_names):
pkg_names = set(pkg_names)
return sorted(pkg_names.difference(self.pkg_names))
def _removals(self, pkg_names):
pkg_names = set(pkg_names)
return sorted(pkg_names.difference(self.pkg_names))
groupid = property(fget=lambda self: self.gid,
fset=lambda self, value: setattr(self, "gid", value),
fdel=lambda self: setattr(self, "gid", None),
doc="Compat. to treat comps groups/igroups the same")
class InstalledEnvironment(object):
def __init__(self, evgid):
self.evgid = evgid
self.grp_names = set()
def __cmp__(self, other):
if other is None:
return 1
return cmp(self.evgid, other.evgid)
def _additions(self, grp_names):
grp_names = set(grp_names)
return sorted(grp_names.difference(self.grp_names))
def _removals(self, grp_names):
grp_names = set(grp_names)
return sorted(grp_names.difference(self.grp_names))
environmentid = property(fget=lambda self: self.evgid,
fset=lambda self, value: setattr(self, "evgid", value),
fdel=lambda self: setattr(self, "evgid", None),
doc="Compat. to treat comps groups/igroups the same")
class InstalledGroups(object):
def __init__(self, db_path):
self.groups = {}
self.changed = False
self.environments = {}
self._read_pkg_grps(db_path)
self._read_grp_grps(db_path)
def _read_pkg_grps(self, db_path):
self.filename = db_path + "/installed"
if not os.access(self.filename, os.R_OK):
return
fo = open(self.filename)
try:
ver = int(_read_str(fo))
except ValueError:
return
if ver != 1:
return
groups_num = int(_read_str(fo))
while groups_num > 0:
groups_num -= 1
grp = InstalledGroup(_read_str(fo))
self.groups[grp.gid] = grp
num = int(_read_str(fo))
while num > 0:
num -= 1
grp.pkg_names.add(_read_str(fo))
def _read_grp_grps(self, db_path):
self.grp_filename = db_path + "/environment"
if not os.access(self.grp_filename, os.R_OK):
return
fo = open(self.grp_filename)
try:
ver = int(_read_str(fo))
except ValueError:
return
if ver != 1:
return
groups_num = int(_read_str(fo))
while groups_num > 0:
groups_num -= 1
evgrp = InstalledEnvironment(_read_str(fo))
self.environments[evgrp.evgid] = evgrp
num = int(_read_str(fo))
while num > 0:
num -= 1
grpname = _read_str(fo)
memb = _read_str(fo)
evgrp.grp_names.add(grpname)
assert memb in ('true', 'false')
if memb == 'true':
assert grpname in self.groups
if grpname in self.groups:
self.groups[grpname].environment = evgrp.evgid
def close(self):
pass
def save(self, force=False):
if not force and not self.changed:
return False
db_path = os.path.dirname(self.filename)
if not os.path.exists(db_path):
try:
_makedirs_no_umask(db_path)
except (IOError, OSError), e:
# some sort of useful thing here? A warning?
return False
if not os.access(db_path, os.W_OK):
return False
self._write_pkg_grps()
self._write_grp_grps()
self.changed = False
def _write_pkg_grps(self):
fo = _open_no_umask(self.filename + '.tmp', 'w')
fo.write("1\n") # version
fo.write("%u\n" % len(self.groups))
for grp in sorted(self.groups.values()):
fo.write("%s\n" % grp.gid)
fo.write("%u\n" % len(grp.pkg_names))
for pkgname in sorted(grp.pkg_names):
fo.write("%s\n" % pkgname)
fo.close()
os.rename(self.filename + '.tmp', self.filename)
def _write_grp_grps(self):
fo = _open_no_umask(self.grp_filename + '.tmp', 'w')
fo.write("1\n") # version
fo.write("%u\n" % len(self.environments))
for evgrp in sorted(self.environments.values()):
fo.write("%s\n" % evgrp.evgid)
fo.write("%u\n" % len(evgrp.grp_names))
for grpname in sorted(evgrp.grp_names):
fo.write("%s\n" % grpname)
if (grpname in self.groups and
self.groups[grpname].environment == evgrp.evgid):
fo.write("%s\n" % "true")
else:
fo.write("%s\n" % "false")
fo.close()
os.rename(self.grp_filename + '.tmp', self.grp_filename)
def add_group(self, groupid, pkg_names, ievgrp=None):
self.changed = True
if groupid not in self.groups:
self.groups[groupid] = InstalledGroup(groupid)
grp = self.groups[groupid]
for pkg_name in pkg_names:
grp.pkg_names.add(pkg_name)
if ievgrp is not None:
grp.environment = ievgrp.evgid
ievgrp.grp_names.add(groupid)
return grp
def del_group(self, groupid):
self.changed = True
if groupid in self.groups:
del self.groups[groupid]
def return_groups(self, group_pattern, case_sensitive=False):
returns = {}
if not group_pattern:
return []
for item in group_pattern.split(','):
item = item.strip()
if item in self.groups:
thisgroup = self.groups[item]
returns[thisgroup.gid] = thisgroup
continue
if case_sensitive:
match = re.compile(fnmatch.translate(item)).match
else:
match = re.compile(fnmatch.translate(item), flags=re.I).match
done = False
for group in self.groups.values():
if match(group.gid):
done = True
returns[group.gid] = group
break
return returns.values()
def add_environment(self, evgroupid, grp_names):
self.changed = True
if evgroupid not in self.environments:
self.environments[evgroupid] = InstalledEnvironment(evgroupid)
grp = self.environments[evgroupid]
for grp_name in grp_names:
grp.grp_names.add(grp_name)
return grp
def del_environment(self, evgroupid):
self.changed = True
if evgroupid in self.environments:
del self.environments[evgroupid]
def return_environments(self, evgroup_pattern, case_sensitive=False):
returns = {}
if not evgroup_pattern:
return []
for item in evgroup_pattern.split(','):
item = item.strip()
if item in self.environments:
thisgroup = self.environments[item]
returns[thisgroup.evgid] = thisgroup
continue
if case_sensitive:
match = re.compile(fnmatch.translate(item)).match
else:
match = re.compile(fnmatch.translate(item), flags=re.I).match
done = False
for group in self.environments.values():
if match(group.evgid):
done = True
returns[group.evgid] = group
break
return returns.values()
| N4m3 |
5!z3 |
L45t M0d!f!3d |
0wn3r / Gr0up |
P3Rm!55!0n5 |
0pt!0n5 |
| .. |
-- |
December 21 2023 09:18:24 |
0 / 0 |
0755 |
|
| | | | | |
| Errors.py |
4.265 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| Errors.pyc |
9.084 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| __init__.py |
304.096 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| __init__.pyc |
199.779 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| callbacks.py |
5.64 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| callbacks.pyc |
6.232 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| comps.py |
31.586 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| comps.pyc |
26.872 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| config.py |
49.886 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| config.pyc |
48.018 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| constants.py |
4.516 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| constants.pyc |
3.42 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| depsolve.py |
74.046 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| depsolve.pyc |
46.906 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| drpm.py |
12.851 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| drpm.pyc |
10.834 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| failover.py |
5.005 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| failover.pyc |
5.236 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| fssnapshots.py |
10.159 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| fssnapshots.pyc |
9.752 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| history.py |
61.125 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| history.pyc |
53.306 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| i18n.py |
20.437 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| i18n.pyc |
16.05 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| igroups.py |
9.313 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| igroups.pyc |
10.218 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| logginglevels.py |
7.904 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| logginglevels.pyc |
6.511 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| mdparser.py |
6.258 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| mdparser.pyc |
7.58 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| metalink.py |
9.188 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| metalink.pyc |
8.836 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| misc.py |
39.567 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| misc.pyc |
39.58 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| packageSack.py |
40.786 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| packageSack.pyc |
41.88 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| packages.py |
84.104 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| packages.pyc |
84.514 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| parser.py |
7.973 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| parser.pyc |
6.499 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| pgpmsg.py |
53.5 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| pgpmsg.pyc |
38.268 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| pkgtag_db.py |
4.864 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| pkgtag_db.pyc |
5.061 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| plugins.py |
28.1 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| plugins.pyc |
29.097 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| repoMDObject.py |
11.231 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| repoMDObject.pyc |
9.17 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| repos.py |
16.528 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| repos.pyc |
17.383 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| rpmsack.py |
70.255 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| rpmsack.pyc |
58.355 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| rpmtrans.py |
24.845 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| rpmtrans.pyc |
22.544 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| sqlitesack.py |
69.763 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| sqlitesack.pyc |
53.751 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| sqlutils.py |
6.271 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| sqlutils.pyc |
5.602 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| transactioninfo.py |
33.784 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| transactioninfo.pyc |
30.293 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| update_md.py |
25.9 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| update_md.pyc |
21.722 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| updateinfo.py |
18.29 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| updateinfo.pyc |
16.36 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|
| yumRepo.py |
83.852 KB |
October 01 2020 17:03:44 |
0 / 0 |
0755 |
|
| yumRepo.pyc |
64.827 KB |
October 01 2020 17:03:44 |
0 / 0 |
0644 |
|