[X2Go-Commits] [x2gobroker] 01/01: agent.py: Use os.fork() instead of threading.Thread() to handle delayed executions of broker agent tasks. This assures that SSH pub keys are removed via the delauthkey broker agent task, if the SSH broker is used. (Fixes: #491).
git-admin at x2go.org
git-admin at x2go.org
Thu Apr 2 06:13:23 CEST 2015
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2gobroker.
commit f74b48714caedc16767d543c104e14ed5195aa85
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Thu Apr 2 06:11:59 2015 +0200
agent.py: Use os.fork() instead of threading.Thread() to handle delayed executions of broker agent tasks. This assures that SSH pub keys are removed via the delauthkey broker agent task, if the SSH broker is used. (Fixes: #491).
---
debian/changelog | 4 ++++
x2gobroker/agent.py | 30 ++++++++++++++++++------------
2 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 37715fb..b826a6d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -304,6 +304,10 @@ x2gobroker (0.0.3.0-0x2go1) UNRELEASED; urgency=low
further possible substitutions for deriving the full path of the
authorized_keys file where X2Go Broker Agent's deploys public SSH user
keys to. (Fixes: #665).
+ - agent.py: Use os.fork() instead of threading.Thread() to handle
+ delayed executions of broker agent tasks. This assures that SSH pub keys
+ are removed via the delauthkey broker agent task, if the SSH broker
+ is used. (Fixes: #491).
* debian/control:
+ Provide separate bin:package for SSH brokerage: x2gobroker-ssh.
+ Replace LDAP support with session brokerage support in LONG_DESCRIPTION.
diff --git a/x2gobroker/agent.py b/x2gobroker/agent.py
index b5c6b06..bf7ecfe 100644
--- a/x2gobroker/agent.py
+++ b/x2gobroker/agent.py
@@ -17,13 +17,13 @@
# Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+import os
import os.path
import types
import subprocess
import paramiko
import cStringIO
import time
-import threading
import socket
import logging
@@ -42,22 +42,28 @@ from x2gobroker.loggers import logger_broker, logger_error
tasks = {}
-class delayed_execution(threading.Thread):
+def delayed_execution(agent_func, delay=0, **kwargs):
- def __init__(self, agent_func, delay=0, **kwargs):
- threading.Thread.__init__(self)
- self.agent_func = agent_func
- self.delay = delay
- self.kwargs = kwargs
- self.daemon = True
- self.start()
+ forkpid = os.fork()
+ if forkpid == 0:
- def run(self):
+ # close stdin, stdout and stderr in the forked process...
+ for nm in os.listdir("/proc/self/fd"):
+ if nm.startswith('.'):
+ continue
+ fd = int(nm)
+ if fd in (0,1,2):
+ os.close(fd)
+
+ # wait for the given delay period
i = 0
- while i < self.delay:
+ while i < delay:
time.sleep(1)
i += 1
- self.agent_func(**self.kwargs)
+
+ # execute the function requested
+ agent_func(**kwargs)
+ os._exit(0)
def has_remote_broker_agent_setup():
--
Alioth's /srv/git/code.x2go.org/x2gobroker.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git
More information about the x2go-commits
mailing list