32 lines
966 B
Python
32 lines
966 B
Python
import logging
|
|
import json
|
|
|
|
import features
|
|
|
|
from app import secscan_notification_queue, secscan_api
|
|
from flask import request, make_response, Blueprint, abort
|
|
from endpoints.common import route_show_if
|
|
|
|
logger = logging.getLogger(__name__)
|
|
secscan = Blueprint('secscan', __name__)
|
|
|
|
@route_show_if(features.SECURITY_SCANNER)
|
|
@secscan.route('/notify', methods=['POST'])
|
|
def secscan_notification():
|
|
data = request.get_json()
|
|
logger.debug('Got notification from Security Scanner: %s', data)
|
|
if 'Notification' not in data:
|
|
abort(400)
|
|
|
|
notification = data['Notification']
|
|
|
|
# Queue the notification to be processed.
|
|
item_id = secscan_notification_queue.put(['named', notification['Name']],
|
|
json.dumps(notification))
|
|
|
|
# Mark the notification as read.
|
|
if not secscan_api.mark_notification_read(notification['Name']):
|
|
secscan_notification_queue.cancel(item_id)
|
|
abort(400)
|
|
|
|
return make_response('Okay')
|