[X2Go-Commits] [python-x2go] 01/01: python-x2go.spec: Avoid duplicate files in openSUSE/SLES.
git-admin at x2go.org
git-admin at x2go.org
Tue Oct 14 21:13:45 CEST 2014
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository python-x2go.
commit bf1fb49187a2e3f6d5ce65e8dae770690a9ef82b
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Tue Oct 14 21:13:41 2014 +0200
python-x2go.spec: Avoid duplicate files in openSUSE/SLES.
---
debian/changelog | 1 +
python-x2go.spec | 4 ++
x2go/backends/control/plain.py | 126 +++++++++++++++++++++++++++++-----------
3 files changed, 97 insertions(+), 34 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 145425c..916223d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -119,6 +119,7 @@ python-x2go (0.5.0.0-0x2go1) UNRELEASED; urgency=low
+ Add S (python-x2go): telekinesis-client, mteleplayer-clientside.
* python-x2go.spec:
+ Add dependencies: python-requests, python-simplejson.
+ + Additionally adapt to building on openSUSE/SLES.
[ Mike DePaulo ]
* New upstream version (0.5.0.0):
diff --git a/python-x2go.spec b/python-x2go.spec
index 26c1219..2dfe51b 100644
--- a/python-x2go.spec
+++ b/python-x2go.spec
@@ -19,6 +19,7 @@ Source0: http://code.x2go.org/releases/source/%{name}/%{name}-%{version}.
BuildArch: noarch
%if 0%{?suse_version}
BuildRequires: python-devel
+BuildRequires: fdupes
%else
BuildRequires: python2-devel
%endif
@@ -113,6 +114,9 @@ pushd %{py3dir}
popd
%endif # with_python3
%{__python} setup.py install --skip-build --root %{buildroot}
+%if 0%{?fdupes:1}
+%fdupes %buildroot/%_prefix
+%endif
%files
diff --git a/x2go/backends/control/plain.py b/x2go/backends/control/plain.py
index 6dfe924..093d5c6 100644
--- a/x2go/backends/control/plain.py
+++ b/x2go/backends/control/plain.py
@@ -276,7 +276,7 @@ class X2GoControlSession(paramiko.SSHClient):
except (AttributeError, paramiko.SFTPError):
raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
- def _x2go_sftp_put(self, local_path, remote_path):
+ def _x2go_sftp_put(self, local_path, remote_path, timeout=20):
"""
Put a local file on the remote server via sFTP.
@@ -286,6 +286,8 @@ class X2GoControlSession(paramiko.SSHClient):
@type local_path: C{str}
@param remote_path: full remote path name of the server-side target location, path names have to be Unix-compliant
@type remote_path: C{str}
+ @param timeout: this SFTP put action should not take longer then the given value
+ @type timeout: C{int}
@raise X2GoControlSessionException: if the SSH connection dropped out
@@ -294,22 +296,38 @@ class X2GoControlSession(paramiko.SSHClient):
self._transport_lock.acquire()
if ssh_transport and ssh_transport.is_authenticated():
self.logger('sFTP-put: %s -> %s:%s' % (os.path.normpath(local_path), self.remote_peername(), remote_path), loglevel=log.loglevel_DEBUG)
+
+ if self.low_latency: timeout = timeout * 2
+ timer = gevent.Timeout(timeout)
+ timer.start()
+
try:
- self.sftp_client = paramiko.SFTPClient.from_transport(ssh_transport)
- except paramiko.SFTPError:
- self._transport_lock.release()
- raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
- try:
- self.sftp_client.put(os.path.normpath(local_path), remote_path)
- except (x2go_exceptions.SSHException, socket.error, IOError):
- # react to connection dropped error for SSH connections
+ try:
+ self.sftp_client = paramiko.SFTPClient.from_transport(ssh_transport)
+ except paramiko.SFTPError:
+ self._transport_lock.release()
+ raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
+ try:
+ self.sftp_client.put(os.path.normpath(local_path), remote_path)
+ except (x2go_exceptions.SSHException, socket.error, IOError):
+ # react to connection dropped error for SSH connections
+ self.session_died = True
+ self._transport_lock.release()
+ raise x2go_exceptions.X2GoControlSessionException('The SSH connection was dropped during an sFTP put action.')
+
+ except gevent.timeout.Timeout:
self.session_died = True
self._transport_lock.release()
- raise x2go_exceptions.X2GoControlSessionException('The SSH connection was dropped during an sFTP put action.')
+ if self.sshproxy_session:
+ self.sshproxy_session.stop_thread()
+ raise x2go_exceptions.X2GoControlSessionException('the X2Go control session timed out during an SFTP write command')
+ finally:
+ timer.cancel()
+
self.sftp_client = None
self._transport_lock.release()
- def _x2go_sftp_write(self, remote_path, content):
+ def _x2go_sftp_write(self, remote_path, content, timeout=20):
"""
Create a text file on the remote server via sFTP.
@@ -319,6 +337,8 @@ class X2GoControlSession(paramiko.SSHClient):
@type remote_path: C{str}
@param content: a text file, multi-line files use Unix-link EOL style
@type content: C{str}
+ @param timeout: this SFTP write action should not take longer then the given value
+ @type timeout: C{int}
@raise X2GoControlSessionException: if the SSH connection dropped out
@@ -327,25 +347,43 @@ class X2GoControlSession(paramiko.SSHClient):
self._transport_lock.acquire()
if ssh_transport and ssh_transport.is_authenticated():
self.logger('sFTP-write: opening remote file %s on host %s for writing' % (remote_path, self.remote_peername()), loglevel=log.loglevel_DEBUG)
+
+ if self.low_latency: timeout = timeout * 2
+ timer = gevent.Timeout(timeout)
+ timer.start()
+
try:
- self.sftp_client = paramiko.SFTPClient.from_transport(ssh_transport)
- except paramiko.SFTPError:
- self._transport_lock.release()
- raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
- try:
- remote_fileobj = self.sftp_client.open(remote_path, 'w')
- self.logger('sFTP-write: writing content: %s' % content, loglevel=log.loglevel_DEBUG_SFTPXFER)
- remote_fileobj.write(content)
- remote_fileobj.close()
- except (x2go_exceptions.SSHException, socket.error, IOError):
+ try:
+ self.sftp_client = paramiko.SFTPClient.from_transport(ssh_transport)
+ except paramiko.SFTPError:
+ self._transport_lock.release()
+ raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
+ try:
+ remote_fileobj = self.sftp_client.open(remote_path, 'w')
+ self.logger('sFTP-write: writing content: %s' % content, loglevel=log.loglevel_DEBUG_SFTPXFER)
+ remote_fileobj.write(content)
+ remote_fileobj.close()
+ except (x2go_exceptions.SSHException, socket.error, IOError):
+ self.session_died = True
+ self._transport_lock.release()
+ self.logger('sFTP-write: opening remote file %s on host %s failed' % (remote_path, self.remote_peername()), loglevel=log.loglevel_WARN)
+ if self.sshproxy_session:
+ self.sshproxy_session.stop_thread()
+ raise x2go_exceptions.X2GoControlSessionException('The SSH connection was dropped during an sFTP write action.')
+
+ except gevent.timeout.Timeout:
self.session_died = True
self._transport_lock.release()
- self.logger('sFTP-write: opening remote file %s on host %s failed' % (remote_path, self.remote_peername()), loglevel=log.loglevel_WARN)
- raise x2go_exceptions.X2GoControlSessionException('The SSH connection was dropped during an sFTP write action.')
+ if self.sshproxy_session:
+ self.sshproxy_session.stop_thread()
+ raise x2go_exceptions.X2GoControlSessionException('the X2Go control session timed out during an SFTP write command')
+ finally:
+ timer.cancel()
+
self.sftp_client = None
self._transport_lock.release()
- def _x2go_sftp_remove(self, remote_path):
+ def _x2go_sftp_remove(self, remote_path, timeout=20):
"""
Remote a remote file from the server via sFTP.
@@ -353,6 +391,8 @@ class X2GoControlSession(paramiko.SSHClient):
@param remote_path: full remote path name of the server-side file to be removed, path names have to be Unix-compliant
@type remote_path: C{str}
+ @param timeout: this SFTP remove action should not take longer then the given value
+ @type timeout: C{int}
@raise X2GoControlSessionException: if the SSH connection dropped out
@@ -361,18 +401,36 @@ class X2GoControlSession(paramiko.SSHClient):
self._transport_lock.acquire()
if ssh_transport and ssh_transport.is_authenticated():
self.logger('sFTP-write: removing remote file %s on host %s' % (remote_path, self.remote_peername()), loglevel=log.loglevel_DEBUG)
+
+ if self.low_latency: timeout = timeout * 2
+ timer = gevent.Timeout(timeout)
+ timer.start()
+
try:
- self.sftp_client = paramiko.SFTPClient.from_transport(ssh_transport)
- except paramiko.SFTPError:
- self._transport_lock.release()
- raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
- try:
- self.sftp_client.remove(remote_path)
- except (x2go_exceptions.SSHException, socket.error, IOError):
+ try:
+ self.sftp_client = paramiko.SFTPClient.from_transport(ssh_transport)
+ except paramiko.SFTPError:
+ self._transport_lock.release()
+ raise x2go_exceptions.X2GoSFTPClientException('failed to initialize SFTP channel')
+ try:
+ self.sftp_client.remove(remote_path)
+ except (x2go_exceptions.SSHException, socket.error, IOError):
+ self.session_died = True
+ self._transport_lock.release()
+ self.logger('sFTP-write: removing remote file %s on host %s failed' % (remote_path, self.remote_peername()), loglevel=log.loglevel_WARN)
+ if self.sshproxy_session:
+ self.sshproxy_session.stop_thread()
+ raise x2go_exceptions.X2GoControlSessionException('The SSH connection was dropped during an sFTP remove action.')
+
+ except gevent.timeout.Timeout:
self.session_died = True
self._transport_lock.release()
- self.logger('sFTP-write: removing remote file %s on host %s failed' % (remote_path, self.remote_peername()), loglevel=log.loglevel_WARN)
- raise x2go_exceptions.X2GoControlSessionException('The SSH connection was dropped during an sFTP remove action.')
+ if self.sshproxy_session:
+ self.sshproxy_session.stop_thread()
+ raise x2go_exceptions.X2GoControlSessionException('the X2Go control session timed out during an SFTP write command')
+ finally:
+ timer.cancel()
+
self.sftp_client = None
self._transport_lock.release()
@@ -461,7 +519,7 @@ class X2GoControlSession(paramiko.SSHClient):
else:
self._transport_lock.release()
- raise x2go_exceptions.X2GoControlSessionException('the X2Go control session is not connected')
+ raise x2go_exceptions.X2GoControlSessionException('the X2Go control session is not connected (while issuing SSH command=%s)' % cmd)
self._transport_lock.release()
--
Alioth's /srv/git/_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git
More information about the x2go-commits
mailing list