[X2Go-Commits] x2gobroker.git - build-main (branch) updated: 0.0.0.1-60-g9217c85

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


The branch, build-main has been updated
       via  9217c85255f9737bfe37a61b4a8457764e190b37 (commit)
      from  40b5a345b349598d4da6bb2492a8f29b7a202dc4 (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:
 debian/changelog         |    2 ++
 sbin/x2gobroker          |   18 ++++++++-------
 x2gobroker/defaults.py   |    8 ++++++-
 x2gobroker/web/extras.py |   57 ++++++++++++++++++++++++++++++++++++++++++++++
 x2gobroker/web/html.py   |    2 +-
 x2gobroker/web/json.py   |    2 +-
 x2gobroker/web/plain.py  |    2 +-
 7 files changed, 79 insertions(+), 12 deletions(-)
 create mode 100644 x2gobroker/web/extras.py

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index be93ac2..80c2bf8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -17,6 +17,8 @@ x2gobroker (0.0.0.2-0~x2go1) UNRELEASED; urgency=low
       runs as non-privileged user, the authentication service as root).
     - Add tool: x2gobroker-keygen. Generate pub/priv SSH keypair for the
       system user x2gobroker.
+    - To make SSH pubkey deployment easier, serve the broker's public SSH key(s)
+      under this URL http(s)://<broker_hostname>:<port>/pubkeys/.
   * /debian/control:
     + Add bin:package x2gobroker-agent.
   * /debian/x2gobroker-daemon.init:
diff --git a/sbin/x2gobroker b/sbin/x2gobroker
index 566b57c..3b847bd 100755
--- a/sbin/x2gobroker
+++ b/sbin/x2gobroker
@@ -57,10 +57,10 @@ if x2gobroker.defaults.X2GOBROKER_DEBUG and not x2gobroker.defaults.X2GOBROKER_T
 
 # check effective UID the broker runs as and complain appropriately...
 if x2gobroker.defaults.X2GOBROKER_USER != x2gobroker.defaults.X2GOBROKER_DAEMON_USER and os.geteuid() != 0:
-    logger_broker.warn('X2Go Session Broker has been started interactively by user {username}, better run as user {daemon_username}.'.format(username=X2GOBROKER_USER, daemon_username=X2GOBROKER_DAEMON_USER))
+    logger_broker.warn('X2Go Session Broker has been started interactively by user {username}, better run as user {daemon_username}.'.format(username=x2gobroker.defaults.X2GOBROKER_USER, daemon_username=x2gobroker.defaults.X2GOBROKER_DAEMON_USER))
     logger_broker.info('Automatically switching to DEBUG mode due to interactive launch of this application.')
 elif x2gobroker.defaults.X2GOBROKER_DAEMON_USER != 'root' and os.geteuid() == 0:
-    logger_broker.warn('X2Go Session Broker should not be run as root, better run as user {daemon_username}.'.format(daemon_username=X2GOBROKER_DAEMON_USER))
+    logger_broker.warn('X2Go Session Broker should not be run as root, better run as user {daemon_username}.'.format(daemon_username=x2gobroker.defaults.X2GOBROKER_DAEMON_USER))
 elif os.geteuid() == 0:
     logger_broker.warn('X2Go Session Broker should not be run as root, better run as non-privileged user')
 
@@ -100,9 +100,10 @@ if __name__ == "__main__":
 
 
 # import classes serving the different web.py URLs
-from x2gobroker.web.plain import *
-#from x2gobroker.web.json import *
-#from x2gobroker.web.html import *
+import x2gobroker.web.plain
+#import x2gobroker.web.json
+#import x2gobroker.web.html
+import x2gobroker.web.extras
 
 # switch on https:// mode
 if x2gobroker.defaults.X2GOBROKER_SSL_CERTFILE and x2gobroker.defaults.X2GOBROKER_SSL_KEYFILE:
@@ -110,9 +111,10 @@ if x2gobroker.defaults.X2GOBROKER_SSL_CERTFILE and x2gobroker.defaults.X2GOBROKE
     CherryPyWSGIServer.ssl_private_key = x2gobroker.defaults.X2GOBROKER_SSL_KEYFILE
 
 # define the web.py URLs
