コード例 #1
0
def start_daemon(stdio="/dev/null"):
    try:
        ret = os.fork()
    except OSError, err:
        lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror))
        return 1
コード例 #2
0
def sbserver():
    global run_daemon

    run_daemon = True

    conf = {}
    if (not start_config_default(conf)):
        return 1
    if (not start_config_params(conf)):
        return 1
    if (not start_config_get(conf)):
        return 1
    start_log(conf)
    linfo('starting %s process' % conf['general']['name'])
    if (not start_config_check(conf)):
        return 1

    signal(SIGHUP, sig_handler)
    signal(SIGTERM, sig_handler)

    if (conf['general']['daemon'] == 'yes'):
        ldebug('%s process starting in daemon mode' % conf['general']['name'])
        ret = start_daemon()

        if (ret != 0):
            lcritic('failed to start %s daemon' % conf['general']['name'])
            os.exit(ret)

    ldebug('started %s process with pid: %d' %
           (conf['general']['name'], os.getpid()))
    eventhandler = EventHandler()
    plugins = start_modules(conf)
    plugins['EventHandler'] = {}
    plugins['EventHandler']['type'] = (0, )
    plugins['EventHandler']['object'] = eventhandler

    for plugin in plugins:
        if (0 in plugins[plugin]['type']):
            ldebug('start system plugin %s' % plugin)
            plugins[plugin]['object'].config(conf)
            plugins[plugin]['object'].plugins(plugins)
            plugins[plugin]['object'].start()
        elif (1 in plugins[plugin]['type']):
            ldebug('start listener plugin %s' % plugin)
            plugins[plugin]['object'].config(conf)
            plugins[plugin]['object'].plugins(plugins)
            plugins[plugin]['object'].start()
        elif (2 in plugins[plugin]['type']):
            ldebug('start handler plugin %s' % plugin)
            plugins[plugin]['object'].config(conf)
            plugins[plugin]['object'].plugins(plugins)
            plugins[plugin]['object'].start()

    while (run_daemon):
        sleep(0.5)

    for plugin in plugins:
        if (2 in plugins[plugin]['type']):
            ldebug('stop handler plugin %s' % plugin)
            plugins[plugin]['object'].stop()
        if (1 in plugins[plugin]['type']):
            ldebug('stop listener plugin %s' % plugin)
            plugins[plugin]['object'].stop()
        if (0 in plugins[plugin]['type']):
            ldebug('stop system plugin %s' % plugin)
            plugins[plugin]['object'].stop()
    sleep(1)

    linfo('exiting %s process' % conf['general']['name'])
    return 1
コード例 #3
0
        ldebug('signal %d ignored' % number)


def start_daemon(stdio="/dev/null"):
    try:
        ret = os.fork()
    except OSError, err:
        lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror))
        return 1

    if (ret == 0):
        os.setsid()
        try:
            ret = os.fork()
        except OSError, err:
            lcritic('on daemon start error: (%d) %s ' %
                    (err.errno, err.strerror))
            return 1

        if (ret != 0):
            os._exit(0)
    else:

        os._exit(0)

    os.open(stdio, os.O_RDWR)
    os.dup2(0, 1)
    os.dup2(0, 2)

    return 0

コード例 #4
0
ファイル: sbserver.py プロジェクト: Denisz123/GemeinschaftPBX
def start_daemon(stdio = "/dev/null"):
	try:
		ret = os.fork()
	except OSError, err:
		lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror))
		return 1
コード例 #5
0
ファイル: sbserver.py プロジェクト: Denisz123/GemeinschaftPBX
def sbserver():
	global run_daemon

	run_daemon = True

	conf = {}
	if (not start_config_default(conf)):
		return 1
	if (not start_config_params(conf)):
		return 1
	if (not start_config_get(conf)):
		return 1
	start_log(conf)
	linfo('starting %s process' % conf['general']['name'])
	if (not start_config_check(conf)):
		return 1
	
	signal(SIGHUP, sig_handler)
	signal(SIGTERM, sig_handler)

	if (conf['general']['daemon'] == 'yes'):
		ldebug('%s process starting in daemon mode' % conf['general']['name'])
		ret = start_daemon()

		if (ret != 0):
			lcritic('failed to start %s daemon' % conf['general']['name'])
			os.exit(ret)

	ldebug('started %s process with pid: %d' % (conf['general']['name'], os.getpid()))
	eventhandler = EventHandler()
	plugins = start_modules(conf)
	plugins['EventHandler'] = {}
	plugins['EventHandler']['type'] = (0,)
	plugins['EventHandler']['object'] = eventhandler

	for plugin in plugins:
		if (0 in plugins[plugin]['type']):
			ldebug('start system plugin %s' % plugin)
			plugins[plugin]['object'].config(conf)
			plugins[plugin]['object'].plugins(plugins)
			plugins[plugin]['object'].start()
		elif (1 in plugins[plugin]['type']):
			ldebug('start listener plugin %s' % plugin)
			plugins[plugin]['object'].config(conf)
			plugins[plugin]['object'].plugins(plugins)
			plugins[plugin]['object'].start()
		elif (2 in plugins[plugin]['type']):
			ldebug('start handler plugin %s' % plugin)
			plugins[plugin]['object'].config(conf)
			plugins[plugin]['object'].plugins(plugins)
			plugins[plugin]['object'].start()

	while (run_daemon):
		sleep(0.5)
		
	for plugin in plugins:
		if (2 in plugins[plugin]['type']):
			ldebug('stop handler plugin %s' % plugin)
			plugins[plugin]['object'].stop()
		if (1 in plugins[plugin]['type']):
			ldebug('stop listener plugin %s' % plugin)
			plugins[plugin]['object'].stop()
		if (0 in plugins[plugin]['type']):
			ldebug('stop system plugin %s' % plugin)
			plugins[plugin]['object'].stop()
	sleep(1)
			
	linfo('exiting %s process' % conf['general']['name'])
	return 1
コード例 #6
0
ファイル: sbserver.py プロジェクト: Denisz123/GemeinschaftPBX
	else:
		ldebug('signal %d ignored' % number)

def start_daemon(stdio = "/dev/null"):
	try:
		ret = os.fork()
	except OSError, err:
		lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror))
		return 1

	if (ret == 0):
		os.setsid()
		try:
			ret = os.fork()
		except OSError, err:
			lcritic('on daemon start error: (%d) %s ' % (err.errno, err.strerror))
			return 1

		if (ret != 0):
			os._exit(0)
	else:

		os._exit(0)

	os.open(stdio, os.O_RDWR)
	os.dup2(0, 1)
	os.dup2(0, 2)

	return 0