asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T PKTe[n plugins/pesign.pynuȯ#!/usr/libexec/platform-python # # Copyright 2017 Peter Jones # # Distributed under terms of the GPLv3 license. """ mock plugin to make sure pesign and mockbuild users have the right uid and gid. """ from mockbuild.trace_decorator import getLog, traceLog import mockbuild.util requires_api_version = "1.1" @traceLog() def init(plugins, conf, buildroot): """ hello """ Pesign(plugins, conf, buildroot) def getuid(name): """ get a uid for a user name """ output = mockbuild.util.do(["getent", "passwd", "%s" % (name,)], returnOutput=1, printOutput=True) output = output.split(':') return output[2], output[3] def getgid(name): """ get a gid for a group name """ output = mockbuild.util.do(["getent", "group", "%s" % (name,)], returnOutput=1, printOutput=True) return output.split(':')[2] def newgroup(name, gid, rootdir): """ create a group with a gid """ getLog().info("creating group %s with gid %s" % (name, gid)) mockbuild.util.do(["groupadd", "-g", "%s" % (gid,), "-R", "%s" % (rootdir,), "%s" % (name,), ]) def newuser(name, uid, gid, rootdir): """ create a user with a uid """ getLog().info("creating user %s with uid %s" % (name, uid)) mockbuild.util.do(["useradd", "-u", "%s" % (uid,), "-g", "%s" % (gid,), "-R", "%s" % (rootdir,), "%s" % (name,)]) class Pesign(object): """ Creates some stuff in our mock root """ # pylint: disable=too-few-public-methods @traceLog() def __init__(self, plugins, conf, buildroot): """ Effectively we're doing: getent group pesign >/dev/null || groupadd -r pesign getent passwd pesign >/dev/null || \ useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin \ -c "Group for the pesign signing daemon" pesign """ self.buildroot = buildroot self.pesign_opts = conf self.config = buildroot.config self.state = buildroot.state self.users = {} self.groups = {} plugins.add_hook("postinit", self._pesignPostInitHook) @traceLog() def _pesignPostInitHook(self): """ find our uid and gid lists """ for user in self.pesign_opts['users']: uid, gid = getuid(user) self.users[user] = [user, uid, gid] for group in self.pesign_opts['groups']: gid = getgid(group) self.groups[group] = [group, gid] # create our users rootdir = self.buildroot.make_chroot_path() for name, gid in self.groups.values(): newgroup(name, gid, rootdir) for name, uid, gid in self.users.values(): newuser(name, uid, gid, rootdir) # -*- coding: utf-8 -*- # vim:fenc=utf-8:tw=75 PKTe[F+. . )plugins/__pycache__/pesign.cpython-36.pycnu[3 ,d @sbdZddlmZmZddlZdZeddZddZd d Z d d Z d dZ Gddde Z dS)zQ mock plugin to make sure pesign and mockbuild users have the right uid and gid. )getLogtraceLogNz1.1cCst|||dS)z hello N)Pesign)pluginsconf buildrootr/usr/lib/python3.6/pesign.pyinitsr cCs8tjjddd|fgddd}|jd}|d|d fS) z get a uid for a user name getentZpasswdz%sT) returnOutput printOutput:) mockbuildutildosplit)nameoutputrrr getuids  rcCs,tjjddd|fgddd}|jddS) z get a gid for a group name r groupz%sr T)r rrr)rrrr)rrrrr getgids rcCsBtjd||ftjjddd|fdd|fd|fgdS)z create a group with a gid zcreating group %s with gid %sZgroupaddz-gz%sz-RN)rinforrr)rgidrootdirrrr newgroup#s   rc CsLtjd||ftjjddd|fdd|fdd|fd|fgdS)z create a user with a uid zcreating user %s with uid %sZuseraddz-uz%sz-gz-RN)rrrrr)ruidrrrrr newuser,s    r c@s,eZdZdZeddZeddZdS)rz% Creates some stuff in our mock root cCs:||_||_|j|_|j|_i|_i|_|jd|jdS)a# Effectively we're doing: getent group pesign >/dev/null || groupadd -r pesign getent passwd pesign >/dev/null || useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin -c "Group for the pesign signing daemon" pesign ZpostinitN)r pesign_optsconfigstateusersgroupsZadd_hook_pesignPostInitHook)selfrrrrrr __init__8s zPesign.__init__cCsx.|jdD] }t|\}}|||g|j|<q Wx(|jdD]}t|}||g|j|<q s  PKTe[F+. . /plugins/__pycache__/pesign.cpython-36.opt-1.pycnu[3 ,d @sbdZddlmZmZddlZdZeddZddZd d Z d d Z d dZ Gddde Z dS)zQ mock plugin to make sure pesign and mockbuild users have the right uid and gid. )getLogtraceLogNz1.1cCst|||dS)z hello N)Pesign)pluginsconf buildrootr/usr/lib/python3.6/pesign.pyinitsr cCs8tjjddd|fgddd}|jd}|d|d fS) z get a uid for a user name getentZpasswdz%sT) returnOutput printOutput:) mockbuildutildosplit)nameoutputrrr getuids  rcCs,tjjddd|fgddd}|jddS) z get a gid for a group name r groupz%sr T)r rrr)rrrr)rrrrr getgids rcCsBtjd||ftjjddd|fdd|fd|fgdS)z create a group with a gid zcreating group %s with gid %sZgroupaddz-gz%sz-RN)rinforrr)rgidrootdirrrr newgroup#s   rc CsLtjd||ftjjddd|fdd|fdd|fd|fgdS)z create a user with a uid zcreating user %s with uid %sZuseraddz-uz%sz-gz-RN)rrrrr)ruidrrrrr newuser,s    r c@s,eZdZdZeddZeddZdS)rz% Creates some stuff in our mock root cCs:||_||_|j|_|j|_i|_i|_|jd|jdS)a# Effectively we're doing: getent group pesign >/dev/null || groupadd -r pesign getent passwd pesign >/dev/null || useradd -r -g pesign -d /var/run/pesign -s /sbin/nologin -c "Group for the pesign signing daemon" pesign ZpostinitN)r pesign_optsconfigstateusersgroupsZadd_hook_pesignPostInitHook)selfrrrrrr __init__8s zPesign.__init__cCsx.|jdD] }t|\}}|||g|j|<q Wx(|jdD]}t|}||g|j|<q s  PKTe[n plugins/pesign.pynuȯPKTe[F+. . ) plugins/__pycache__/pesign.cpython-36.pycnu[PKTe[F+. . /plugins/__pycache__/pesign.cpython-36.opt-1.pycnu[PK)#