[X2Go-Commits] x2gobroker.git - tmp (branch) updated: e313c67ec94b6e86cd7de7623e9a538db739cedf

X2Go dev team git-admin at x2go.org
Tue Apr 23 21:08:40 CEST 2013


The branch, tmp 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