[X2Go-Commits] x2gobroker.git - build-main (branch) updated: e313c67ec94b6e86cd7de7623e9a538db739cedf
X2Go dev team
git-admin at x2go.org
Sun May 19 13:03:06 CEST 2013
The branch, build-main has been updated
via e313c67ec94b6e86cd7de7623e9a538db739cedf (commit)
from 6b4fb9fc63be39e279a311614ffce9e47609d770 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
x2gobroker/brokers/base_broker.py | 16 ++++++++
x2gobroker/nameservices/base_nameservice.py | 14 +++----
x2gobroker/nameservices/libnss_nameservice.py | 14 +++----
x2gobroker/nameservices/testsuite_nameservice.py | 43 ++++++++++------------
x2gobroker/tests/test_broker_base.py | 22 ++++++++++-
5 files changed, 69 insertions(+), 40 deletions(-)
The diff of changes is:
diff --git a/x2gobroker/brokers/base_broker.py b/x2gobroker/brokers/base_broker.py
index caaf85c..1daf79a 100644
--- a/x2gobroker/brokers/base_broker.py
+++ b/x2gobroker/brokers/base_broker.py
@@ -434,6 +434,22 @@ class X2GoBroker(object):
else:
return False
+ def get_primary_group(self, username):
+ """\
+ Get the primary group of a given user.
+
+ @param username: get primary group for this username
+ @type username: C{unicode}
+
+ @return: returns the name of the primary group
+ @rtype: C{unicode}
+
+ """
+ if self._import_nameservice_module(service=self.get_groupdb_service()):
+ return self.nameservice_module.X2GoBrokerNameService().get_primary_group(username)
+ else:
+ return False
+
def is_group_member(self, username, group, primary_groups=False):
"""\
Check if a user is member of a given group.
diff --git a/x2gobroker/nameservices/base_nameservice.py b/x2gobroker/nameservices/base_nameservice.py
index b6c53af..cf05c38 100644
--- a/x2gobroker/nameservices/base_nameservice.py
+++ b/x2gobroker/nameservices/base_nameservice.py
@@ -21,25 +21,23 @@
class X2GoBrokerNameService(object):
def has_user(self, username):
- return username in self.get_users()
+ return unicode(username) in self.get_users()
def get_users(self):
return []
def get_primary_group(self, username):
- return []
+ return u''
def has_group(self, group):
- return group in self.get_groups()
+ return unicode(group) in self.get_groups()
def get_groups(self):
return []
def is_group_member(self, username, group, primary_groups=False):
- _groups = self.get_group_members(group)
- if primary_groups:
- _groups.extend(self.get_primary_group(username))
- return username in _groups
+ _members = self.get_group_members(group, primary_groups=primary_groups)
+ return unicode(username) in _members
def get_group_members(self, group, primary_groups=False):
return []
@@ -48,5 +46,5 @@ class X2GoBrokerNameService(object):
_groups = []
for _group in self.get_groups():
if self.is_group_member(username=username, group=_group, primary_groups=primary_groups):
- _groups.append(_group)
+ _groups.append(unicode(_group))
return _groups
diff --git a/x2gobroker/nameservices/libnss_nameservice.py b/x2gobroker/nameservices/libnss_nameservice.py
index c7a6e84..5f11f4c 100644
--- a/x2gobroker/nameservices/libnss_nameservice.py
+++ b/x2gobroker/nameservices/libnss_nameservice.py
@@ -29,20 +29,20 @@ import base_nameservice as base
class X2GoBrokerNameService(base.X2GoBrokerNameService):
def get_users(self):
- return [ p.pw_name for p in pwd.getpwall() ]
+ return [ unicode(p.pw_name) for p in pwd.getpwall() ]
def get_primary_group(self, username):
- prim_gid_number = [ p.pw_gid for p in pwd.getpwall() if p.pw_name == username ]
- return [ g.gr_name for g in grp.getgrall() if g.gr_gid in prim_gid_number ]
+ prim_gid_number = [ p.pw_gid for p in pwd.getpwall() if unicode(p.pw_name) == unicode(username) ][0]
+ return [ unicode(g.gr_name) for g in grp.getgrall() if g.gr_gid == prim_gid_number ][0]
def get_groups(self):
- return [ g.gr_name for g in grp.getgrall() ]
+ return [ unicode(g.gr_name) for g in grp.getgrall() ]
def get_group_members(self, group, primary_groups=False):
_members_from_primgroups = []
if primary_groups:
for username in self.get_users():
- if group in self.get_primary_group(username):
- _members_from_primgroups.append(group)
- return grp.getgrnam(group).gr_mem + _members_from_primgroups
+ if unicode(group) == self.get_primary_group(username):
+ _members_from_primgroups.append(unicode(username))
+ return [ unicode(u) for u in grp.getgrnam(group).gr_mem ] + _members_from_primgroups
diff --git a/x2gobroker/nameservices/testsuite_nameservice.py b/x2gobroker/nameservices/testsuite_nameservice.py
index e1e8173..a0ea7e2 100644
--- a/x2gobroker/nameservices/testsuite_nameservice.py
+++ b/x2gobroker/nameservices/testsuite_nameservice.py
@@ -21,38 +21,33 @@
# Python X2GoBroker modules
import base_nameservice as base
+_users = [ u'maja', u'willi', u'flip', u'kassandra', u'thekla' ]
+_groups = {
+ u'male': [u'willi', u'flip'],
+ u'female': [u'maja', u'kassandra', u'thekla'],
+ u'bees': [u'maja', u'willi', u'kassandra'],
+ u'grasshoppers': [u'flip'],
+ u'spiders': [u'thekla'],
+}
+
class X2GoBrokerNameService(base.X2GoBrokerNameService):
def get_users(self):
- return [ 'maja', 'willi', 'flip', 'kassandra', 'thekla' ]
+ return _users
def get_primary_group(self, username):
- return username
+ return unicode(username)
def get_groups(self):
- return [ 'male', 'female', 'bees', 'grasshoppers', 'spiders' ]
+ return _groups.keys() + _users
def get_group_members(self, group, primary_groups=False):
- _groups = []
- _dict = {
- 'male': ['willi', 'flip'],
- 'female': ['maja', 'kassandra', 'thekla'],
- 'bees': ['maja', 'willi', 'kassandra'],
- 'grasshoppers': ['flip'],
- 'spiders': ['thekla'],
- }
- if group in _dict.keys():
- _groups.extend(_dict[group])
- _dict_prim = {
- 'maja': 'maja',
- 'willi': 'willi',
- 'flip': 'flip',
- 'kassandra': 'kassandra',
- 'thekla': 'thekla',
- }
- if group in _dict_prim.keys() and primary_groups:
- _groups.extend(_dict_prim[group])
-
- return _groups
+ _members = []
+ if group in _groups.keys():
+ _members.extend(_groups[group])
+ for username in self.get_users():
+ if unicode(group) == self.get_primary_group(username):
+ _members.append(username)
+ return _members
diff --git a/x2gobroker/tests/test_broker_base.py b/x2gobroker/tests/test_broker_base.py
index 9abd1cc..14a9e21 100644
--- a/x2gobroker/tests/test_broker_base.py
+++ b/x2gobroker/tests/test_broker_base.py
@@ -203,6 +203,24 @@ enable = true
self.assertTrue( ( 'root' not in base_backend.get_group_members('root') ) )
self.assertTrue( ( 'root' in base_backend.get_group_members('root', primary_groups=True) ) )
+ def test_nameservicelibnss_primgroup(self):
+ _config_defaults = copy.deepcopy(x2gobroker.defaults.X2GOBROKER_CONFIG_DEFAULTS)
+ _config_defaults.update({'base': {'enable': True, }, })
+ _config = """
+[global]
+default-user-db = libnss
+default-group-db = libnss
+
+[base]
+enable = true
+"""
+ tf = tempfile.NamedTemporaryFile()
+ print >> tf, _config
+ tf.seek(0)
+ base_backend = base.X2GoBroker(config_file=tf.name)
+ self.assertTrue(type(base_backend.get_primary_group('root') in (type(''), type(u''))))
+ self.assertTrue(type(unicode(base_backend.get_primary_group('root')) == u'root'))
+
def test_nameservice_nodefaultsinconfig(self):
_config_defaults = copy.deepcopy(x2gobroker.defaults.X2GOBROKER_CONFIG_DEFAULTS)
_config = """
@@ -432,7 +450,9 @@ enable = true
self.assertEqual(users, ['flip', 'kassandra', 'maja', 'thekla', 'willi'])
groups = base_backend.get_groups()
groups.sort()
- self.assertEqual(groups, ['bees', 'female', 'grasshoppers', 'male', 'spiders'])
+ _expected_groups = ['bees', 'female', 'grasshoppers', 'male', 'spiders'] + ['flip', 'kassandra', 'maja', 'thekla', 'willi']
+ _expected_groups.sort()
+ self.assertEqual(groups, _expected_groups)
def test_checkprofileacls_group_simpletests(self):
_config_defaults = copy.deepcopy(x2gobroker.defaults.X2GOBROKER_CONFIG_DEFAULTS)
hooks/post-receive
--
x2gobroker.git (HTTP(S) Session broker for X2Go)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2gobroker.git" (HTTP(S) Session broker for X2Go).
More information about the x2go-commits
mailing list