Lines 43-48
import univention.admincli.adduser
|
Link Here
|
---|
|
43 |
import univention.admincli.admin |
43 |
import univention.admincli.admin |
44 |
import univention.admincli.passwd |
44 |
import univention.admincli.passwd |
45 |
import signal |
45 |
import signal |
|
|
46 |
from argparse import ArgumentParser |
46 |
try: |
47 |
try: |
47 |
import univention.admincli.license_check |
48 |
import univention.admincli.license_check |
48 |
licenseImportError = False |
49 |
licenseImportError = False |
Lines 82-99
class ForkingTCPServer(SocketServer.ForkingTCPServer):
|
Link Here
|
---|
|
82 |
self.server_port = port |
83 |
self.server_port = port |
83 |
|
84 |
|
84 |
|
85 |
|
85 |
def server_main(): |
86 |
def server_main(args): |
86 |
"""UDM command line server.""" |
87 |
"""UDM command line server.""" |
87 |
global logfile |
|
|
88 |
try: |
89 |
logfile = sys.argv[1] |
90 |
except IndexError: |
91 |
logfile = '/var/log/univention/directory-manager-cmd.log' |
92 |
|
88 |
|
93 |
socket_dir = '/tmp/admincli_%s/' % os.getuid() |
89 |
socket_dir = '/tmp/admincli_%s/' % os.getuid() |
94 |
socket_filename = 'sock' |
90 |
socket_filename = 'sock' |
95 |
socket_path = (socket_dir+socket_filename) |
91 |
socket_path = (socket_dir+socket_filename) |
96 |
|
92 |
|
|
|
93 |
global logfile |
94 |
logfile = args.logfile |
97 |
ud.init(logfile, ud.FLUSH, ud.NO_FUNCTION) |
95 |
ud.init(logfile, ud.FLUSH, ud.NO_FUNCTION) |
98 |
|
96 |
|
99 |
runfilename = '%s.run' % socket_path |
97 |
runfilename = '%s.run' % socket_path |
|
113 |
print >> sys.stderr, 'E: Server already running [Pid: %s]' % pid |
111 |
print >> sys.stderr, 'E: Server already running [Pid: %s]' % pid |
114 |
sys.exit(1) |
112 |
sys.exit(1) |
115 |
|
113 |
|
116 |
configRegistry = ConfigRegistry() |
114 |
ud.set_level(ud.ADMIN, args.debug_level) |
117 |
configRegistry.load() |
|
|
118 |
debug_level = configRegistry.get('directory/manager/cmd/debug/level', 1) |
119 |
ud.set_level(ud.ADMIN, int(debug_level)) |
120 |
ud.debug(ud.ADMIN, ud.INFO, 'daemon [%s] forked to background' % os.getpid()) |
115 |
ud.debug(ud.ADMIN, ud.INFO, 'daemon [%s] forked to background' % os.getpid()) |
121 |
|
116 |
|
122 |
try: |
117 |
try: |
|
129 |
else: |
124 |
else: |
130 |
print >> sys.stderr, 'E: socket directory exists (%s)' % socket_dir |
125 |
print >> sys.stderr, 'E: socket directory exists (%s)' % socket_dir |
131 |
|
126 |
|
132 |
timeout = configRegistry.get('directory/manager/cmd/timeout') |
127 |
timeout = args.timeout |
133 |
if timeout: |
128 |
if timeout: |
134 |
if int(timeout) > 2147483647: |
129 |
if int(timeout) > 2147483647: |
135 |
timeout = 2147483647 |
130 |
timeout = 2147483647 |
Lines 249-261
def doit(sarglist, conn):
|
Link Here
|
---|
|
249 |
|
244 |
|
250 |
|
245 |
|
251 |
def main(): |
246 |
def main(): |
252 |
pid = os.fork() |
247 |
ucr = ConfigRegistry() |
253 |
if pid == 0: # child |
248 |
ucr.load() |
254 |
os.setsid() |
249 |
debug_level = int(ucr.get('directory/manager/cmd/debug/level', 1)) |
255 |
server_main() |
250 |
timeout = int(ucr.get('directory/manager/cmd/timeout', 300)) |
256 |
sys.exit(0) |
251 |
|
257 |
else: # parent |
252 |
argparser = ArgumentParser() |
258 |
os.waitpid(pid, os.P_NOWAIT) |
253 |
argparser.add_argument('-n', dest='daemonize', action='store_false', default=True, help='Run in foreground without daemonizing') |
|
|
254 |
argparser.add_argument('-L', dest='logfile', action='store', default='/var/log/univention/directory-manager-cmd.log', help='logfile: %(default)s') |
255 |
argparser.add_argument('-d', dest='debug_level', action='store', type=int, default=debug_level, help='debug level: %(default)s') |
256 |
argparser.add_argument('-t', dest='timeout', action='store', type=int, default=timeout, help='timeout: %(default)s') |
257 |
args = argparser.parse_args() |
258 |
|
259 |
if args.daemonize: |
260 |
pid = os.fork() |
261 |
if pid == 0: # child |
262 |
os.setsid() |
263 |
server_main(args) |
264 |
sys.exit(0) |
265 |
else: # parent |
266 |
os.waitpid(pid, os.P_NOWAIT) |
267 |
else: |
268 |
server_main(args) |
259 |
|
269 |
|
260 |
if __name__ == "__main__": |
270 |
if __name__ == "__main__": |
261 |
main() |
271 |
main() |