5858
5959# Global data storage
6060class DataStore (object ):
61- admin_id = ""
61+ admin_token = ""
6262 current_db = None
6363 tasks = dict ()
6464 username = None
@@ -275,8 +275,8 @@ def setRestAPILog():
275275 logger .addHandler (LOGGER_RECORDER )
276276
277277# Generic functions
278- def is_admin (taskid ):
279- return DataStore .admin_id == taskid
278+ def is_admin (token ):
279+ return DataStore .admin_token == token
280280
281281@hook ('before_request' )
282282def check_authentication ():
@@ -358,7 +358,7 @@ def path_401():
358358@get ("/task/new" )
359359def task_new ():
360360 """
361- Create new task ID
361+ Create a new task
362362 """
363363 taskid = hexencode (os .urandom (8 ))
364364 remote_addr = request .remote_addr
@@ -371,47 +371,50 @@ def task_new():
371371@get ("/task/<taskid>/delete" )
372372def task_delete (taskid ):
373373 """
374- Delete own task ID
374+ Delete an existing task
375375 """
376376 if taskid in DataStore .tasks :
377377 DataStore .tasks .pop (taskid )
378378
379379 logger .debug ("[%s] Deleted task" % taskid )
380380 return jsonize ({"success" : True })
381381 else :
382- logger .warning ("[%s] Invalid task ID provided to task_delete()" % taskid )
383- return jsonize ({"success" : False , "message" : "Invalid task ID" })
382+ response .status = 404
383+ logger .warning ("[%s] Non-existing task ID provided to task_delete()" % taskid )
384+ return jsonize ({"success" : False , "message" : "Non-existing task ID" })
384385
385386###################
386387# Admin functions #
387388###################
388389
389- @get ("/admin/<taskid>/list" )
390- def task_list (taskid = None ):
390+ @get ("/admin/list" )
391+ @get ("/admin/<token>/list" )
392+ def task_list (token = None ):
391393 """
392- List task pull
394+ Pull task list
393395 """
394396 tasks = {}
395397
396398 for key in DataStore .tasks :
397- if is_admin (taskid ) or DataStore .tasks [key ].remote_addr == request .remote_addr :
399+ if is_admin (token ) or DataStore .tasks [key ].remote_addr == request .remote_addr :
398400 tasks [key ] = dejsonize (scan_status (key ))["status" ]
399401
400- logger .debug ("[%s] Listed task pool (%s)" % (taskid , "admin" if is_admin (taskid ) else request .remote_addr ))
402+ logger .debug ("[%s] Listed task pool (%s)" % (token , "admin" if is_admin (token ) else request .remote_addr ))
401403 return jsonize ({"success" : True , "tasks" : tasks , "tasks_num" : len (tasks )})
402404
403- @get ("/admin/<taskid>/flush" )
404- def task_flush (taskid ):
405+ @get ("/admin/flush" )
406+ @get ("/admin/<token>/flush" )
407+ def task_flush (token = None ):
405408 """
406409 Flush task spool (delete all tasks)
407410 """
408411
409412 for key in list (DataStore .tasks ):
410- if is_admin (taskid ) or DataStore .tasks [key ].remote_addr == request .remote_addr :
413+ if is_admin (token ) or DataStore .tasks [key ].remote_addr == request .remote_addr :
411414 DataStore .tasks [key ].engine_kill ()
412415 del DataStore .tasks [key ]
413416
414- logger .debug ("[%s] Flushed task pool (%s)" % (taskid , "admin" if is_admin (taskid ) else request .remote_addr ))
417+ logger .debug ("[%s] Flushed task pool (%s)" % (token , "admin" if is_admin (token ) else request .remote_addr ))
415418 return jsonize ({"success" : True })
416419
417420##################################
@@ -647,7 +650,7 @@ def server(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, adapter=REST
647650 REST-JSON API server
648651 """
649652
650- DataStore .admin_id = hexencode (os .urandom (16 ))
653+ DataStore .admin_token = hexencode (os .urandom (16 ))
651654 DataStore .username = username
652655 DataStore .password = password
653656
@@ -660,7 +663,7 @@ def server(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, adapter=REST
660663 port = s .getsockname ()[1 ]
661664
662665 logger .info ("Running REST-JSON API server at '%s:%d'.." % (host , port ))
663- logger .info ("Admin ID : %s" % DataStore .admin_id )
666+ logger .info ("Admin (secret) token : %s" % DataStore .admin_token )
664667 logger .debug ("IPC database: '%s'" % Database .filepath )
665668
666669 # Initialize IPC database
@@ -696,7 +699,7 @@ def server(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, adapter=REST
696699 logger .critical (errMsg )
697700
698701def _client (url , options = None ):
699- logger .debug ("Calling %s " % url )
702+ logger .debug ("Calling '%s' " % url )
700703 try :
701704 data = None
702705 if options is not None :
@@ -833,7 +836,7 @@ def client(host=RESTAPI_DEFAULT_ADDRESS, port=RESTAPI_DEFAULT_PORT, username=Non
833836 logger .info ("Switching to task ID '%s' " % taskid )
834837
835838 elif command in ("list" , "flush" ):
836- raw = _client ("%s/admin/%s/%s " % (addr , taskid or 0 , command ))
839+ raw = _client ("%s/admin/%s" % (addr , command ))
837840 res = dejsonize (raw )
838841 if not res ["success" ]:
839842 logger .error ("Failed to execute command %s" % command )
0 commit comments