[X2Go-Commits] x2gobroker.git - build-main (branch) updated: 9d21d6fd245e25e7bbb2cb8caf9cfc316b10017a

X2Go dev team git-admin at x2go.org
Sun May 19 13:02:59 CEST 2013


The branch, build-main has been updated
       via  9d21d6fd245e25e7bbb2cb8caf9cfc316b10017a (commit)
      from  d4db450e2514f71b0fed5e465f77267a84ea1fe8 (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-singlenodes-sessionprofiles.conf    |  179 --------------------
 .../x2gobroker-singlenodes-sessionprofilesmap.conf |   17 --
 etc/x2gobroker-sessionprofiles.conf                |  145 ++++++++++++++++
 x2gobroker/backends/base.py                        |   23 ++-
 x2gobroker/backends/inifile.py                     |   98 +++++++++++
 x2gobroker/backends/loadbalancer.py                |   33 ----
 x2gobroker/backends/singlenodes.py                 |   36 ----
 x2gobroker/config.py                               |   23 ---
 x2gobroker/web/plain.py                            |    2 +-
 9 files changed, 258 insertions(+), 298 deletions(-)
 delete mode 100644 etc/broker/x2gobroker-singlenodes-sessionprofiles.conf
 delete mode 100644 etc/broker/x2gobroker-singlenodes-sessionprofilesmap.conf
 create mode 100644 etc/x2gobroker-sessionprofiles.conf
 create mode 100644 x2gobroker/backends/inifile.py
 delete mode 100644 x2gobroker/backends/loadbalancer.py
 delete mode 100644 x2gobroker/backends/singlenodes.py

The diff of changes is:
diff --git a/etc/broker/x2gobroker-singlenodes-sessionprofiles.conf b/etc/broker/x2gobroker-singlenodes-sessionprofiles.conf
deleted file mode 100644
index d72a68b..0000000
--- a/etc/broker/x2gobroker-singlenodes-sessionprofiles.conf
+++ /dev/null
@@ -1,179 +0,0 @@
-[siteA-serverA-GNOME]
-user=
-defsndport=true
-useiconv=false
-iconvfrom=UTF-8
-height=600
-export=
-quality=9
-fullscreen=false
-layout=
-useexports=true
-width=800
-speed=2
-soundsystem=pulse
-print=true
-type=auto
-sndport=4713
-xinerama=true
-variant=
-usekbd=true
-fstunnel=true
-applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
-host=server-a.site-a.local
-multidisp=false
-sshproxyport=22
-sound=true
-rootless=false
-name=GNOME - siteA+serverA
-iconvto=UTF-8
-soundtunnel=true
-command=GNOME
-dpi=96
-sshport=22
-setdpi=0
-pack=16m-jpeg
-
-[siteA-serverA-KDE]
-user=
-defsndport=true
-useiconv=false
-iconvfrom=UTF-8
-height=600
-export=
-quality=9
-fullscreen=false
-layout=
-useexports=true
-width=800
-speed=2
-soundsystem=pulse
-print=true
-type=auto
-sndport=4713
-xinerama=true
-variant=
-usekbd=true
-fstunnel=true
-applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
-host=server-a.site-a.local
-multidisp=false
-sshproxyport=22
-sound=true
-rootless=false
-name=GNOME - siteA+serverA
-iconvto=UTF-8
-soundtunnel=true
-command=GNOME
-dpi=96
-sshport=22
-setdpi=0
-pack=16m-jpeg
-
-[siteA-serverB-GNOME]
-user=
-defsndport=true
-useiconv=false
-iconvfrom=UTF-8
-height=600
-export=
-quality=9
-fullscreen=false
-layout=
-useexports=true
-width=800
-speed=2
-soundsystem=pulse
-print=true
-type=auto
-sndport=4713
-xinerama=true
-variant=
-usekbd=true
-fstunnel=true
-applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
-host=server-b.site-a.local
-multidisp=false
-sshproxyport=22
-sound=true
-rootless=false
-name=GNOME - siteA+serverB
-iconvto=UTF-8
-soundtunnel=true
-command=GNOME
-dpi=96
-sshport=22
-setdpi=0
-pack=16m-jpeg
-
-[siteB-serverA-LXDE]
-user=
-defsndport=true
-useiconv=false
-iconvfrom=UTF-8
-height=600
-export=
-quality=9
-fullscreen=false
-layout=
-useexports=true
-width=800
-speed=2
-soundsystem=pulse
-print=true
-type=auto
-sndport=4713
-xinerama=true
-variant=
-usekbd=true
-fstunnel=true
-applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
-host=server-a.site-b.local
-multidisp=false
-sshproxyport=22
-sound=true
-rootless=false
-name=LXDE - siteB+serverA
-iconvto=UTF-8
-soundtunnel=true
-command=LXDE
-dpi=96
-sshport=22
-setdpi=0
-pack=16m-jpeg
-
-[siteC-serverA-XFCE]
-user=
-defsndport=true
-useiconv=false
-iconvfrom=UTF-8
-height=600
-export=
-quality=9
-fullscreen=false
-layout=
-useexports=true
-width=800
-speed=2
-soundsystem=pulse
-print=true
-type=auto
-sndport=4713
-xinerama=true
-variant=
-usekbd=true
-fstunnel=true
-applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
-host=server-a.site-c.local
-multidisp=false
-sshproxyport=22
-sound=true
-rootless=false
-name=XFCE - siteC+serverA
-iconvto=UTF-8
-soundtunnel=true
-command=XFCE
-dpi=96
-sshport=22
-setdpi=0
-pack=16m-jpeg
diff --git a/etc/broker/x2gobroker-singlenodes-sessionprofilesmap.conf b/etc/broker/x2gobroker-singlenodes-sessionprofilesmap.conf
deleted file mode 100644
index be1e4e9..0000000
--- a/etc/broker/x2gobroker-singlenodes-sessionprofilesmap.conf
+++ /dev/null
@@ -1,17 +0,0 @@
-[siteA-serverA-GNOME]
-allow=@gnomegroup, at admingroup,adminuser
-client_subnet=<site-A/netmask-A>
-
-[siteA-serverA-KDE]
-allow-login=@gnomegroup, at admingroup,adminuser
-allow-connect=<site-A/netmask-A>,<homeoffice-IP-A>
-
-[siteA-serverB-GNOME]
-users=
-users=@
-
-[siteB-serverA-LXDE]
-users=
-
-[siteC-serverA-XFCE]
-users=
diff --git a/etc/x2gobroker-sessionprofiles.conf b/etc/x2gobroker-sessionprofiles.conf
new file mode 100644
index 0000000..2e7568e
--- /dev/null
+++ b/etc/x2gobroker-sessionprofiles.conf
@@ -0,0 +1,145 @@
+### X2Go Broker Session Profiles - ADAPT TO YOUR NEEDS ###
+
+# This whole file reflects a set of examplary X2Go session profiles being provided
+# via the X2Go Session Broker (backend: iniconf).
+
+# This whole file could be the broker setup in some university institute that runs
+# three server pools (pool-A, pool-B and pool-C). Though most univerities have
+# real IPv4 internet addresses, we use private subnets in the examples below.
+
+# The X2Go Session Broker is served into the institutes local intranet, the
+# broker cannot be reached from the internet directly.
+
+# The first section [DEFAULTS] provides a set of default profile settings that
+# are common to all session profiles given in sections below.
+
+# The other section names can be freely chosen, however, each section name has to
+# be unique within this file.
+
+[DEFAULTS]
+defsndport=true
+useiconv=false
+iconvfrom=UTF-8
+height=600
+export=
+quality=9
+fullscreen=false
+layout=
+useexports=true
+width=800
+speed=2
+soundsystem=pulse
+print=true
+type=auto
+sndport=4713
+xinerama=true
+variant=
+usekbd=true
+fstunnel=true
+applications=TERMINAL,WWWBROWSER,MAILCLIENT,OFFICE
+multidisp=false
+sshproxyport=22
+sound=true
+rootless=false
+iconvto=UTF-8
+soundtunnel=true
+dpi=96
+sshport=22
+setdpi=0
+pack=16m-jpeg
+
+## 
+## pool-A (staff servers)
+##
+## The pool-A contains three X2Go Servers (server-A, server-B and server-C).
+
+## The staff of our example institute falls into two groups of users: gnome-users and kde-users.
+## The gnome-users log into server-A or server-B, depending on their client subnet (IP configuration of the client).
+## The kde-users login to server-C (server-C can be reached from the whole intranet).
+##
+## The split-up of the GNOME users allows some primitive load balancing.
+##
+## If staff people are members of both groups (kde-users, gnome-users) both session profiles will be
+## shown in X2Go Client.
+##
+
+[pool-A-server-A]
+user=
+host=server-a.pool-a.domain.local
+name=GNOME - pool-A (srv-A)
+command=GNOME
+acl-users-deny=ALL
+acl-groups-allows=gnome-users,admins
+acl-clients-deny=ALL
+acl-clients-allow=10.1.0.0/16
+acl-any-order=deny-allow
+
+[pool-A-server-B]
+user=
+host=server-b.pool-a.domain.local
+name=GNOME - pool-A (srv-B)
+command=GNOME
+acl-users-deny=ALL
+acl-groups-allow=gnome-users,admins
+acl-clients-deny=ALL
+acl-clients-allow=10.2.0.0/16
+acl-any-order=deny-allow
+
+[pool-A-server-C]
+user=
+host=server-c.pool-a.domain.local
+name=KDE - pool-A (srv-C)
+command=KDE
+acl-users-deny=ALL
+acl-groups-allow=kde-users,admins
+acl-any-order=deny-allow
+
+##
+## pool-B (e.g. webserver in the DMZ or on the internet)
+##
+## The pool-B is a single X2Go Server (server-D) that is
+## hosted externally. The server-D has an official internet IP.
+##
+## The session profile for server-D shall be provided to the
+## admins group only.
+##
+## Furthermore, the session profile for server-D shall only get
+## offered to a member of the admins group if the admin is sitting
+## in front of one of the admin client machines.
+##
+
+[pool-B-server-D-LXDE]
+user=
+host=server-d.domain.internet
+name=LXDE - srv-D
+command=LXDE
+acl-users-deny=ALL
+acl-groups-allow=admins
+acl-clients-deny=ALL
+acl-clients-allow=admin-machine1.domain.local, admin-machine2.domain.local, admin-machine3.domain.local
+acl-any-order=deny-allow
+
+##
+## pool-C
+##
+## The pool-C is a server pool for students. Our example institute
+## knows 200-300 students and has to offer working places for
+## every student.
+##
+## The resource limits on these servers are pretty strict, so staff members
+## normally stay away from these machines, anyway. Only two test account
+## get this session profile into their X2Go Clients.
+##
+## The pool-C contains 6 X2Go Servers that serve all students users together as a load balance
+## server farm.
+##
+
+[pool-C-XFCE]
+user=
+host=s-E1.pool-c.domain.local,s-E2.pool-c.domain.local,s-E3.pool-c.domain.local,s-E4.pool-c.domain.local,s-E5.pool-c.domain.local,s-E6.pool-c.domain.local
+name=XFCE - pool-C
+command=XFCE
+acl-users-deny=ALL
+acl-users-allow=test-A,test-B
+acl-groups-allow=students,admins
+acl-any-order=deny-allow
diff --git a/x2gobroker/backends/base.py b/x2gobroker/backends/base.py
index 06b7150..8b2cbb3 100644
--- a/x2gobroker/backends/base.py
+++ b/x2gobroker/backends/base.py
@@ -40,19 +40,20 @@ class X2GoBroker(object):
 
     Currently available broker classes are::
         L{zeroconf.X2GoBroker} (working)
-        L{simple.X2GoBroker} (in prep)
+        L{inifile.X2GoBroker} (in prep)
         L{ldap.X2GoBroker} (in prep)
-        L{loadbalancer.X2GoBroker} (in prep)
 
     """
 
+    backend_name = 'base'
+
     def __init__(self, config_file="/etc/x2go/x2gobroker.conf"):
         """\
         Initialize a new X2GoBroker instance to control X2Go session through an
         X2Go Client with an intermediate session broker.
 
         """
-        self.config = x2gobroker.config.X2GoBrokerConfigFile()
+        self.config = x2gobroker.config.X2GoBrokerConfigFile(config_files=config_file)
 
         self._dynamic_authid_map = {}
 
@@ -63,6 +64,13 @@ class X2GoBroker(object):
         """
         pass
 
+    def is_enabled(self):
+        """\
+        Check if this backend has been enabled in the configuration file.
+
+        """
+        return self.config.get_value(self.backend_name, 'enable')
+
     def get_global_config(self):
         """\
         Get the global section of the configuration file.
@@ -71,20 +79,17 @@ class X2GoBroker(object):
         @rtype: C{dict}
 
         """
-        return self.config.get_global_config()
+        return self.config.get_section('global')
 
-    def get_backend_config(self, backend='zeroconf'):
+    def get_backend_config(self):
         """\
         Get the configuration section of a specific backend.
 
-        @param backend: the name of the backend
-        @type backend: C{str}
-
         @return: all backend configuration parameters
         @rtype: C{dict}
 
         """
-        return self.config.get_backend_config(backend=backend)
+        return self.config.get_section(self.backend_name)
 
     def get_backend_value(self, backend='zeroconf', option='enabled'):
         """\
diff --git a/x2gobroker/backends/inifile.py b/x2gobroker/backends/inifile.py
new file mode 100644
index 0000000..a030b14
--- /dev/null
+++ b/x2gobroker/backends/inifile.py
@@ -0,0 +1,98 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2012 by Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
+# Copyright (C) 2012 by Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+#
+# X2Go Session Broker is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# X2Go Session Broker is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+"""\
+X2goBrokerINIFILE class - a simple X2GoBroker implementations that uses text-based config files only
+and does not support load balancing.
+
+"""
+__NAME__ = 'x2gobroker-pylib'
+
+# modules
+
+# Python X2GoBroker modules
+import base
+import x2gobroker.config
+
+class X2GoBroker(base.X2GoBroker):
+    """\
+
+    """
+class X2GoBroker(base.X2GoBroker):
+
+    backend_name = 'inifile'
+
+    def __init__(self, profile_config='/etc/x2go/x2gobroker-sessionprofiles.conf', **kwargs):
+        """\
+
+        @param config_file: path to the X2Go Session Broker configuration file (x2gobroker.conf)
+        @type config_file: C{unicode}
+        @param profile_config: path to the backend's session profile configuration (x2gobroker-sessionprofiles.conf)
+        @type profile_config: C{unicode} 
+        """
+        if kwargs.has_key('profile_config'):
+            _profile_config = kwargs['profile_config']
+        self.profile_config = x2gobroker.config.X2GoBrokerConfigFile(config_files=_profile_config)
+
+    def get_profile_ids(self):
+        """\
+        Retrieve the complete list of session profile IDs.
+
+        @return: list of profile IDs
+        @rtype: C{list}
+
+        """
+        return self.profile_config.sections()
+
+    def get_profile_defaults(self):
+        """\
+        Get the session profile defaults, i.e. profile options that all
+        configured session profiles have in common.
+
+        @return: a dictionary containing the session profile defaults
+        @rtype: C{dict}
+
+        """
+        return self.profile_config.get_section('DEFAULTS')
+
+    def get_profile_config(self, profile_id):
+        """\
+        Get the session profile for profile ID <profile_id>.
+
+        @param profile_id: the ID of a profile, in other words the section name in the configuration file
+        @type profile_id: C{unicode}
+
+        @return: a dictionary representing the session profile for ID <profile_id>
+        @rtype: C{dict}
+
+        """
+        return self.profile_config.get_section(profile_id)
+
+    def list_profiles(self, username):
+
+
+        return list_of_profiles
+
+    def select_profile(self, profile_name):
+
+        selectprofile_output = {
+            'server': 'localhost:22',
+        }
+        return selectprofile_output
\ No newline at end of file
diff --git a/x2gobroker/backends/loadbalancer.py b/x2gobroker/backends/loadbalancer.py
deleted file mode 100644
index 6be2f18..0000000
--- a/x2gobroker/backends/loadbalancer.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (C) 2012 by Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
-# Copyright (C) 2012 by Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
-#
-# X2Go Session Broker is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# X2Go Session Broker is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program; if not, write to the
-# Free Software Foundation, Inc.,
-# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
-
-"""\
-X2goBrokerLOADBALANCER class - a simple load balancer example for n X2Go Server with the same session profile
-
-"""
-__NAME__ = 'x2gobroker-pylib'
-
-# modules
-import x2gobroker.base
-
-class X2GoBroker(x2gobroker.base.X2GoBroker):
-    """\
-
-    """
diff --git a/x2gobroker/backends/singlenodes.py b/x2gobroker/backends/singlenodes.py
deleted file mode 100644
index 3ab4554..0000000
--- a/x2gobroker/backends/singlenodes.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (C) 2012 by Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
-# Copyright (C) 2012 by Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
-#
-# X2Go Session Broker is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# X2Go Session Broker is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program; if not, write to the
-# Free Software Foundation, Inc.,
-# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
-
-"""\
-X2goBrokerSINGLENODES class - a simple X2GoBroker implementations that uses text-based config files only
-and does not support load balancing.
-
-"""
-__NAME__ = 'x2gobroker-pylib'
-
-# modules
-
-# Python X2GoBroker modules
-import base
-
-class X2GoBroker(base.X2GoBroker):
-    """\
-
-    """
diff --git a/x2gobroker/config.py b/x2gobroker/config.py
index 99531ae..51524d8 100644
--- a/x2gobroker/config.py
+++ b/x2gobroker/config.py
@@ -272,29 +272,6 @@ class X2GoBrokerConfigFile(object):
 
         return _section_config
 
-    def get_global_config(self):
-        """\
-        Get the global section of the configuration file.
-
-        @return: all global configuration parameters
-        @rtype: C{dict}
-
-        """
-        return self.get_section('global')
-
-    def get_backend_config(self, backend='zeroconf'):
-        """\
-        Get the configuration section of a specific backend.
-
-        @param backend: the name of the backend
-        @type backend: C{str}
-
-        @return: all backend configuration parameters
-        @rtype: C{dict}
-
-        """
-        return self.get_section(backend)
-
     @property
     def printable_config_file(self):
         """\
diff --git a/x2gobroker/web/plain.py b/x2gobroker/web/plain.py
index a05a4cb..d64f0ae 100644
--- a/x2gobroker/web/plain.py
+++ b/x2gobroker/web/plain.py
@@ -56,7 +56,7 @@ class X2GoBrokerWebPlain:
         global_config = broker_backend.get_global_config()
         backend_config = broker_backend.get_backend_config(backend)
 
-        if not backend_config['enable']:
+        if not broker_backend.is_enabled():
             return web.notfound()
 
         data = web.input()


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