-urls = ( '/plain/(.*)', 'X2GoBrokerWebPlain',
-#         '/json/(.*)', 'X2GoBrokerWebJson',
-#         '/html/(.*)', 'X2GoBrokerWebHtml',
+urls = ( '/plain/(.*)', 'x2gobroker.web.plainX2Go.BrokerWeb',
+#         '/json/(.*)', 'x2gobroker.web.json.X2GoBrokerWeb',
+#         '/html/(.*)', 'x2gobroker.web.html.X2GoBrokerWeb',
+          '/pubkeys/', 'x2gobroker.web.extras.X2GoBrokerPubKeyService',
        )
 
 # run the web.py standalone daemon...
diff --git a/x2gobroker/defaults.py b/x2gobroker/defaults.py
index 0a99af4..6c377c4 100644
--- a/x2gobroker/defaults.py
+++ b/x2gobroker/defaults.py
@@ -23,6 +23,7 @@
 import os
 import uuid
 import getpass
+import socket
 
 import logging
 from loggers import logger_broker, logger_access, logger_error, X2GOBROKER_DAEMON_USER
@@ -89,11 +90,16 @@ if os.environ.has_key('X2GOBROKER_SSL_KEYFILE'):
 else:
     X2GOBROKER_SSL_KEYFILE = ""
 
-
 ###
 ### static / hard-coded defaults
 ###
 
+if socket.gethostname().find('.') >= 0:
+    X2GOBROKER_HOSTNAME = socket.gethostname()
+else:
+    X2GOBROKER_HOSTNAME = socket.gethostbyaddr(socket.gethostname())[0]
+
+
 X2GOBROKER_SESSIONPROFILES = "/etc/x2go/broker/x2gobroker-sessionprofiles.conf"
 
 # the home directory of the user that the daemon/cgi runs as
diff --git a/x2gobroker/web/extras.py b/x2gobroker/web/extras.py
new file mode 100644
index 0000000..728aaec
--- /dev/null
+++ b/x2gobroker/web/extras.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# This file is part of the  X2Go Project - http://www.x2go.org
+# Copyright (C) 2011-2012 by Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+# Copyright (C) 2011-2012 by Heinz-Markus Graesing <heinz-m.graesing at obviously-nice.de>
+# Copyright (C) 2012 by Mike Gabriel <mike.gabriel at das-netzwerkteam.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.
+
+# modules
+import os.path
+import paramiko
+import x2gobroker.defaults
+
+class X2GoBrokerPubKeyService:
+
+    http_header_items = {
+        'Content-Type': 'text/plain; charset=utf-8',
+        'Expires': '+1h',
+    }
+
+    def _gen_http_header(self):
+
+        for http_header_item in self.http_header_items.keys():
+            web.header(http_header_item, self.http_header_items[http_header_item])
+
+    def GET(self):
+
+        output = ""
+
+        broker_home = x2gobroker.defaults.X2GOBROKER_HOME
+
+        if os.path.exists('{home}/.ssh/id_rsa.pub'.format(home=broker_home)):
+            pubkey = paramiko.RSAKey(filename='{home}/.ssh/id_rsa'.format(home=broker_home))
+            output += 'ssh-rsa {pubkey} {user}@{hostname}\n'.format(pubkey=str(pubkey.get_base64()), user=x2gobroker.defaults.X2GOBROKER_DAEMON_USER, hostname=x2gobroker.defaults.X2GOBROKER_HOSTNAME)
+
+        if os.path.exists('{home}/.ssh/id_dsa.pub'.format(home=broker_home)):
+            pubkey = paramiko.DSSKey(filename='{home}/.ssh/id_dsa'.format(home=broker_home))
+            output += 'ssh-dss {pubkey} {user}@{hostname}\n'.format(pubkey=str(pubkey.get_base64()), user=x2gobroker.defaults.X2GOBROKER_DAEMON_USER, hostname=x2gobroker.defaults.X2GOBROKER_HOSTNAME)
+
+        if not output:
+            return web.notfound()
+
+        return output
diff --git a/x2gobroker/web/html.py b/x2gobroker/web/html.py
index a85a1ff..1a0b1db 100644
--- a/x2gobroker/web/html.py
+++ b/x2gobroker/web/html.py
@@ -26,7 +26,7 @@ import web
 # Python X2Go Broker modules
 from x2gobroker.defaults import X2GOBROKER_DEFAULT_BACKEND as _X2GOBROKER_DEFAULT_BACKEND
 
-class X2GoBrokerWebHtml:
+class X2GoBrokerWeb:
 
     http_header_items = {
         'Content-Type': 'text/html; charset=utf-8',
diff --git a/x2gobroker/web/json.py b/x2gobroker/web/json.py
index 04743b5..ef35a0f 100644
--- a/x2gobroker/web/json.py
+++ b/x2gobroker/web/json.py
@@ -22,7 +22,7 @@
 
 # modules
 
-class X2GoBrokerWebJson:
+class X2GoBrokerWeb:
 
     # MUSIC OF THE FUTURE
     pass
\ No newline at end of file
diff --git a/x2gobroker/web/plain.py b/x2gobroker/web/plain.py
index 2e88de9..07c36b2 100644
--- a/x2gobroker/web/plain.py
+++ b/x2gobroker/web/plain.py
@@ -29,7 +29,7 @@ import x2gobroker.defaults
 
 from x2gobroker.loggers import logger_broker, logger_error
 
-class X2GoBrokerWebPlain:
+class X2GoBrokerWeb:
 
     http_header_items = {
         'Content-Type': 'text/plain; charset=utf-8',


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