X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Finfo%2Fnss.py;fp=ipsilon%2Finfo%2Fnss.py;h=0000000000000000000000000000000000000000;hp=0669e95de95c9e4ddb044f0ee4823647a69270be;hb=38d9a4c974d7d5b58edefd4857492648a6102d38;hpb=7c69a27be37b979b8734ad105239bfe10cfeaceb diff --git a/ipsilon/info/nss.py b/ipsilon/info/nss.py deleted file mode 100644 index 0669e95..0000000 --- a/ipsilon/info/nss.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (C) 2014 Ipsilon Project Contributors -# -# See the file named COPYING for the project license - -from ipsilon.info.common import InfoProviderBase -from ipsilon.info.common import InfoProviderInstaller -from ipsilon.util.plugin import PluginObject -from ipsilon.util.policy import Policy -import grp -import pwd -import os - - -posix_map = [ - ['gecos', 'fullname'] -] - - -class InfoProvider(InfoProviderBase): - - def __init__(self, *pargs): - super(InfoProvider, self).__init__(*pargs) - self.mapper = Policy(posix_map) - self.name = 'nss' - self.new_config(self.name) - - def _get_posix_user(self, user): - p = pwd.getpwnam(user) - return {'username': p.pw_name, 'uidNumber': p.pw_uid, - 'gidNumber': p.pw_gid, 'gecos': p.pw_gecos, - 'homeDirectory': p.pw_dir, 'loginShell': p.pw_shell} - - def _get_posix_groups(self, user, group): - groups = set() - getgrouplist = getattr(os, 'getgrouplist', None) - if getgrouplist: - ids = getgrouplist(user, group) - for i in ids: - try: - g = grp.getgrgid(i) - groups.add(g.gr_name) - except KeyError: - pass - - else: - g = grp.getgrgid(group) - groups.add(g.gr_name) - - allg = grp.getgrall() - for g in allg: - if user in g.gr_mem: - groups.add(g.gr_name) - - return list(groups) - - def get_user_attrs(self, user): - reply = dict() - try: - posix_user = self._get_posix_user(user) - userattrs, extras = self.mapper.map_attributes(posix_user) - groups = self._get_posix_groups(posix_user['username'], - posix_user['gidNumber']) - reply = userattrs - reply['_groups'] = groups - reply['_extras'] = {'posix': extras} - - except KeyError: - pass - - return reply - - -class Installer(InfoProviderInstaller): - - def __init__(self, *pargs): - super(Installer, self).__init__() - self.name = 'nss' - self.pargs = pargs - - def install_args(self, group): - group.add_argument('--info-nss', choices=['yes', 'no'], default='no', - help='Use passwd data to populate user attrs') - - def configure(self, opts): - if opts['info_nss'] != 'yes': - return - - # Add configuration data to database - po = PluginObject(*self.pargs) - po.name = 'nss' - po.wipe_data() - po.wipe_config_values() - - # Update global config to add info plugin - po.is_enabled = True - po.save_enabled_state()