I am trying to run cuckoo api. Cuckoo web is working fine on my system. But when I tried cuckoo api, I got the following error:
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1512, in handle_user_exception
return self.handle_http_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1471, in handle_http_exception
return handler(e)
File "/usr/local/lib/python2.7/dist-packages/cuckoo/apps/api.py", line 719, in api_auth_required
401, "Authentication in the form of an "
File "/usr/local/lib/python2.7/dist-packages/cuckoo/apps/api.py", line 36, in json_error
r = jsonify(message=message)
File "/usr/local/lib/python2.7/dist-packages/flask/json.py", line 251, in jsonify
if current_app.config['JSONIFY_PRETTYPRINT_REGULAR'] and not request.is_xhr:
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 347, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Request' object has no attribute 'is_xhr'
2020-04-02 18:50:39,640 [werkzeug] INFO: 192.168.100.94 - - [02/Apr/2020 18:50:39] "GET / HTTP/1.1" 500 -
I tried to change api.py by adding the following code:
@app.route("/publish/epoch/end/", methods=['POST'])
def publish():
#payload = request.form.get('data')
payload = unquote(request.data.split('=')[1]).replace('+','')
try:
`enter code here` data = json.loads(payload)
except:
return {'error':'invalid payload'}
def notify():
msg = str(time.time())
for sub in subscriptions[:]:
sub.put(payload)
gevent.spawn(notify)
return "OK"
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
model.save()
# Failure to return a redirect or render_template
else:
return render_template('index.html')
But that didn't help me. What could be the solution to this issue?
The
request.is_xhrmethod has been deprecated & removed, as it was unreliable. See discussion here and here about why it was removed.You may need to pin your local version of Werkzeug to something that is compatible with Cuckoo's pinned version of Flask (example here) until Cuckoo updates to a newer version of Flask.