The branch, twofactorauth has been updated via e3fa36a46adeb8516579f9e38c6d0d5aa00d1415 (commit) from baa434a6db77809e7172d7811221f7e3d21ac33d (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: x2go/__init__.py | 4 +- x2go/backends/__init__.py | 2 +- x2go/backends/control/__init__.py | 2 +- x2go/backends/control/_stdout.py | 2 +- x2go/backends/info/__init__.py | 2 +- x2go/backends/info/_stdout.py | 2 +- x2go/backends/printing/__init__.py | 2 +- x2go/backends/printing/_file.py | 2 +- x2go/backends/printing/_gconf.py | 2 +- x2go/backends/printing/_winreg.py | 2 +- x2go/backends/profiles/__init__.py | 2 +- x2go/backends/profiles/_file.py | 2 +- x2go/backends/profiles/_gconf.py | 2 +- x2go/backends/profiles/_httpsbroker.py | 2 +- x2go/backends/profiles/_winreg.py | 2 +- x2go/backends/proxy/__init__.py | 2 +- x2go/backends/proxy/_nx3.py | 2 +- x2go/backends/proxy/base.py | 2 +- x2go/backends/settings/__init__.py | 2 +- x2go/backends/settings/_file.py | 2 +- x2go/backends/settings/_gconf.py | 2 +- x2go/backends/settings/_winreg.py | 2 +- x2go/backends/terminal/__init__.py | 2 +- x2go/backends/terminal/_stdout.py | 2 +- x2go/cache.py | 2 +- x2go/cleanup.py | 2 +- x2go/client.py | 2 +- x2go/defaults.py | 2 +- x2go/forward.py | 2 +- x2go/gevent_subprocess.py | 36 ++--- x2go/guardian.py | 2 +- x2go/inifiles.py | 2 +- x2go/log.py | 5 +- x2go/mime_export.py | 279 -------------------------------- x2go/printactions.py | 3 +- x2go/printqueue.py | 28 ++-- x2go/registry.py | 2 +- x2go/rforward.py | 2 +- x2go/session.py | 3 +- x2go/sftpserver.py | 2 +- x2go/sshproxy.py | 5 +- x2go/utils.py | 20 ++- x2go/x2go_exceptions.py | 2 +- x2go/xserver.py | 4 +- 44 files changed, 94 insertions(+), 361 deletions(-) delete mode 100644 x2go/mime_export.py The diff of changes is: diff --git a/x2go/__init__.py b/x2go/__init__.py index 138c5e1..e4623c4 100644 --- a/x2go/__init__.py +++ b/x2go/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -153,7 +153,7 @@ Contact """ __NAME__ = 'python-x2go' -__VERSION__ = '0.0.30' +__VERSION__ = '0.0.31' from gevent import monkey monkey.patch_all() diff --git a/x2go/backends/__init__.py b/x2go/backends/__init__.py index d2ad588..6ae2e10 100644 --- a/x2go/backends/__init__.py +++ b/x2go/backends/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/control/__init__.py b/x2go/backends/control/__init__.py index fb83b48..02c4845 100644 --- a/x2go/backends/control/__init__.py +++ b/x2go/backends/control/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/control/_stdout.py b/x2go/backends/control/_stdout.py index 52e157b..7ea520d 100644 --- a/x2go/backends/control/_stdout.py +++ b/x2go/backends/control/_stdout.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/info/__init__.py b/x2go/backends/info/__init__.py index 4a27bfd..48f01cf 100644 --- a/x2go/backends/info/__init__.py +++ b/x2go/backends/info/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/info/_stdout.py b/x2go/backends/info/_stdout.py index 9abbdd1..22a3141 100644 --- a/x2go/backends/info/_stdout.py +++ b/x2go/backends/info/_stdout.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/printing/__init__.py b/x2go/backends/printing/__init__.py index 683b424..db5dc76 100644 --- a/x2go/backends/printing/__init__.py +++ b/x2go/backends/printing/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/printing/_file.py b/x2go/backends/printing/_file.py index 17c908c..913e738 100644 --- a/x2go/backends/printing/_file.py +++ b/x2go/backends/printing/_file.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/printing/_gconf.py b/x2go/backends/printing/_gconf.py index d36aa9a..3078bf1 100644 --- a/x2go/backends/printing/_gconf.py +++ b/x2go/backends/printing/_gconf.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/printing/_winreg.py b/x2go/backends/printing/_winreg.py index 23254ee..12f83af 100644 --- a/x2go/backends/printing/_winreg.py +++ b/x2go/backends/printing/_winreg.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/profiles/__init__.py b/x2go/backends/profiles/__init__.py index 0da4513..7e2c53f 100644 --- a/x2go/backends/profiles/__init__.py +++ b/x2go/backends/profiles/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/profiles/_file.py b/x2go/backends/profiles/_file.py index 5e0c127..37e94a4 100644 --- a/x2go/backends/profiles/_file.py +++ b/x2go/backends/profiles/_file.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/profiles/_gconf.py b/x2go/backends/profiles/_gconf.py index 7546466..f630639 100644 --- a/x2go/backends/profiles/_gconf.py +++ b/x2go/backends/profiles/_gconf.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/profiles/_httpsbroker.py b/x2go/backends/profiles/_httpsbroker.py index 27e6d87..26ffc45 100644 --- a/x2go/backends/profiles/_httpsbroker.py +++ b/x2go/backends/profiles/_httpsbroker.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/profiles/_winreg.py b/x2go/backends/profiles/_winreg.py index 1d3badd..66ba624 100644 --- a/x2go/backends/profiles/_winreg.py +++ b/x2go/backends/profiles/_winreg.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/proxy/__init__.py b/x2go/backends/proxy/__init__.py index 7371fa4..a755e65 100644 --- a/x2go/backends/proxy/__init__.py +++ b/x2go/backends/proxy/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/proxy/_nx3.py b/x2go/backends/proxy/_nx3.py index 4ce30dd..e7d7a08 100644 --- a/x2go/backends/proxy/_nx3.py +++ b/x2go/backends/proxy/_nx3.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/proxy/base.py b/x2go/backends/proxy/base.py index b84e69f..d193e60 100644 --- a/x2go/backends/proxy/base.py +++ b/x2go/backends/proxy/base.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/settings/__init__.py b/x2go/backends/settings/__init__.py index 2883edc..e63d281 100644 --- a/x2go/backends/settings/__init__.py +++ b/x2go/backends/settings/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/settings/_file.py b/x2go/backends/settings/_file.py index 4dc9b68..eabc439 100644 --- a/x2go/backends/settings/_file.py +++ b/x2go/backends/settings/_file.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/settings/_gconf.py b/x2go/backends/settings/_gconf.py index 4b9ff9a..3f3521a 100644 --- a/x2go/backends/settings/_gconf.py +++ b/x2go/backends/settings/_gconf.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/settings/_winreg.py b/x2go/backends/settings/_winreg.py index 27c73d9..d1f8906 100644 --- a/x2go/backends/settings/_winreg.py +++ b/x2go/backends/settings/_winreg.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/terminal/__init__.py b/x2go/backends/terminal/__init__.py index ff73773..d3307d6 100644 --- a/x2go/backends/terminal/__init__.py +++ b/x2go/backends/terminal/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/backends/terminal/_stdout.py b/x2go/backends/terminal/_stdout.py index a021b6b..03d83d1 100644 --- a/x2go/backends/terminal/_stdout.py +++ b/x2go/backends/terminal/_stdout.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/cache.py b/x2go/cache.py index fd24d03..2a41b8c 100644 --- a/x2go/cache.py +++ b/x2go/cache.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/cleanup.py b/x2go/cleanup.py index ace141e..6894847 100644 --- a/x2go/cleanup.py +++ b/x2go/cleanup.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/client.py b/x2go/client.py index 46a96f2..a9fb1b3 100644 --- a/x2go/client.py +++ b/x2go/client.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify diff --git a/x2go/defaults.py b/x2go/defaults.py index 3538b23..dd567fe 100644 --- a/x2go/defaults.py +++ b/x2go/defaults.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/forward.py b/x2go/forward.py index 4e258a9..df4a8a9 100644 --- a/x2go/forward.py +++ b/x2go/forward.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/gevent_subprocess.py b/x2go/gevent_subprocess.py index 6f462f1..c483f75 100644 --- a/x2go/gevent_subprocess.py +++ b/x2go/gevent_subprocess.py @@ -1,6 +1,23 @@ # -*- coding: utf-8 -*- -# found here: http://groups.google.com/group/gevent/browse_thread/thread/dba1a5d29e0a60ff +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# +# Python X2go is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Python X2go 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 General Public License for more details. +# +# You should have received a copy of the GNU 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. + +# gevent_subprocess was found here: http://groups.google.com/group/gevent/browse_thread/thread/dba1a5d29e0a60ff # Mark Visser <mjmvisser@gmail.com> ### @@ -19,23 +36,6 @@ ### for cases in that it is used in context of the X2go project. ### -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> -# -# Python X2go is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# Python X2go 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 General Public License for more details. -# -# You should have received a copy of the GNU 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. - """Implementation of the standard :mod:`subprocess` module that spawns greenlets""" import errno diff --git a/x2go/guardian.py b/x2go/guardian.py index f10c39a..a068586 100644 --- a/x2go/guardian.py +++ b/x2go/guardian.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/inifiles.py b/x2go/inifiles.py index 88ca068..3186d2d 100644 --- a/x2go/inifiles.py +++ b/x2go/inifiles.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/log.py b/x2go/log.py index db76d1b..17ef354 100644 --- a/x2go/log.py +++ b/x2go/log.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -87,6 +87,9 @@ class X2goLogger(object): if tag is None: tag = self.tag if loglevel & self.loglevel: + + msg = msg.replace('\n', ' ') + if self.tag is not None: self.destination.write('%s[%s] (%s) %s: %s\n' % (self.name, self.progpid, tag, self._loglevel_NAMES[loglevel].upper(), msg)) else: diff --git a/x2go/mime_export.py b/x2go/mime_export.py deleted file mode 100644 index 7302ca0..0000000 --- a/x2go/mime_export.py +++ /dev/null @@ -1,279 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> -# -# Python X2go is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# Python X2go 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 General Public License for more details. -# -# You should have received a copy of the GNU 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. - -"""\ -STILL UNDOCUMENTED - -""" -__NAME__ = 'x2gomimetypes-pylib' - -# modules -import sys, os, shutil, copy -import subprocess -import types -import threading -import gevent -import inifiles -import cStringIO -import ConfigParser - -if sys.platform == 'win32': - import win32api - - -# Python X2go modules -import log -import defaults -# we hide the default values from epydoc (that's why we transform them to _UNDERSCORE variables) -from defaults import X2GO_CLIENTPRINTING_DEFAULTS as _X2GO_CLIENTPRINTING_DEFAULTS -from defaults import X2GO_PRINTING_CONFIGFILES as _X2GO_PRINTING_CONFIGFILES -import utils -import inifiles - -class X2goMimeExportAction(object): - - __name__ = 'MIME' - __description__ = 'Execute a command depending on an incoming file\'s MIME type' - - def __init__(self, logger=None, loglevel=log.loglevel_DEFAULT): - """\ - STILL UNDOCUMENTED - - @param logger: you can pass an L{X2goLogger} object to the - L{X2goMimeExportAction} constructor - @type logger: C{instance} - @param loglevel: if no L{X2goLogger} object has been supplied a new one will be - constructed with the given loglevel - @type loglevel: C{int} - - """ - if logger is None: - self.logger = log.X2goLogger(loglevel=loglevel) - else: - self.logger = copy.deepcopy(logger) - self.logger.tag = __NAME__ - - def do_execute(self, mime_file, mime_type_dir, ): - """\ - Perform the defined print action (doing nothing in L{X2goPrintAction} parent class). - - @param mime_file: name of the incoming file - @type mime_file: C{str} - @param mime_type_dir: location of the X2go client's spool directory for incoming MIME files - @type mime_type_dir: C{str} - - """ - if sys.platform == "win32": - self.logger('processing an incoming MIME file with Python\'s os.startfile(): %s' % mime_file, loglevel=log.loglevel_DEBUG) - os.startfile(mime_file) - else: - cmd_line = [ 'xdg-open', mime_file, ] - self.logger('processing an incoming MIME file with command: %s' % ' '.join(cmd_line), loglevel=log.loglevel_DEBUG) - p = subprocess.Popen(cmd_line, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=_PRINT_ENV) - # this is nasty!!!! - self.logger('giving PDF viewer 20s to get the PDF file %s loaded' % _hr_filename, loglevel=log.loglevel_DEBUG) - gevent.sleep(20) - os.remove(mime_file) - - -class X2goMimeExportQueue(threading.Thread): - """\ - STILL UNDOCUMENTED - - """ - print_action = None - - spooldir = None - active_jobs = {} - job_history = [] - - def __init__(self, logger=None, loglevel=log.loglevel_DEFAULT): - """\ - STILL UNDOCUMENTED - - @param logger: you can pass an L{X2goLogger} object to the - L{X2goMimeExportQueue} constructor - @type logger: C{instance} - @param loglevel: if no L{X2goLogger} object has been supplied a new one will be - constructed with the given loglevel - @type loglevel: C{int} - - """ - if logger is None: - self.logger = log.X2goLogger(loglevel=loglevel) - else: - self.logger = copy.deepcopy(logger) - self.logger.tag = __NAME__ - - threading.Thread.__init__(self) - self.daemon = True - self._accept_jobs = True - - def __del__(self): - self.stop_thread() - - def pause(self): - """\ - Prevent acceptance of new incoming MIME type files. The processing of MIME type files - that are currently still active will be completed, though. - - """ - if self._accept_jobs == True: - self._accept_jobs = False - self.logger('paused thread: %s' % repr(self), loglevel=log.loglevel_DEBUG) - - def resume(self): - """\ - Resume operation of the X2go MIME type thread and continue accepting new incoming - MIME type files. - - """ - if self._accept_jobs == False: - self._accept_jobs = True - self.logger('resumed thread: %s' % repr(self), loglevel=log.loglevel_DEBUG) - - def stop_thread(self): - """\ - Stops this L{X2goMimeExportQueue} thread completely. - - """ - self.pause() - self._keepalive = False - self.logger('stopping thread: %s' % repr(self), loglevel=log.loglevel_DEBUG) - - @property - def _incoming_mime_files(self): - - l = os.listdir(self.mime_type_dir) - mime_files = [] - for _job_file in job_files: - j = open(os.path.join(self.spool_dir, _job_file), 'r') - content = j.read() - (pdf_filename, job_title) = content.split('\n')[0:2] - j.close() - jobs.append((_job_file, pdf_filename, job_title)) - return [ j for j in jobs if j[1] not in self.active_jobs.keys() ] - - def set_print_action(self, print_action, **kwargs): - """\ - Modify the print action of this L{X2goPrintQueue} thread during runtime. The - change of print action will be valid for the next incoming print job. - - """ - if print_action in defaults.X2GO_PRINT_ACTIONS.keys(): - print_action = defaults.X2GO_PRINT_ACTIONS[print_action] - - if print_action in defaults.X2GO_PRINT_ACTIONS.values(): - self.print_action = print_action(**kwargs) - - def run(self): - """\ - Start this L{X2goPrintQueue} thread... - - """ - self.logger('starting print queue thread: %s' % repr(self), loglevel=log.loglevel_DEBUG) - - self._keepalive = True - while self._keepalive: - - while self._accept_jobs: - - if self._incoming_print_jobs: - - for _job in self._incoming_print_jobs: - self.logger('incoming print job: %s' % _job[1], loglevel=log.loglevel_DEBUG) - _new_printjob_thread = X2goPrintJob(target=x2go_printjob_handler, - kwargs={ - 'job_file': _job[0], - 'pdf_file': _job[1], - 'job_title': _job[2], - 'print_action': self.print_action, - 'parent_thread': self, - 'logger': self.logger, - } - ) - self.active_jobs['%s' % _job[1]] = _new_printjob_thread - _new_printjob_thread.start() - - gevent.sleep(3) - - gevent.sleep(1) - - -def x2go_printjob_handler(job_file=None, pdf_file=None, job_title=None, print_action=None, parent_thread=None, logger=None, ): - """\ - This function is called as a handler function for each incoming X2go print job - represented by the class L{X2goPrintJob}. - - The handler function will (re-)read the »printing« configuration file (if no - explicit C{print_action} is passed to this function...). It then will - execute the C{<print_action>.do_print()} command. - - @param pdf_file: PDF file name as placed in to the X2go spool directory - @type pdf_file: C{str} - @param job_title: human readable print job title - @type job_title: C{str} - @param print_action: an instance of either of the possible C{X2goPrintActionXXX} classes - @type print_action: C{X2goPrintActionXXX} nstance - @param parent_thread: the L{X2goPrintQueue} thread that actually created this handler's L{X2goPrintJob} instance - @type parent_thread: C{instance} - @param logger: the L{X2goPrintQueue}'s logging instance - @type logger: C{instance} - - """ - if print_action is None: - _printing = X2goClientPrinting(logger=logger) - print_action = _printing.print_action - - logger('action for printing is: %s' % print_action, loglevel=log.loglevel_DEBUG) - print_action.do_print(pdf_file=os.path.join(parent_thread.spool_dir, pdf_file), - job_title=job_title, - spool_dir=parent_thread.spool_dir, - ) - - logger('removing print job files for %s' % pdf_file, loglevel=log.loglevel_DEBUG) - os.remove(os.path.join(parent_thread.spool_dir, job_file)) - os.remove(os.path.join(parent_thread.spool_dir, pdf_file)) - - del parent_thread.active_jobs['%s' % pdf_file] - parent_thread.job_history.append(pdf_file) - - -class X2goPrintJob(threading.Thread): - """\ - For each X2go print job we create a sub-thread that let's - the print job be processed in the background. - - As a handler for this class the function L{x2go_printjob_handler()} - is used. - - """ - def __init__(self, **kwargs): - """\ - Construct the X2go print job thread... - - All parameters (**kwargs) are passed through to the constructor - of C{threading.Thread()}. - - """ - threading.Thread.__init__(self, **kwargs) - self.daemon = True - - diff --git a/x2go/printactions.py b/x2go/printactions.py index 6de16b7..4b8c66b 100644 --- a/x2go/printactions.py +++ b/x2go/printactions.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -287,7 +287,6 @@ class X2goPrintActionPRINT(X2goPrintAction): pdf_file, None, None, - #os.path.dirname(pdf_file), 0, ) else: diff --git a/x2go/printqueue.py b/x2go/printqueue.py index c0c7a2d..647f879 100644 --- a/x2go/printqueue.py +++ b/x2go/printqueue.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -34,8 +34,9 @@ import threading import gevent # Python X2go modules -import log import defaults +import utils +import log # we hide the default values from epydoc (that's why we transform them to _UNDERSCORE variables) from backends.printing import X2goClientPrinting as _X2goClientPrinting @@ -44,16 +45,6 @@ if defaults.X2GOCLIENT_OS != 'Windows': from defaults import X2GO_PRINTING_FILENAME as _X2GO_PRINTING_FILENAME -def _patiently_remove_file(_dir, _file): - _not_removed = True - while _not_removed: - try: - os.remove(os.path.join(_dir, _file)) - _not_removed = False - except WindowsError: - # file is probably locked - gevent.sleep(5) - class X2goPrintQueue(threading.Thread): """\ @@ -78,6 +69,8 @@ class X2goPrintQueue(threading.Thread): @param print_action_args: depending of the chosen C{print_action} this dictionary may contain different values; the C{print_action_args} will be passed on to the X2go print action instance constructor, so refer to either of these: L{X2goPrintActionPDFVIEW}, L{X2goPrintActionPRINT} et al. + @param client_instance: the underlying L{X2goClient} instance + @type client_instance: C{instance} @param printing_backend: the client printing configuration backend class @type printing_backend: C{instance} @param logger: you can pass an L{X2goLogger} object to the @@ -246,14 +239,19 @@ def x2go_printjob_handler(job_file=None, pdf_file=None, job_title=None, print_ac logger('removing print job files for %s' % pdf_file, loglevel=log.loglevel_DEBUG) - _patiently_remove_file(parent_thread.spool_dir, job_file) + utils.patiently_remove_file(parent_thread.spool_dir, job_file) logger('removed print job file %s' % job_file, loglevel=log.loglevel_DEBUG) - _patiently_remove_file(parent_thread.spool_dir, pdf_file) + utils.patiently_remove_file(parent_thread.spool_dir, pdf_file) logger('removed print pdf file %s' % pdf_file, loglevel=log.loglevel_DEBUG) - + del parent_thread.active_jobs['%s' % pdf_file] parent_thread.job_history.append(pdf_file) + # in case we print a lot we do not want to risk an endlessly growing + # print job history + if len(parent_thread.job_history) > 100: + parent_thread.job_history = parent_thread.job_history[-100:] + class X2goPrintJob(threading.Thread): """\ diff --git a/x2go/registry.py b/x2go/registry.py index b028f7b..3f0a423 100644 --- a/x2go/registry.py +++ b/x2go/registry.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/rforward.py b/x2go/rforward.py index 3422804..93fa5a0 100644 --- a/x2go/rforward.py +++ b/x2go/rforward.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/session.py b/x2go/session.py index 2f2ea79..5356acb 100644 --- a/x2go/session.py +++ b/x2go/session.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -817,3 +817,4 @@ class X2goSession(object): """ if self.has_terminal_session(): self.terminal_session.release_proxy() + self.terminal_session = None diff --git a/x2go/sftpserver.py b/x2go/sftpserver.py index 89300f5..7e6af39 100644 --- a/x2go/sftpserver.py +++ b/x2go/sftpserver.py @@ -1,6 +1,6 @@ #!/usr/bin/python -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # The Python X2go sFTPServer code was originally written by Richard Murri, # for further information see his website: http://www.richardmurri.com diff --git a/x2go/sshproxy.py b/x2go/sshproxy.py index c566543..d194262 100644 --- a/x2go/sshproxy.py +++ b/x2go/sshproxy.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -79,7 +79,8 @@ class X2goSSHProxy(paramiko.SSHClient, threading.Thread): if sshproxy_host: if sshproxy_host.find(':'): self.hostname = sshproxy_host.split(':')[0] - self.port = int(sshproxy_host.split(':')[1]) + try: self.port = int(sshproxy_host.split(':')[1]) + except IndexError: pass else: self.hostname = sshproxy_host if sshproxy_user: self.username = sshproxy_user diff --git a/x2go/utils.py b/x2go/utils.py index a5460b4..37eca39 100644 --- a/x2go/utils.py +++ b/x2go/utils.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -31,9 +31,9 @@ import copy import paramiko # Python X2go modules +from defaults import X2GOCLIENT_OS as _X2GOCLIENT_OS +from defaults import X2GO_SESSIONPROFILE_DEFAULTS as _X2GO_SESSIONPROFILE_DEFAULTS from defaults import _pack_methods_nx3 -from defaults import X2GO_SESSIONPROFILE_DEFAULTS - def is_in_nx3packmethods(method): @@ -111,7 +111,7 @@ def _convert_SessionProfileOptions_2_SessionParams(_options): _params = copy.deepcopy(_options) # get rid of unknown session profile options - _known_options = X2GO_SESSIONPROFILE_DEFAULTS.keys() + _known_options = _X2GO_SESSIONPROFILE_DEFAULTS.keys() for p in _params.keys(): if p not in _known_options: del _params[p] @@ -262,3 +262,15 @@ def known_encodings(): return _encname_list +def patiently_remove_file(_dir, _file): + if _X2GOCLIENT_OS != 'Windows': + from x2go_exceptions import WindowsError + _not_removed = True + while _not_removed: + try: + os.remove(os.path.join(_dir, _file)) + _not_removed = False + except WindowsError: + # file is probably locked + gevent.sleep(5) + diff --git a/x2go/x2go_exceptions.py b/x2go/x2go_exceptions.py index 8b7bf97..73faf76 100644 --- a/x2go/x2go_exceptions.py +++ b/x2go/x2go_exceptions.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/x2go/xserver.py b/x2go/xserver.py index 2e92a63..4da260e 100644 --- a/x2go/xserver.py +++ b/x2go/xserver.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- -# -*- coding: utf-8 -*- - -# Copyright (C) 2010 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> +# Copyright (C) 2010-2011 by Mike Gabriel <m.gabriel@das-netzwerkteam.de> # # Python X2go is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by hooks/post-receive -- python-x2go.git (Python X2Go Client API) 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 "python-x2go.git" (Python X2Go Client API).