mirror of https://github.com/CIRCL/AIL-framework
chg: display last logs
parent
8beb63b6a8
commit
5ad5939bd5
|
@ -79,8 +79,6 @@ if __name__ == "__main__":
|
||||||
content = paste.get_p_content()
|
content = paste.get_p_content()
|
||||||
creds = set(re.findall(regex_cred, content))
|
creds = set(re.findall(regex_cred, content))
|
||||||
|
|
||||||
publisher.warning('to_print')
|
|
||||||
|
|
||||||
if len(creds) == 0:
|
if len(creds) == 0:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,12 @@
|
||||||
Flask functions and routes for the dashboard page
|
Flask functions and routes for the dashboard page
|
||||||
'''
|
'''
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
import flask
|
import flask
|
||||||
|
|
||||||
|
from Date import Date
|
||||||
|
|
||||||
from flask import Flask, render_template, jsonify, request, Blueprint
|
from flask import Flask, render_template, jsonify, request, Blueprint
|
||||||
|
|
||||||
# ============ VARIABLES ============
|
# ============ VARIABLES ============
|
||||||
|
@ -35,6 +38,8 @@ def event_stream():
|
||||||
msg = {'channel': channel, 'type': type, 'pattern': pattern, 'data': data}
|
msg = {'channel': channel, 'type': type, 'pattern': pattern, 'data': data}
|
||||||
|
|
||||||
level = (msg['channel']).split('.')[1]
|
level = (msg['channel']).split('.')[1]
|
||||||
|
#if msg['type'] == 'pmessage' and (level == "WARNING" or level == "CRITICAL"):
|
||||||
|
#print(msg)
|
||||||
if msg['type'] == 'pmessage' and level != "DEBUG":
|
if msg['type'] == 'pmessage' and level != "DEBUG":
|
||||||
yield 'data: %s\n\n' % json.dumps(msg)
|
yield 'data: %s\n\n' % json.dumps(msg)
|
||||||
|
|
||||||
|
@ -62,12 +67,77 @@ def get_queues(r):
|
||||||
|
|
||||||
return newData
|
return newData
|
||||||
|
|
||||||
|
def get_date_range(date_from, num_day):
|
||||||
|
date = Date(str(date_from[0:4])+str(date_from[4:6]).zfill(2)+str(date_from[6:8]).zfill(2))
|
||||||
|
date_list = []
|
||||||
|
|
||||||
|
for i in range(0, num_day+1):
|
||||||
|
new_date = date.substract_day(i)
|
||||||
|
date_list.append(new_date[0:4] +'-'+ new_date[4:6] +'-'+ new_date[6:8])
|
||||||
|
|
||||||
|
return date_list
|
||||||
|
|
||||||
|
def dashboard_alert(log):
|
||||||
|
# check if we need to display this log
|
||||||
|
if len(log)>50:
|
||||||
|
date = log[1:5]+log[6:8]+log[9:11]
|
||||||
|
time = log[12:20]
|
||||||
|
log = log[46:].split(';')
|
||||||
|
if len(log) == 6:
|
||||||
|
res = {'date': date, 'time': time, 'script': log[0], 'domain': log[1], 'date_paste': log[2], 'paste': log[3], 'message': log[4]}
|
||||||
|
return res
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
# ============ ROUTES ============
|
# ============ ROUTES ============
|
||||||
|
|
||||||
@dashboard.route("/_logs")
|
@dashboard.route("/_logs")
|
||||||
def logs():
|
def logs():
|
||||||
return flask.Response(event_stream(), mimetype="text/event-stream")
|
return flask.Response(event_stream(), mimetype="text/event-stream")
|
||||||
|
|
||||||
|
@dashboard.route("/_get_last_logs_json")
|
||||||
|
def get_last_logs_json():
|
||||||
|
date = datetime.datetime.now().strftime("%Y%m%d")
|
||||||
|
|
||||||
|
max_day_search = 6
|
||||||
|
day_search = 0
|
||||||
|
warning_found = 0
|
||||||
|
warning_to_found = 10
|
||||||
|
|
||||||
|
last_logs = []
|
||||||
|
|
||||||
|
date_range = get_date_range(date, max_day_search)
|
||||||
|
while max_day_search != day_search | warning_found != warning_to_found:
|
||||||
|
|
||||||
|
filename_warning_log = 'logs/Script_warn-'+ date_range[day_search] +'.log'
|
||||||
|
filename_log = os.path.join(os.environ['AIL_HOME'], filename_warning_log)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(filename_log, 'r') as f:
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
curr_index = -1
|
||||||
|
while warning_found != warning_to_found:
|
||||||
|
try:
|
||||||
|
# get lasts warning logs
|
||||||
|
log_warn = dashboard_alert(lines[curr_index])
|
||||||
|
if log_warn != False:
|
||||||
|
last_logs.append(log_warn)
|
||||||
|
warning_found = warning_found + 1
|
||||||
|
curr_index = curr_index - 1
|
||||||
|
|
||||||
|
except IndexError:
|
||||||
|
# check previous warning log file
|
||||||
|
day_search = day_search + 1
|
||||||
|
break
|
||||||
|
except FileNotFoundError:
|
||||||
|
# check previous warning log file
|
||||||
|
day_search = day_search + 1
|
||||||
|
|
||||||
|
return jsonify(last_logs)
|
||||||
|
|
||||||
|
|
||||||
@dashboard.route("/_stuff", methods=['GET'])
|
@dashboard.route("/_stuff", methods=['GET'])
|
||||||
def stuff():
|
def stuff():
|
||||||
|
|
|
@ -31,6 +31,14 @@
|
||||||
};
|
};
|
||||||
update_values();
|
update_values();
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
.tableQueue tbody tr td,
|
||||||
|
.tableQueue tbody tr th,
|
||||||
|
.tableQueue thead tr td,
|
||||||
|
.tableQueue thead tr th{
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -182,6 +190,58 @@
|
||||||
<script>
|
<script>
|
||||||
activePage = "page-index";
|
activePage = "page-index";
|
||||||
$("#"+activePage).addClass("active");
|
$("#"+activePage).addClass("active");
|
||||||
|
|
||||||
|
var tableBody = document.getElementById('tab_body')
|
||||||
|
$.getJSON('/_get_last_logs_json', function(data) {
|
||||||
|
console.log(data);
|
||||||
|
data.forEach(function (d) {
|
||||||
|
var tr = document.createElement('TR')
|
||||||
|
var time = document.createElement('TD')
|
||||||
|
var chan = document.createElement('TD')
|
||||||
|
var level = document.createElement('TD')
|
||||||
|
var scrpt = document.createElement('TD')
|
||||||
|
var src = document.createElement('TD')
|
||||||
|
var pdate = document.createElement('TD')
|
||||||
|
var nam = document.createElement('TD')
|
||||||
|
var msage = document.createElement('TD')
|
||||||
|
var inspect = document.createElement('TD')
|
||||||
|
|
||||||
|
time.appendChild(document.createTextNode(d.time))
|
||||||
|
chan.appendChild(document.createTextNode('Script'))
|
||||||
|
level.appendChild(document.createTextNode('WARNING'))
|
||||||
|
scrpt.appendChild(document.createTextNode(d.script))
|
||||||
|
src.appendChild(document.createTextNode(d.domain))
|
||||||
|
pdate.appendChild(document.createTextNode(d.date_paste))
|
||||||
|
nam.appendChild(document.createTextNode(d.paste))
|
||||||
|
|
||||||
|
var iconspan = document.createElement('SPAN');
|
||||||
|
var message = d.message.split(" ")
|
||||||
|
if (message[0] == "Detected"){
|
||||||
|
iconspan.className = "glyphicon glyphicon-eye-open";
|
||||||
|
}
|
||||||
|
else if (message[0] == "Checked"){
|
||||||
|
iconspan.className = "glyphicon glyphicon-thumbs-up";
|
||||||
|
}
|
||||||
|
iconspan.innerHTML = " ";
|
||||||
|
msage.appendChild(iconspan);
|
||||||
|
msage.appendChild(document.createTextNode(message.join(" ")));
|
||||||
|
|
||||||
|
inspect.appendChild(document.createTextNode(' '))
|
||||||
|
|
||||||
|
tr.appendChild(time)
|
||||||
|
tr.appendChild(chan);
|
||||||
|
tr.appendChild(level);
|
||||||
|
tr.appendChild(scrpt);
|
||||||
|
tr.appendChild(src);
|
||||||
|
tr.appendChild(pdate);
|
||||||
|
tr.appendChild(nam);
|
||||||
|
tr.appendChild(msage);
|
||||||
|
tr.appendChild(inspect);
|
||||||
|
|
||||||
|
tableBody.appendChild(tr);
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
|
@ -115,7 +115,7 @@ function update_processed_pastes(graph, dataset, graph_type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// END PROCESSED PASTES
|
// END PROCESSED PASTES
|
||||||
|
|
||||||
function initfunc( csvay, scroot) {
|
function initfunc( csvay, scroot) {
|
||||||
window.csv = csvay;
|
window.csv = csvay;
|
||||||
|
@ -134,6 +134,7 @@ function pad_2(number) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_log_table(obj_json) {
|
function create_log_table(obj_json) {
|
||||||
|
console.log(obj_json);
|
||||||
tableBody = document.getElementById("tab_body")
|
tableBody = document.getElementById("tab_body")
|
||||||
var tr = document.createElement('TR')
|
var tr = document.createElement('TR')
|
||||||
var time = document.createElement('TD')
|
var time = document.createElement('TD')
|
||||||
|
@ -149,11 +150,11 @@ function create_log_table(obj_json) {
|
||||||
var chansplit = obj_json.channel.split('.');
|
var chansplit = obj_json.channel.split('.');
|
||||||
var parsedmess = obj_json.data.split(';');
|
var parsedmess = obj_json.data.split(';');
|
||||||
|
|
||||||
|
|
||||||
if (parsedmess[0] == "Mixer"){
|
if (parsedmess[0] == "Mixer"){
|
||||||
var feeder = parsedmess[4].split(" ")[1];
|
var feeder = parsedmess[4].split(" ")[1];
|
||||||
var paste_processed = parsedmess[4].split(" ")[3];
|
var paste_processed = parsedmess[4].split(" ")[3];
|
||||||
var msg_type = parsedmess[4].split(" ")[2];
|
var msg_type = parsedmess[4].split(" ")[2];
|
||||||
|
|
||||||
if (feeder == "All_feeders"){
|
if (feeder == "All_feeders"){
|
||||||
if(list_feeder.indexOf("global") == -1) {
|
if(list_feeder.indexOf("global") == -1) {
|
||||||
|
@ -246,7 +247,7 @@ function create_log_table(obj_json) {
|
||||||
var action_icon_span = document.createElement('SPAN');
|
var action_icon_span = document.createElement('SPAN');
|
||||||
action_icon_span.className = "fa fa-search-plus";
|
action_icon_span.className = "fa fa-search-plus";
|
||||||
action_icon_a.appendChild(action_icon_span);
|
action_icon_a.appendChild(action_icon_span);
|
||||||
|
|
||||||
inspect.appendChild(action_icon_a);
|
inspect.appendChild(action_icon_a);
|
||||||
|
|
||||||
tr.appendChild(time)
|
tr.appendChild(time)
|
||||||
|
@ -281,7 +282,7 @@ function create_queue_table() {
|
||||||
document.getElementById("queueing").innerHTML = "";
|
document.getElementById("queueing").innerHTML = "";
|
||||||
var Tablediv = document.getElementById("queueing")
|
var Tablediv = document.getElementById("queueing")
|
||||||
var table = document.createElement('TABLE')
|
var table = document.createElement('TABLE')
|
||||||
table.className = "table table-bordered table-hover table-striped";
|
table.className = "table table-bordered table-hover table-striped tableQueue";
|
||||||
var tableHead = document.createElement('THEAD')
|
var tableHead = document.createElement('THEAD')
|
||||||
var tableBody = document.createElement('TBODY')
|
var tableBody = document.createElement('TBODY')
|
||||||
|
|
||||||
|
@ -295,7 +296,11 @@ function create_queue_table() {
|
||||||
|
|
||||||
for (i = 0; i < heading.length; i++) {
|
for (i = 0; i < heading.length; i++) {
|
||||||
var th = document.createElement('TH')
|
var th = document.createElement('TH')
|
||||||
th.width = '100';
|
if (heading[i] == "Amount") {
|
||||||
|
th.width = '50';
|
||||||
|
} else {
|
||||||
|
th.width = '100';
|
||||||
|
}
|
||||||
th.appendChild(document.createTextNode(heading[i]));
|
th.appendChild(document.createTextNode(heading[i]));
|
||||||
tr.appendChild(th);
|
tr.appendChild(th);
|
||||||
}
|
}
|
||||||
|
@ -441,7 +446,7 @@ function load_queues() {
|
||||||
queues_pushed.push(glob_tabvar.row1[i][0].split(".")[0]);
|
queues_pushed.push(glob_tabvar.row1[i][0].split(".")[0]);
|
||||||
tmp_values.push(parseInt(glob_tabvar.row1[i][1]));
|
tmp_values.push(parseInt(glob_tabvar.row1[i][1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tmp_values.unshift(x);
|
tmp_values.unshift(x);
|
||||||
|
@ -494,5 +499,3 @@ function manage_undefined() {
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
manage_undefined();
|
manage_undefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue