|
37 |
import ast |
37 |
import ast |
38 |
import os |
38 |
import os |
39 |
import sys |
39 |
import sys |
|
|
40 |
import subprocess |
41 |
import pipes |
40 |
from univention.config_registry import ConfigRegistry |
42 |
from univention.config_registry import ConfigRegistry |
41 |
|
43 |
|
42 |
|
44 |
|
|
61 |
def fork_server(sock, socket_path): |
63 |
def fork_server(sock, socket_path): |
62 |
"""Fork UDM command line server.""" |
64 |
"""Fork UDM command line server.""" |
63 |
# start new server |
65 |
# start new server |
64 |
pid = os.fork() |
66 |
argv = ['univention-cli-server', '-n'] |
65 |
if pid == 0: # child |
67 |
logfile = get_logfile() |
66 |
null = os.open(os.path.devnull, os.O_RDWR) |
68 |
if logfile: |
67 |
os.dup2(null, sys.stdin.fileno()) |
69 |
argv.extend(['-L', logfile]) |
68 |
os.dup2(null, sys.stdout.fileno()) |
70 |
if socket_path != default_socket_path: |
69 |
os.dup2(null, sys.stderr.fileno()) |
71 |
argv.extend(['-s', socket_path]) |
70 |
argv = ['univention-cli-server'] |
72 |
with open(os.path.devnull, "rb+") as null: |
71 |
logfile = get_logfile() |
73 |
subprocess.Popen('exec %s & wait %%-' % ' '.join(pipes.quote(x) for x in ['/usr/share/univention-directory-manager-tools/univention-cli-server'] + argv[1:]), close_fds=True, stdin=null, stdout=null, stderr=null, shell=True) |
72 |
if logfile: |
|
|
73 |
argv.extend(['-L', logfile]) |
74 |
if socket_path != default_socket_path: |
75 |
argv.extend(['-s', socket_path]) |
76 |
os.execv('/usr/share/univention-directory-manager-tools/univention-cli-server', argv) |
77 |
else: # parent |
78 |
os.waitpid(pid, os.P_NOWAIT) |
79 |
|
74 |
|
80 |
ucr = ConfigRegistry() |
75 |
ucr = ConfigRegistry() |
81 |
ucr.load() |
76 |
ucr.load() |