#940: Proper sequence of decorators

remotes/github/python3
Ramón M. Gómez 2020-05-06 19:31:33 +02:00
parent e274dc0ee9
commit de4289ae2b
1 changed files with 8 additions and 7 deletions

View File

@ -54,7 +54,7 @@ def check_secret(fnc):
"""
def wrapper(*args, **kwargs):
try:
this, path, get_params, post_params, server = args # @UnusedVariable
this, path, get_params, post_params, server = args
# Accept "status" operation with no arguments or any function with Authorization header
if fnc.__name__ == 'process_status' and not get_params:
return fnc(*args, **kwargs)
@ -238,8 +238,9 @@ class OpenGnSysWorker(ServerWorker):
raise Exception('Message processor for "{}" not found'.format(path[0]))
return operation(path[1:], get_params, post_params)
@check_secret
# Warning: the order of the decorators matters
@execution_level('status')
@check_secret
def process_status(self, path, get_params, post_params, server):
"""
Returns client status (OS type or execution status) and login status
@ -263,8 +264,8 @@ class OpenGnSysWorker(ServerWorker):
res = {'status': 'UNK'}
return res
@check_secret
@execution_level('halt')
@check_secret
def process_reboot(self, path, get_params, post_params, server):
"""
Launches a system reboot operation
@ -282,8 +283,8 @@ class OpenGnSysWorker(ServerWorker):
threading.Thread(target=rebt).start()
return {'op': 'launched'}
@check_secret
@execution_level('halt')
@check_secret
def process_poweroff(self, path, get_params, post_params, server):
"""
Launches a system power off operation
@ -302,8 +303,8 @@ class OpenGnSysWorker(ServerWorker):
threading.Thread(target=pwoff).start()
return {'op': 'launched'}
@check_secret
@execution_level('full')
@check_secret
def process_script(self, path, get_params, post_params, server):
"""
Processes an script execution (script should be encoded in base64)
@ -329,8 +330,8 @@ class OpenGnSysWorker(ServerWorker):
self.sendClientMessage('script', {'code': script})
return {'op': 'launched'}
@check_secret
@execution_level('full')
@check_secret
def process_logoff(self, path, get_params, post_params, server):
"""
Closes user session
@ -340,8 +341,8 @@ class OpenGnSysWorker(ServerWorker):
self.sendClientMessage('logoff', {})
return {'op': 'sent to client'}
@check_secret
@execution_level('full')
@check_secret
def process_popup(self, path, get_params, post_params, server):
"""
Shows a message popup on the user's session