mirror of
https://github.com/ail-project/ail-framework.git
synced 2024-11-29 17:27:17 +00:00
taxonomie + add tags + tags display
This commit is contained in:
parent
b9eb3ed9ba
commit
f5cae0d99c
13 changed files with 803 additions and 62 deletions
|
@ -18,6 +18,8 @@ sys.path.append('./modules/')
|
|||
import Paste
|
||||
from Date import Date
|
||||
|
||||
from pytaxonomies import Taxonomies
|
||||
|
||||
# Import config
|
||||
import Flask_config
|
||||
|
||||
|
@ -82,6 +84,7 @@ for module_name, txt in list(to_add_to_header_dico.items()):
|
|||
to_add_to_header = []
|
||||
for module_name, txt in to_add_to_header_dico.items():
|
||||
to_add_to_header.append(txt)
|
||||
print(to_add_to_header)
|
||||
|
||||
modified_header = modified_header.replace('<!--insert here-->', '\n'.join(to_add_to_header))
|
||||
|
||||
|
@ -113,6 +116,19 @@ def searchbox():
|
|||
return render_template("searchbox.html")
|
||||
|
||||
|
||||
# ========== INITIAL taxonomies ============
|
||||
r_serv_tags = redis.StrictRedis(
|
||||
host=cfg.get("ARDB_Tags", "host"),
|
||||
port=cfg.getint("ARDB_Tags", "port"),
|
||||
db=cfg.getint("ARDB_Tags", "db"),
|
||||
decode_responses=True)
|
||||
# add default ail taxonomies
|
||||
r_serv_tags.sadd('active_taxonomies', 'infoleak')
|
||||
# add default tags
|
||||
taxonomies = Taxonomies()
|
||||
for tag in taxonomies.get('infoleak').machinetags():
|
||||
r_serv_tags.sadd('active_tag_infoleak', tag)
|
||||
|
||||
# ============ MAIN ============
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -11,6 +11,8 @@ import json
|
|||
|
||||
import Paste
|
||||
|
||||
from pytaxonomies import Taxonomies
|
||||
|
||||
# ============ VARIABLES ============
|
||||
import Flask_config
|
||||
|
||||
|
@ -39,26 +41,62 @@ def get_all_tags():
|
|||
all_tags = r_serv_tags.smembers('list_tags')
|
||||
|
||||
list_tags = []
|
||||
id = 0
|
||||
for tag in all_tags:
|
||||
list_tags.append( tag )
|
||||
id += 1
|
||||
|
||||
return jsonify(list_tags)
|
||||
|
||||
@Tags.route("/Tags/get_all_tags_taxonomies")
|
||||
def get_all_tags_taxonomies():
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
active_taxonomie = r_serv_tags.smembers('active_taxonomies')
|
||||
|
||||
list_tags = []
|
||||
for taxonomie in active_taxonomie:
|
||||
#l_tags = taxonomies.get(taxonomie).machinetags()
|
||||
l_tags = r_serv_tags.smembers('active_tag_' + taxonomie)
|
||||
for tag in l_tags:
|
||||
list_tags.append( tag )
|
||||
|
||||
return jsonify(list_tags)
|
||||
|
||||
@Tags.route("/Tags/get_tags_taxonomie")
|
||||
def get_tags_taxonomie():
|
||||
|
||||
taxonomie = request.args.get('taxonomie')
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
active_taxonomie = r_serv_tags.smembers('active_taxonomies')
|
||||
|
||||
#verify input
|
||||
if taxonomie in list_taxonomies:
|
||||
if taxonomie in active_taxonomie:
|
||||
|
||||
list_tags = []
|
||||
#l_tags = taxonomies.get(taxonomie).machinetags()
|
||||
l_tags = r_serv_tags.smembers('active_tag_' + taxonomie)
|
||||
for tag in l_tags:
|
||||
list_tags.append( tag )
|
||||
|
||||
return jsonify(list_tags)
|
||||
|
||||
else:
|
||||
return 'this taxinomie is disable'
|
||||
else:
|
||||
return 'INCORRECT INPUT'
|
||||
|
||||
|
||||
@Tags.route("/Tags/get_tagged_paste")
|
||||
def get_tagged_paste():
|
||||
|
||||
tags = request.args.get('ltags')[1:-1]
|
||||
tags = tags.replace('\\','')
|
||||
tags = request.args.get('ltags')
|
||||
|
||||
list_tags = tags.split(',')
|
||||
tmp_list_tags = []
|
||||
|
||||
# remove " char
|
||||
for tag in list_tags:
|
||||
tmp_list_tags.append(tag[1:-1])
|
||||
list_tags = tmp_list_tags
|
||||
|
||||
# TODO verify input
|
||||
|
||||
|
@ -106,8 +144,11 @@ def get_tagged_paste():
|
|||
paste_date.append(curr_date)
|
||||
paste_linenum.append(paste.get_lines_info()[0])
|
||||
p_tags = r_serv_metadata.smembers('tag:'+path)
|
||||
complete_tags = []
|
||||
l_tags = []
|
||||
for tag in p_tags:
|
||||
complete_tag = tag
|
||||
|
||||
tag = tag.split('=')
|
||||
if len(tag) > 1:
|
||||
if tag[1] != '':
|
||||
|
@ -119,7 +160,7 @@ def get_tagged_paste():
|
|||
else:
|
||||
tag = tag[0]
|
||||
|
||||
l_tags.append(tag)
|
||||
l_tags.append( (tag,complete_tag) )
|
||||
|
||||
paste_tags.append(l_tags)
|
||||
|
||||
|
@ -131,6 +172,7 @@ def get_tagged_paste():
|
|||
return render_template("tagged.html",
|
||||
year=currentSelectYear,
|
||||
all_path=all_path,
|
||||
tags=tags,
|
||||
paste_tags=paste_tags,
|
||||
bootstrap_label=bootstrap_label,
|
||||
content=all_content,
|
||||
|
@ -139,12 +181,6 @@ def get_tagged_paste():
|
|||
char_to_display=max_preview_modal,
|
||||
finished=finished)
|
||||
|
||||
return 'OK'
|
||||
|
||||
@Tags.route("/Tags/res")
|
||||
def get_tagged_paste_res():
|
||||
|
||||
return render_template("res.html")
|
||||
|
||||
@Tags.route("/Tags/remove_tag")
|
||||
def remove_tag():
|
||||
|
@ -183,6 +219,255 @@ def confirm_tag():
|
|||
|
||||
return 'incompatible tag'
|
||||
|
||||
@Tags.route("/Tags/addTags")
|
||||
def addTags():
|
||||
|
||||
tags = request.args.get('tags')
|
||||
path = request.args.get('path')
|
||||
|
||||
list_tag = tags.split(',')
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||
|
||||
if not path:
|
||||
return 'INCORRECT INPUT'
|
||||
|
||||
for tag in list_tag:
|
||||
# verify input
|
||||
tax = tag.split(':')[0]
|
||||
if tax in active_taxonomies:
|
||||
if tag in r_serv_tags.smembers('active_tag_' + tax):
|
||||
|
||||
#add tag
|
||||
r_serv_metadata.sadd('tag:'+path, tag)
|
||||
r_serv_tags.sadd(tag, path)
|
||||
#add new tag in list of all used tags
|
||||
r_serv_tags.sadd('list_tags', tag)
|
||||
|
||||
else:
|
||||
return 'INCORRECT INPUT'
|
||||
else:
|
||||
return 'INCORRECT INPUT'
|
||||
|
||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||
|
||||
@Tags.route("/Tags/thumbs_up_paste")
|
||||
def thumbs_up_paste():
|
||||
|
||||
#TODO verify input
|
||||
path = request.args.get('paste')
|
||||
|
||||
'''positive_t = 'infoleak:confirmed="true-positive"'
|
||||
positive_f = 'infoleak:confirmed="false-positive"'
|
||||
|
||||
negative_t = 'infoleak:confirmed="true-negative"'
|
||||
|
||||
list_tags = r_serv_metadata.smembers('tag:'+path)
|
||||
|
||||
if(list_tags > 0):
|
||||
|
||||
if positive_f in list_tags:
|
||||
r_serv_metadata.srem('tag:'+path, positive_f)
|
||||
r_serv_metadata.sadd('tag:'+path, positive_t)
|
||||
|
||||
r_serv_tags.srem(positive_f, path)
|
||||
r_serv_tags.sadd(positive_t, path)
|
||||
#add new tag in list of all used tags
|
||||
r_serv_tags.sadd('list_tags', positive_t)
|
||||
|
||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||
|
||||
|
||||
|
||||
if positive_t in list_tags:
|
||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||
else:
|
||||
r_serv_metadata.sadd('tag:'+path, negative_t)
|
||||
r_serv_tags.sadd(negative_t, path)
|
||||
#add new tag in list of all used tags
|
||||
r_serv_tags.sadd('list_tags', negative_t)'''
|
||||
|
||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||
|
||||
@Tags.route("/Tags/thumbs_down_paste")
|
||||
def thumbs_down_paste():
|
||||
|
||||
#TODO verify input
|
||||
path = request.args.get('paste')
|
||||
|
||||
'''list_tags = r_serv_metadata.smembers('tag:'+path)'''
|
||||
|
||||
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
|
||||
|
||||
|
||||
@Tags.route("/Tags/taxonomies")
|
||||
def taxonomies():
|
||||
|
||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
id = []
|
||||
name = []
|
||||
description = []
|
||||
version = []
|
||||
enabled = []
|
||||
n_tags = []
|
||||
|
||||
for taxonomie in list_taxonomies:
|
||||
id.append(taxonomie)
|
||||
name.append(taxonomies.get(taxonomie).name)
|
||||
description.append(taxonomies.get(taxonomie).description)
|
||||
version.append(taxonomies.get(taxonomie).version)
|
||||
if taxonomie in active_taxonomies:
|
||||
enabled.append(True)
|
||||
else:
|
||||
enabled.append(False)
|
||||
|
||||
n = str(r_serv_tags.scard('active_tag_' + taxonomie))
|
||||
n_tags.append(n + '/' + str(len(taxonomies.get(taxonomie).machinetags())) )
|
||||
|
||||
return render_template("taxonomies.html",
|
||||
id=id,
|
||||
all_name = name,
|
||||
description = description,
|
||||
version = version,
|
||||
enabled = enabled,
|
||||
n_tags=n_tags)
|
||||
#return 'O'
|
||||
|
||||
@Tags.route("/Tags/edit_taxonomie")
|
||||
def edit_taxonomie():
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
id = request.args.get('taxonomie')
|
||||
|
||||
#verify input
|
||||
if id in list(taxonomies.keys()):
|
||||
active_tag = r_serv_tags.smembers('active_tag_' + id)
|
||||
list_tag = taxonomies.get(id).machinetags()
|
||||
list_tag_desc = taxonomies.get(id).machinetags_expanded()
|
||||
|
||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||
if id in active_taxonomies:
|
||||
active = True
|
||||
else:
|
||||
active = False
|
||||
|
||||
name = taxonomies.get(id).name
|
||||
description = taxonomies.get(id).description
|
||||
version = taxonomies.get(id).version
|
||||
|
||||
status = []
|
||||
for tag in list_tag:
|
||||
if tag in active_tag:
|
||||
status.append(True)
|
||||
else:
|
||||
status.append(False)
|
||||
|
||||
return render_template("edit_taxonomie.html",
|
||||
id=id,
|
||||
name=name,
|
||||
description = description,
|
||||
version = version,
|
||||
active=active,
|
||||
all_tags = list_tag,
|
||||
list_tag_desc=list_tag_desc,
|
||||
status = status)
|
||||
|
||||
else:
|
||||
return 'INVALID TAXONOMIE'
|
||||
|
||||
@Tags.route("/Tags/test")
|
||||
def test():
|
||||
return 'test',
|
||||
|
||||
@Tags.route("/Tags/disable_taxonomie")
|
||||
def disable_taxonomie():
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
id = request.args.get('taxonomie')
|
||||
|
||||
if id in list_taxonomies:
|
||||
r_serv_tags.srem('active_taxonomies', id)
|
||||
for tag in taxonomies.get(id).machinetags():
|
||||
r_serv_tags.srem('active_tag_' + id, tag)
|
||||
|
||||
return redirect(url_for('Tags.taxonomies'))
|
||||
|
||||
else:
|
||||
return "INCORRECT INPUT"
|
||||
|
||||
|
||||
|
||||
@Tags.route("/Tags/active_taxonomie")
|
||||
def active_taxonomie():
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
id = request.args.get('taxonomie')
|
||||
|
||||
# verify input
|
||||
if id in list_taxonomies:
|
||||
r_serv_tags.sadd('active_taxonomies', id)
|
||||
for tag in taxonomies.get(id).machinetags():
|
||||
r_serv_tags.sadd('active_tag_' + id, tag)
|
||||
|
||||
return redirect(url_for('Tags.taxonomies'))
|
||||
|
||||
else:
|
||||
return "INCORRECT INPUT"
|
||||
|
||||
@Tags.route("/Tags/edit_taxonomie_tag")
|
||||
def edit_taxonomie_tag():
|
||||
|
||||
taxonomies = Taxonomies()
|
||||
list_taxonomies = list(taxonomies.keys())
|
||||
|
||||
arg1 = request.args.getlist('tag_enabled')
|
||||
arg2 = request.args.getlist('tag_disabled')
|
||||
|
||||
id = request.args.get('taxonomie')
|
||||
|
||||
#verify input
|
||||
if id in list_taxonomies:
|
||||
list_tag = taxonomies.get(id).machinetags()
|
||||
|
||||
#check tags validity
|
||||
if ( all(elem in list_tag for elem in arg1) or (len(arg1) == 0) ) and ( all(elem in list_tag for elem in arg2) or (len(arg2) == 0) ):
|
||||
|
||||
active_tag = r_serv_tags.smembers('active_tag_' + id)
|
||||
|
||||
diff = list(set(arg1) ^ set(list_tag))
|
||||
|
||||
#remove tags
|
||||
for tag in diff:
|
||||
r_serv_tags.srem('active_tag_' + id, tag)
|
||||
|
||||
#all tags unchecked
|
||||
if len(arg1) == 0 and len(arg2) == 0:
|
||||
r_serv_tags.srem('active_taxonomies', id)
|
||||
|
||||
#add new tags
|
||||
for tag in arg2:
|
||||
r_serv_tags.sadd('active_taxonomies', id)
|
||||
r_serv_tags.sadd('active_tag_' + id, tag)
|
||||
|
||||
return redirect(url_for('Tags.taxonomies'))
|
||||
else:
|
||||
return "INCORRECT INPUT"
|
||||
|
||||
else:
|
||||
return "INCORRECT INPUT"
|
||||
|
||||
|
||||
|
||||
# ========= REGISTRATION =========
|
||||
app.register_blueprint(Tags)
|
||||
|
|
|
@ -34,28 +34,32 @@
|
|||
<!-- /.col-lg-12 -->
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
<form action="/Tags/get_tagged_paste">
|
||||
<div class="form-group input-group" >
|
||||
<input id="ltags" style="width:100%;" type="text" name="ltags">
|
||||
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
|
||||
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-search btn-primary btn-tags">
|
||||
<button class="btn btn-search btn-primary btn-tags" onclick="searchTags()">
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
<span class="label-icon">Search</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<button type="button" class="btn btn-primary" style="margin-bottom: 30px;" data-target="#filter-panel">
|
||||
<span class="glyphicon glyphicon-cog "></span> Advanced Search
|
||||
</button>
|
||||
|
||||
<div>
|
||||
<a href="{{ url_for('Tags.taxonomies') }}"> [Taxonomies list] </a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- /#page-wrapper -->
|
||||
|
||||
<script>
|
||||
var ltags
|
||||
$(document).ready(function(){
|
||||
|
||||
$.getJSON('/Tags/get_all_tags',
|
||||
|
@ -63,7 +67,7 @@
|
|||
//console.log(data)
|
||||
//for(var i=0;i<data.length;i++) jsonData.push({id:i,name:data[i]});
|
||||
|
||||
var ltags = $('#ltags').tagSuggest({
|
||||
ltags = $('#ltags').tagSuggest({
|
||||
data: data,
|
||||
sortOrder: 'name',
|
||||
maxDropHeight: 200,
|
||||
|
@ -72,6 +76,13 @@
|
|||
});
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
function searchTags() {
|
||||
var data = ltags.getValue();
|
||||
console.log(data);
|
||||
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
|
||||
}
|
||||
</script>
|
||||
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
|
||||
</body>
|
||||
|
||||
|
|
171
var/www/modules/Tags/templates/edit_taxonomie.html
Normal file
171
var/www/modules/Tags/templates/edit_taxonomie.html
Normal file
|
@ -0,0 +1,171 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Analysis Information Leak framework Dashboard</title>
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='font-awesome/css/font-awesome.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='css/sb-admin-2.css') }}" rel="stylesheet">
|
||||
<link href="/static//css/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
|
||||
<!-- JS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='js/dygraph-combined.js') }}"></script>
|
||||
<script language="javascript" src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||
<script src="/static//js/bootstrap.min.js"></script>
|
||||
<script src="/static//js/jquery.dataTables.min.js"></script>
|
||||
<script src="/static//js/dataTables.bootstrap.js"></script>
|
||||
|
||||
<style>
|
||||
.tooltip-inner {
|
||||
text-align: left;
|
||||
height: 200%;
|
||||
width: 200%;
|
||||
max-width: 500px;
|
||||
max-height: 500px;
|
||||
font-size: 13px;
|
||||
}
|
||||
xmp {
|
||||
white-space:pre-wrap;
|
||||
word-wrap:break-word;
|
||||
}
|
||||
.test thead{
|
||||
background: #d91f2d;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{% include 'navbar.html' %}
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<a href="/Tags/taxonomies" class="btn btn-light pull-left">
|
||||
<i class="fa fa-arrow-left fa"></i> List Taxonomies
|
||||
</a>
|
||||
</div>
|
||||
<!-- /.col-lg-12 -->
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">{{ name }}
|
||||
{% if active %}
|
||||
<span class="label label-success pull-right"> Enabled</span>
|
||||
{% endif %}
|
||||
{% if not active %}
|
||||
<span class="label label-danger pull-right"> Disabled</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{ description }}
|
||||
<br><br>
|
||||
Version: {{ version }}
|
||||
{% if active %}
|
||||
<a href="{{ url_for('Tags.disable_taxonomie') }}?taxonomie={{ id }}" class="btn btn-danger pull-right">
|
||||
<i class="fa fa-times fa"></i> Disable Taxonomie
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if not active %}
|
||||
<a href="{{ url_for('Tags.active_taxonomie') }}?taxonomie={{ id }}" class="btn btn-success pull-right">
|
||||
<i class="fa fa-check-square-o fa"></i> Enable Taxonomie
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form action="/Tags/edit_taxonomie_tag" id="checkboxForm">
|
||||
<input type="hidden" value="{{ id }}" name="taxonomie" />
|
||||
|
||||
|
||||
<table class="test table table-striped table-bordered table-hover table-responsive " id="myTable_">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th style="max-width: 800px;">Tag</th>
|
||||
<th style="max-width: 800px;">Description</th>
|
||||
<th>Enabled</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{% for tag in all_tags %}
|
||||
<tr>
|
||||
<td>
|
||||
{% if status[loop.index0] %}
|
||||
<div style="display:none;">Enabled</div>
|
||||
<input type="checkbox" value="{{ tag }}" id="{{ tag }}" name="tag_enabled" checked>
|
||||
{% endif %}
|
||||
{% if not status[loop.index0] %}
|
||||
<div style="display:none;">Disabled</div>
|
||||
<input type="checkbox" value="{{ tag }}" id="{{ tag }}" name="tag_disabled" >
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ tag }}</td>
|
||||
<td>{{ list_tag_desc[loop.index0] }}</td>
|
||||
<td style="text-align: center;">
|
||||
{% if status[loop.index0] %}
|
||||
<div style="display:none;">Enabled</div>
|
||||
<div style="color:Green; display:inline-block"><i class="fa fa-check-circle fa-2x"></i></div>
|
||||
{% endif %}
|
||||
{% if not status[loop.index0] %}
|
||||
<div style="display:none;">Disabled</div>
|
||||
<div style="color:Red; display:inline-block"><i class="fa fa-times-circle fa-2x"></i></div>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-primary btn-lg">
|
||||
<i class="fa fa-check-square-o fa"></i>
|
||||
Update Tags
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<!-- /#page-wrapper -->
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
/*$('[data-toggle="tooltip"]').tooltip();
|
||||
$("[data-toggle='modal']").off('click.openmodal').on("click.openmodal", function (event) {
|
||||
//get_html_and_update_modal(event);
|
||||
get_html_and_update_modal(event, $(this));
|
||||
});
|
||||
|
||||
search_table = $('#myTable_').DataTable({ "order": [[ 2, "desc" ]] });*/
|
||||
|
||||
$('#myTable_').DataTable(
|
||||
{
|
||||
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
|
||||
"iDisplayLength": 10,
|
||||
//"order": [[ 1, "asc" ]]
|
||||
}
|
||||
);
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function submitActiveTags(){
|
||||
document.getElementById("checkboxForm").submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
</html>
|
|
@ -70,19 +70,17 @@
|
|||
<!-- /.col-lg-12 -->
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
<form action="/Tags/get_tagged_paste">
|
||||
<div class="form-group input-group" >
|
||||
<input id="ltags" style="width:100%;" type="text" name="ltags">
|
||||
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
|
||||
|
||||
<div class="input-group-btn">
|
||||
<button type="submit" class="btn btn-search btn-primary btn-tags">
|
||||
<button class="btn btn-search btn-primary btn-tags" onclick="searchTags()">
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
<span class="label-icon">Search</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<button type="button" class="btn btn-primary" style="margin-bottom: 30px;" data-target="#filter-panel">
|
||||
<span class="glyphicon glyphicon-cog "></span> Advanced Search
|
||||
|
@ -106,7 +104,9 @@
|
|||
<td><a target="_blank" href="{{ url_for('showsavedpastes.showsavedpaste') }}?paste={{path}}">{{ path }}</a>
|
||||
<div>
|
||||
{% for tag in paste_tags[loop.index0] %}
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag }}</span>
|
||||
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag[0] }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</td>
|
||||
|
@ -129,24 +129,27 @@
|
|||
<img id="loading_gif_browse" src="/static//image/loading.gif" heigt="20" width="20" style="margin: 2px;"></div>
|
||||
</br>
|
||||
|
||||
<a href="{{ url_for('Tags.taxonomies') }}"> [Taxonomies list] </a>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
<script>
|
||||
var search_table;
|
||||
var ltags;
|
||||
var last_clicked_paste;
|
||||
var can_change_modal_content = true;
|
||||
$("#myTable_").attr('data-numElem', "{{ all_path|length }}");
|
||||
|
||||
$(document).ready(function(){
|
||||
search_table = $('#myTable_').DataTable({ "order": [[ 2, "desc" ]] });
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
$("[data-toggle='modal']").off('click.openmodal').on("click.openmodal", function (event) {
|
||||
//get_html_and_update_modal(event);
|
||||
get_html_and_update_modal(event, $(this));
|
||||
});
|
||||
|
||||
search_table = $('#myTable_').DataTable({ "order": [[ 2, "desc" ]] });
|
||||
|
||||
$("#load_more_json_button1").hide();
|
||||
$("#load_more_json_button2").hide();
|
||||
|
@ -162,25 +165,31 @@ $(document).ready(function(){
|
|||
|
||||
$.getJSON('/Tags/get_all_tags',
|
||||
function(data) {
|
||||
//console.log(data)
|
||||
//for(var i=0;i<data.length;i++) jsonData.push({id:i,name:data[i]});
|
||||
//var slct_tags = String({{ original_tag }})
|
||||
|
||||
var ltags = $('#ltags').tagSuggest({
|
||||
ltags = $('#ltags').tagSuggest({
|
||||
data: data,
|
||||
value: '["infoleak:automatic-detection=\"bitcoin-address\"","infoleak:automatic-detection=\"aws-key\""]',
|
||||
//value: ["infoleak:automatic-detection=\"bitcoin-address\"","infoleak:automatic-detection=\"aws-key\""],
|
||||
sortOrder: 'name',
|
||||
maxDropHeight: 200,
|
||||
name: 'ltags'
|
||||
});
|
||||
});
|
||||
name: 'ltags',
|
||||
});
|
||||
|
||||
//ltags.setValue(["{{ tags }}"]);
|
||||
ltags.setValue(["infoleak:automatic-detection='bitcoin-address'","infoleak:automatic-detection='aws-key'"]);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function searchTags() {
|
||||
var data = ltags.getValue();
|
||||
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Dynamically update the modal -->
|
||||
<script type="text/javascript">
|
||||
<script>
|
||||
// static data
|
||||
var alert_message = '<div class="alert alert-info alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><strong>No more data.</strong> Full paste displayed.</div>';
|
||||
var complete_paste = null;
|
||||
|
|
119
var/www/modules/Tags/templates/taxonomies.html
Normal file
119
var/www/modules/Tags/templates/taxonomies.html
Normal file
|
@ -0,0 +1,119 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Analysis Information Leak framework Dashboard</title>
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link href="{{ url_for('static', filename='css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='font-awesome/css/font-awesome.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='css/sb-admin-2.css') }}" rel="stylesheet">
|
||||
<link href="/static//css/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
|
||||
<!-- JS -->
|
||||
<script type="text/javascript" src="{{ url_for('static', filename='js/dygraph-combined.js') }}"></script>
|
||||
<script language="javascript" src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||
<script src="/static//js/bootstrap.min.js"></script>
|
||||
<script src="/static//js/jquery.dataTables.min.js"></script>
|
||||
<script src="/static//js/dataTables.bootstrap.js"></script>
|
||||
|
||||
<style>
|
||||
.tooltip-inner {
|
||||
text-align: left;
|
||||
height: 200%;
|
||||
width: 200%;
|
||||
max-width: 500px;
|
||||
max-height: 500px;
|
||||
font-size: 13px;
|
||||
}
|
||||
xmp {
|
||||
white-space:pre-wrap;
|
||||
word-wrap:break-word;
|
||||
}
|
||||
.test thead{
|
||||
background: #d91f2d;
|
||||
color: #fff;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{% include 'navbar.html' %}
|
||||
|
||||
<div id="page-wrapper">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header">Taxonomies</h1>
|
||||
</div>
|
||||
<!-- /.col-lg-12 -->
|
||||
</div>
|
||||
<!-- /.row -->
|
||||
|
||||
<table class="test table table-striped table-bordered table-hover table-responsive " id="myTable_">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th style="max-width: 800px;">Description</th>
|
||||
<th>Version</th>
|
||||
<th>Enabled</th>
|
||||
<th>Active Tags</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
{% for name in all_name %}
|
||||
<tr>
|
||||
<td>{{ name }}</td>
|
||||
<td>{{ description[loop.index0] }}</td>
|
||||
<td>{{ version[loop.index0] }}</td>
|
||||
<td style="text-align: center;">
|
||||
{% if enabled[loop.index0] %}
|
||||
<div style="display:none;">Enabled</div>
|
||||
<div style="color:Green; display:inline-block"><i class="fa fa-check-circle fa-2x"></i></div>
|
||||
{% endif %}
|
||||
{% if not enabled[loop.index0] %}
|
||||
<div style="display:none;">Disabled</div>
|
||||
<div style="color:Red; display:inline-block"><i class="fa fa-times-circle fa-2x"></i></div>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td style="text-align: center;">
|
||||
<div style="display:none;">{{ n_tags[loop.index0] }}</div>
|
||||
<a class="btn btn-primary" href="{{ url_for('Tags.edit_taxonomie') }}?taxonomie={{ id[loop.index0] }}">Active Tags <span class="badge">{{ n_tags[loop.index0] }}</span></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<!-- /#page-wrapper -->
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
/*$('[data-toggle="tooltip"]').tooltip();
|
||||
$("[data-toggle='modal']").off('click.openmodal').on("click.openmodal", function (event) {
|
||||
//get_html_and_update_modal(event);
|
||||
get_html_and_update_modal(event, $(this));
|
||||
});
|
||||
|
||||
search_table = $('#myTable_').DataTable({ "order": [[ 2, "desc" ]] });*/
|
||||
|
||||
$('#myTable_').DataTable(
|
||||
{
|
||||
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
|
||||
"iDisplayLength": 15,
|
||||
//"order": [[ 1, "asc" ]]
|
||||
}
|
||||
);
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
</html>
|
|
@ -76,6 +76,7 @@ def event_stream_getImportantPasteByModule(module_name, year):
|
|||
p_tags = r_serv_metadata.smembers('tag:'+path)
|
||||
l_tags = []
|
||||
for tag in p_tags:
|
||||
complete_tag = tag.replace('"', '"')
|
||||
tag = tag.split('=')
|
||||
if len(tag) > 1:
|
||||
if tag[1] != '':
|
||||
|
@ -87,7 +88,7 @@ def event_stream_getImportantPasteByModule(module_name, year):
|
|||
else:
|
||||
tag = tag[0]
|
||||
|
||||
l_tags.append(tag)
|
||||
l_tags.append( (tag, complete_tag) )
|
||||
|
||||
data = {}
|
||||
data["module"] = module_name
|
||||
|
@ -149,6 +150,7 @@ def importantPasteByModule():
|
|||
p_tags = r_serv_metadata.smembers('tag:'+path)
|
||||
l_tags = []
|
||||
for tag in p_tags:
|
||||
complete_tag = tag
|
||||
tag = tag.split('=')
|
||||
if len(tag) > 1:
|
||||
if tag[1] != '':
|
||||
|
@ -160,7 +162,7 @@ def importantPasteByModule():
|
|||
else:
|
||||
tag = tag[0]
|
||||
|
||||
l_tags.append(tag)
|
||||
l_tags.append( (tag, complete_tag) )
|
||||
|
||||
paste_tags.append(l_tags)
|
||||
|
||||
|
|
|
@ -15,7 +15,9 @@
|
|||
<td><a target="_blank" href="{{ url_for('showsavedpastes.showsavedpaste') }}?paste={{path}}">{{ path }}</a>
|
||||
<div>
|
||||
{% for tag in paste_tags[loop.index0] %}
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag }}</span>
|
||||
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag[0] }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</td>
|
||||
|
@ -97,7 +99,9 @@ function add_entries_X(to_add) {
|
|||
elem_added++;
|
||||
var tag = ""
|
||||
for(j=0; j<feed.l_tags.length; j++) {
|
||||
tag = tag + "<span class=\"label label-" + feed.bootstrap_label[j % 6] + " pull-left\">" + feed.l_tags[j] + "</span>"
|
||||
console.log(feed.l_tags[j][1])
|
||||
tag = tag + "<a href=\"{{ url_for('Tags.get_tagged_paste') }}?ltags=" + feed.l_tags[j][1] + "\">"
|
||||
+ "<span class=\"label label-" + feed.bootstrap_label[j % 6] + " pull-left\">" + feed.l_tags[j][0] + "</span>" + "</a>";
|
||||
}
|
||||
search_table.row.add( [
|
||||
feed.index,
|
||||
|
|
|
@ -121,6 +121,7 @@ def search():
|
|||
# Search full line
|
||||
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)
|
||||
|
||||
print(selected_index)
|
||||
ix = index.open_dir(selected_index)
|
||||
with ix.searcher() as searcher:
|
||||
query = QueryParser("content", ix.schema).parse(" ".join(q))
|
||||
|
@ -139,6 +140,7 @@ def search():
|
|||
p_tags = r_serv_metadata.smembers('tag:'+path)
|
||||
l_tags = []
|
||||
for tag in p_tags:
|
||||
complete_tag = tag
|
||||
tag = tag.split('=')
|
||||
if len(tag) > 1:
|
||||
if tag[1] != '':
|
||||
|
@ -150,7 +152,7 @@ def search():
|
|||
else:
|
||||
tag = tag[0]
|
||||
|
||||
l_tags.append(tag)
|
||||
l_tags.append( (tag, complete_tag) )
|
||||
|
||||
paste_tags.append(l_tags)
|
||||
results = searcher.search(query)
|
||||
|
|
|
@ -100,7 +100,9 @@
|
|||
<td><a target="_blank" href="{{ url_for('showsavedpastes.showsavedpaste') }}?paste={{path}}">{{ path }}</a>
|
||||
<div>
|
||||
{% for tag in paste_tags[loop.index0] %}
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag }}</span>
|
||||
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}">
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }} pull-left">{{ tag[0] }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</td>
|
||||
|
|
|
@ -19,6 +19,7 @@ app = Flask_config.app
|
|||
cfg = Flask_config.cfg
|
||||
r_serv_pasteName = Flask_config.r_serv_pasteName
|
||||
r_serv_metadata = Flask_config.r_serv_metadata
|
||||
r_serv_tags = Flask_config.r_serv_tags
|
||||
max_preview_char = Flask_config.max_preview_char
|
||||
max_preview_modal = Flask_config.max_preview_modal
|
||||
DiffMaxLineLength = Flask_config.DiffMaxLineLength
|
||||
|
@ -96,6 +97,7 @@ def showpaste(content_range):
|
|||
if content_range != 0:
|
||||
p_content = p_content[0:content_range]
|
||||
|
||||
#tag color
|
||||
bootstrap_label = []
|
||||
bootstrap_label.append('primary')
|
||||
bootstrap_label.append('success')
|
||||
|
@ -104,9 +106,20 @@ def showpaste(content_range):
|
|||
bootstrap_label.append('info')
|
||||
bootstrap_label.append('dark')
|
||||
|
||||
list_tags = r_serv_metadata.smembers('tag:'+requested_path)
|
||||
#active taxonomies
|
||||
active_taxonomies = r_serv_tags.smembers('active_taxonomies')
|
||||
|
||||
return render_template("show_saved_paste.html", date=p_date, bootstrap_label=bootstrap_label, list_tags=list_tags, source=p_source, encoding=p_encoding, language=p_language, size=p_size, mime=p_mime, lineinfo=p_lineinfo, content=p_content, initsize=len(p_content), duplicate_list = p_duplicate_list, simil_list = p_simil_list, hashtype_list = p_hashtype_list, date_list=p_date_list)
|
||||
l_tags = r_serv_metadata.smembers('tag:'+requested_path)
|
||||
|
||||
list_tags = []
|
||||
|
||||
for tag in l_tags:
|
||||
if(tag[9:28] == 'automatic-detection'):
|
||||
list_tags.append( (tag, True) )
|
||||
else:
|
||||
list_tags.append( (tag, False) )
|
||||
|
||||
return render_template("show_saved_paste.html", date=p_date, bootstrap_label=bootstrap_label, active_taxonomies=active_taxonomies, list_tags=list_tags, source=p_source, encoding=p_encoding, language=p_language, size=p_size, mime=p_mime, lineinfo=p_lineinfo, content=p_content, initsize=len(p_content), duplicate_list = p_duplicate_list, simil_list = p_simil_list, hashtype_list = p_hashtype_list, date_list=p_date_list)
|
||||
|
||||
# ============ ROUTES ============
|
||||
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
<link href="{{ url_for('static', filename='font-awesome/css/font-awesome.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='css/sb-admin-2.css') }}" rel="stylesheet">
|
||||
<link href="{{ url_for('static', filename='css/dataTables.bootstrap.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ url_for('static', filename='css/tags.css') }}" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script language="javascript" src="{{ url_for('static', filename='js/jquery.js')}}"></script>
|
||||
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/jquery.dataTables.min.js') }}"></script>
|
||||
|
@ -16,6 +18,17 @@
|
|||
<script src="{{ url_for('static', filename='js/jquery.flot.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/jquery.flot.time.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/jquery.flot.stack.js') }}"></script>
|
||||
<script src="{{ url_for('static', filename='js/tags.js') }}"></script>
|
||||
|
||||
<style>
|
||||
.scrollable-menu {
|
||||
height: auto;
|
||||
max-height: 200px;
|
||||
overflow-x: hidden;
|
||||
width:100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="panel panel-default">
|
||||
|
@ -23,8 +36,53 @@
|
|||
<h1 class="page-header" >Paste: {{ request.args.get('paste') }}</h1>
|
||||
<h2 class="page-header" >
|
||||
<div>
|
||||
|
||||
<div id="mymodal" class="modal fade" role="dialog">
|
||||
<div class="modal-dialog modal-lg">
|
||||
|
||||
<!-- Modal content-->
|
||||
<div id="mymodalcontent" class="modal-content">
|
||||
<div class="modal-header" style="border-bottom: 4px solid #cccccc; background-color: #cccccc; color: #ffffff;">
|
||||
<p class="heading">Edit this tag</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="form-group input-group" >
|
||||
<input id="ltags" style="width:850%;" type="text" name="ltags">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="btn-group btn-block">
|
||||
<button type="button" class="btn btn-primary dropdown-toggle btn-block" data-toggle="dropdown">Taxonomie Selection
|
||||
<i class="fa fa-chevron-down"></i>
|
||||
</button>
|
||||
<ul class="dropdown-menu scrollable-menu" role="menu">
|
||||
<li><a href="#" id="all-tags">All Tags <i class="fa fa-tags"></i></a></li>
|
||||
<li role="separator" class="divider"></li>
|
||||
{% for taxo in active_taxonomies %}
|
||||
<li><a href="#" id="{{ taxo }}-id{{ loop.index0 }}">{{ taxo }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-primary btn-tags" onclick="addTags()">
|
||||
<span class="glyphicon glyphicon-plus"></span>
|
||||
<span class="label-icon">Add Tags</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal" >Close</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{% for tag in list_tags %}
|
||||
<span class="btn btn-{{ bootstrap_label[loop.index0 % 6] }} btn-lg pull-left" data-toggle="modal" data-target="#myModal_{{ loop.index0 }}">{{ tag }}</span>
|
||||
<span class="btn btn-{{ bootstrap_label[loop.index0 % 6] }} btn-lg pull-left" data-toggle="modal" data-target="#myModal_{{ loop.index0 }}">{{ tag[0] }}</span>
|
||||
|
||||
<!-- Modal edit this tag -->
|
||||
<div class="modal fade" id="myModal_{{ loop.index0 }}" role="dialog">
|
||||
|
@ -36,13 +94,15 @@
|
|||
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }}" >{{ tag }}</span>
|
||||
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }}" >{{ tag[0] }}</span>
|
||||
</div>
|
||||
<div class="modal-footer center">
|
||||
<a href="{{ url_for('Tags.confirm_tag') }}?paste={{ request.args.get('paste') }}&tag={{ tag }}" class="btn btn-primary">
|
||||
<span class="glyphicon glyphicon-ok "></span> Confirm this Tag
|
||||
</a>
|
||||
<a href="{{ url_for('Tags.remove_tag') }}?paste={{ request.args.get('paste') }}&tag={{ tag }}" class="btn btn-danger">
|
||||
{% if tag[1] %}
|
||||
<a href="{{ url_for('Tags.confirm_tag') }}?paste={{ request.args.get('paste') }}&tag={{ tag[0] }}" class="btn btn-primary">
|
||||
<span class="glyphicon glyphicon-ok "></span> Confirm this Tag
|
||||
</a>
|
||||
{% endif %}
|
||||
<a href="{{ url_for('Tags.remove_tag') }}?paste={{ request.args.get('paste') }}&tag={{ tag[0] }}" class="btn btn-danger">
|
||||
<span class="glyphicon glyphicon-trash "></span> Delete this Tag
|
||||
</a>
|
||||
</div>
|
||||
|
@ -52,9 +112,9 @@
|
|||
</div>
|
||||
|
||||
{% endfor %}
|
||||
<button type="button" class="btn btn-light btn-lg" data-toggle="tooltip" title="Add Tag">
|
||||
<button type="button" class="btn btn-light btn-lg" data-toggle="modal" data-target="#mymodal" data-url="{{ url_for('Tags.taxonomies') }}">
|
||||
<span class="glyphicon glyphicon-plus "></span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
|
||||
|
@ -85,12 +145,12 @@
|
|||
</tbody>
|
||||
</table>
|
||||
|
||||
<button type="button" class="btn btn-success btn-lg" data-toggle="tooltip" title="Good Detection">
|
||||
<a href="{{ url_for('Tags.thumbs_up_paste') }}?paste={{ request.args.get('paste') }}" class="btn btn-success btn-lg" data-toggle="tooltip" title="Good Detection">
|
||||
<span class="glyphicon glyphicon-thumbs-up "></span>
|
||||
</span>
|
||||
<button type="button" class="btn btn-danger btn-lg" data-toggle="tooltip" title="Bad Detection">
|
||||
</a>
|
||||
<a href="{{ url_for('Tags.thumbs_down_paste') }}?paste={{ request.args.get('paste') }}" class="btn btn-danger btn-lg" data-toggle="tooltip" title="Bad Detection">
|
||||
<span class="glyphicon glyphicon-thumbs-down "></span>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel-body" id="panel-body">
|
||||
{% if duplicate_list|length == 0 %}
|
||||
|
@ -128,7 +188,54 @@
|
|||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
<script>
|
||||
$('#tableDup').DataTable();
|
||||
var ltags
|
||||
$(document).ready(function(){
|
||||
|
||||
$.getJSON('/Tags/get_all_tags_taxonomies',
|
||||
function(data) {
|
||||
|
||||
ltags = $('#ltags').tagSuggest({
|
||||
data: data,
|
||||
//sortOrder: 'name',
|
||||
maxDropHeight: 200,
|
||||
name: 'ltags'
|
||||
});
|
||||
});
|
||||
|
||||
$('#tableDup').DataTable();
|
||||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
jQuery("#all-tags").click(function(e){
|
||||
//change input tags list /Tags/get_tags_taxonomie?taxonomie=infoleak
|
||||
$.getJSON('/Tags/get_all_tags_taxonomies',
|
||||
function(data) {
|
||||
ltags.setData(data)
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function addTags() {
|
||||
var data = ltags.getValue()
|
||||
var path = '{{ request.args.get('paste') }}'
|
||||
window.location.replace("{{ url_for('Tags.addTags') }}?tags=" + data + "&path=" + path);
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
{% for taxo in active_taxonomies %}
|
||||
jQuery("#{{ taxo }}-id{{ loop.index0 }}").click(function(e){
|
||||
$.getJSON('/Tags/get_tags_taxonomie?taxonomie={{ taxo }}',
|
||||
function(data) {
|
||||
ltags.setData(data)
|
||||
});
|
||||
});
|
||||
{% endfor %}
|
||||
</script>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -1489,17 +1489,17 @@
|
|||
})(jQuery);
|
||||
|
||||
|
||||
$(document).ready(function() {
|
||||
/*$(document).ready(function() {
|
||||
var jsonData = [];
|
||||
var fruits = 'Apple,Orange,Banana,Strawberry'.split(',');
|
||||
//Default values
|
||||
/*for(var i=0;i<fruits.length;i++) jsonData.push({id:i,name:fruits[i]});
|
||||
for(var i=0;i<fruits.length;i++) jsonData.push({id:i,name:fruits[i]});
|
||||
var ms1 = $('#ms1').tagSuggest({
|
||||
data: jsonData,
|
||||
sortOrder: 'name',
|
||||
maxDropHeight: 200,
|
||||
name: 'ms1'
|
||||
});*/
|
||||
});
|
||||
|
||||
$.getJSON('/Tags/get_all_tags',
|
||||
function(data) {
|
||||
|
@ -1513,4 +1513,4 @@
|
|||
name: 'ms0'
|
||||
});
|
||||
});
|
||||
});
|
||||
});*/
|
||||
|
|
Loading…
Reference in a new issue