Example #1
0
def execself(delay):
    global isprimary
    
    restartscript = config.get('restart-script')
    if (not restartscript):
        rootlogger.error('no restart-script available!')
        return

    if (not isprimary):
        rootlogger.error('child process cannot fork again!')
        return
        
    rootlogger.warning('will re-exec self (delay %s)...', delay)

    newargs = list(originalargs)
    try:
        pos = newargs.index('--delay')
    except:
        pos = -1
    if (delay):
        if (pos < 0):
            newargs.extend(['--delay', '5'])
        else:
            newargs[pos+1] = '5'
    else:
        if (pos < 0):
            newargs.extend(['--delay', '0'])
        else:
            newargs[pos+1] = '0'

    pid = os.fork()
    if (pid == 0):
        # child
        isprimary = False
        rootlogger.warning('...child forked, continuing')
    else:
        # parent
        try:
            os.execv(restartscript, newargs)
        except Exception, ex:
            rootlogger.error('Unable to exec %s: %s', restartscript, ex)
        rootlogger.error('parent should not still exist!')
Example #2
0
argmap['bookkeeper'] = opts.bookkeeper
if (opts.keepalive):
    argmap['keepalive'] = 'True'
if (opts.keepaliveinterval):
    argmap['keepalive-interval'] = str(opts.keepaliveinterval)
argmap['jabber-security'] = opts.jabbersecurity
argmap['admin'] = opts.admin
argmap['restart-script'] = opts.restartscript
argmap['logfile'] = opts.logfile
def argmap_restart_func(delay):
    execself(delay)
argmap['restart-func-'] = argmap_restart_func

config = volity.config.ConfigFile(opts.configfile, argmap)

if (not (config.get('game') or config.get('bot'))):
    print sys.argv[0] + ': missing required option: --game GAMECLASS (or --bot BOTCLASS)'
    errors = True
        
if (not config.get('jid')):
    print sys.argv[0] + ': missing required option: --jid JID'
    errors = True
else:
    if (config.get('jid').find('@') < 0):
        print sys.argv[0] + ': JID must be a full <name@domain>'
        errors = True

if (not config.get('password')):
    print sys.argv[0] + ': missing required option: --password PASSWORD'
    errors = True