def execute_command():
logger.info('Got incoming request')
if 'command' not in request.form:
return jsonify(error="Missing parameter 'command'"), 422
command = request.form['command']
file_name = _extract_filename_from_command(command)
if file_name is not None and not os.path.isfile(file_name):
logger.warn("Couldn't find file %s", file_name)
if not command.startswith('idal ') and not command.startswith('idal64 '):
return jsonify(error="'idal' and 'idal64' are the only valid commands"), 422
try:
logger.info('Executing %s', command)
timeout = None if 'timeout' not in request.form else int(request.form['timeout'])
_, exit_code = pexpect.run(command, timeout=timeout, withexitstatus=True)
except pexpect.TIMEOUT:
return jsonify(error='request to ida timed out'), 408
finally:
if file_name is not None:
_remove_ida_created_files(file_name)
logger.info('Removed ida leftover files')
if exit_code == 0:
logger.info('Command %s finished executing successfully', command)
else:
logger.warn("Command %s didn't finish correctly, IDA returned exit code %s", command, exit_code)
if exit_code != 0:
return jsonify(error='ida finish with status code %s' % exit_code), 500
else:
return jsonify(message='OK'), 200
评论列表
文章目录