Add killserver to API

pull/4/head
Simon 2 years ago
parent 917627c1da
commit 787186bc60

@ -41,6 +41,10 @@ class FD_APIUserDefinedContext(object):
def options(self,system,options):
self.CONFIG['SYSTEMS'][system]['OPTIONS'] = options
def killserver(self):
self.CONFIG['GLOBAL']['_KILL_SERVER'] = True
class FD_API(ServiceBase):
_version = 0.1
@ -54,6 +58,9 @@ class FD_API(ServiceBase):
def dummy(ctx):
pass
######################
#User level API calls#
######################
@rpc(Unicode,Unicode)
def reset(ctx,dmrid,key):
system = ctx.udc.validateKey(int(dmrid),key)
@ -70,9 +77,17 @@ class FD_API(ServiceBase):
else:
raise error.InvalidCredentialsError()
@rpc(UnsignedInteger32)
def killserver(ctx,killkey):
pass
########################
#System level API calls#
########################
@rpc(Unicode)
def killserver(ctx,systemkey):
if ctx.udc.validateSystemKey(systemkey):
return ctx.udc.killserver()
else:
raise error.InvalidCredentialsError()
@rpc(Unicode,_returns=Unicode())
def getconfig(ctx,systemkey):
@ -88,3 +103,4 @@ class FD_API(ServiceBase):
else:
raise error.InvalidCredentialsError()

@ -2725,6 +2725,16 @@ if __name__ == '__main__':
if CONFIG['ALIASES']['SUB_MAP_FILE']:
subMapWrite()
#Server kill routine
def kill_server():
try:
if CONFIG['GLOBAL']['_KILL_SERVER']:
logger.info('(GLOBAL) SHUTDOWN: CONFBRIDGE IS TERMINATING - killserver called from API')
reactor.stop()
except KeyError:
pass
# Set signal handers so that we can gracefully exit if need be
for sig in [signal.SIGINT, signal.SIGTERM]:
signal.signal(sig, sig_handler)
@ -2965,6 +2975,11 @@ if __name__ == '__main__':
sub_trimmer_task = task.LoopingCall(SubMapTrimmer)
sub_trimmer = sub_trimmer_task.start(3600)#3600
sub_trimmer.addErrback(loopingErrHandle)
#Server kill switch checker
killserver_task = task.LoopingCall(kill_server)
killserver = killserver_task.start(10)
killserver.addErrback(loopingErrHandle)
#more threads
reactor.suggestThreadPoolSize(100)

Loading…
Cancel
Save

Powered by TurnKey Linux.