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

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


The branch, master-inai 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