galaxies synonyms

This commit is contained in:
Terrtia 2018-05-29 17:17:02 +02:00
parent f3f6b76428
commit dbe67e094b
No known key found for this signature in database
GPG key ID: 1E1B1F50D84613D0
12 changed files with 313 additions and 126 deletions

View file

@ -58,7 +58,18 @@ def get_all_tags():
list_tags = [] list_tags = []
for tag in all_tags: for tag in all_tags:
list_tags.append( tag ) t = tag.split(':')[0]
# add synonym
str_synonyms = ' - synonyms: '
if t == 'misp-galaxy':
synonyms = r_serv_tags.smembers('synonym_tag_' + tag)
for synonym in synonyms:
str_synonyms = str_synonyms + synonym + ', '
# add real tag
if str_synonyms != ' - synonyms: ':
list_tags.append({'name':tag + str_synonyms,'id':tag})
else:
list_tags.append({'name':tag,'id':tag})
return jsonify(list_tags) return jsonify(list_tags)
@ -79,6 +90,28 @@ def get_all_tags_taxonomies():
return jsonify(list_tags) return jsonify(list_tags)
@Tags.route("/Tags/get_all_tags_galaxies")
def get_all_tags_galaxy():
active_galaxies = r_serv_tags.smembers('active_galaxies')
list_tags = []
for galaxy in active_galaxies:
l_tags = r_serv_tags.smembers('active_tag_galaxies_' + galaxy)
for tag in l_tags:
str_synonyms = ' - synonyms: '
synonyms = r_serv_tags.smembers('synonym_tag_' + tag)
# synonyms to display
for synonym in synonyms:
str_synonyms = str_synonyms + synonym + ', '
# add real tag
if str_synonyms != ' - synonyms: ':
list_tags.append({'name':tag + str_synonyms,'id':tag})
else:
list_tags.append({'name':tag,'id':tag})
return jsonify(list_tags)
@Tags.route("/Tags/get_tags_taxonomie") @Tags.route("/Tags/get_tags_taxonomie")
def get_tags_taxonomie(): def get_tags_taxonomie():
@ -102,10 +135,38 @@ def get_tags_taxonomie():
return jsonify(list_tags) return jsonify(list_tags)
else: else:
return 'this taxinomie is disable' return 'this taxonomie is disable'
else: else:
return 'INCORRECT INPUT' return 'INCORRECT INPUT'
@Tags.route("/Tags/get_tags_galaxy")
def get_tags_galaxy():
galaxy = request.args.get('galaxy')
active_galaxies = r_serv_tags.smembers('active_galaxies')
#verify input
if galaxy in active_galaxies:
list_tags = []
l_tags = r_serv_tags.smembers('active_tag_galaxies_' + galaxy)
for tag in l_tags:
synonyms = r_serv_tags.smembers('synonym_tag_' + tag)
str_synonyms = ' - synonyms: '
for synonym in synonyms:
str_synonyms = str_synonyms + synonym + ', '
# add real tag
if str_synonyms != ' - synonyms: ':
list_tags.append({'name':tag + str_synonyms,'id':tag})
else:
list_tags.append({'name':tag,'id':tag})
return jsonify(list_tags)
else:
return 'this galaxy is disable'
@Tags.route("/Tags/get_tagged_paste") @Tags.route("/Tags/get_tagged_paste")
def get_tagged_paste(): def get_tagged_paste():
@ -140,7 +201,6 @@ def get_tagged_paste():
bootstrap_label.append('danger') bootstrap_label.append('danger')
bootstrap_label.append('warning') bootstrap_label.append('warning')
bootstrap_label.append('info') bootstrap_label.append('info')
bootstrap_label.append('dark')
all_content = [] all_content = []
paste_date = [] paste_date = []
@ -209,6 +269,9 @@ def remove_tag():
r_serv_metadata.srem('tag:'+path, tag) r_serv_metadata.srem('tag:'+path, tag)
r_serv_tags.srem(tag, path) r_serv_tags.srem(tag, path)
if r_serv_tags.scard(tag) == 0:
r_serv_tags.srem('list_tags', tag)
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path)) return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
@Tags.route("/Tags/confirm_tag") @Tags.route("/Tags/confirm_tag")
@ -239,16 +302,21 @@ def confirm_tag():
def addTags(): def addTags():
tags = request.args.get('tags') tags = request.args.get('tags')
tagsgalaxies = request.args.get('tagsgalaxies')
path = request.args.get('path') path = request.args.get('path')
list_tag = tags.split(',') list_tag = tags.split(',')
list_tag_galaxies = tagsgalaxies.split(',')
taxonomies = Taxonomies() taxonomies = Taxonomies()
active_taxonomies = r_serv_tags.smembers('active_taxonomies') active_taxonomies = r_serv_tags.smembers('active_taxonomies')
if not path: active_galaxies = r_serv_tags.smembers('active_galaxies')
return 'INCORRECT INPUT'
if not path:
return 'INCORRECT INPUT0'
if list_tag != ['']:
for tag in list_tag: for tag in list_tag:
# verify input # verify input
tax = tag.split(':')[0] tax = tag.split(':')[0]
@ -262,57 +330,32 @@ def addTags():
r_serv_tags.sadd('list_tags', tag) r_serv_tags.sadd('list_tags', tag)
else: else:
return 'INCORRECT INPUT' return 'INCORRECT INPUT1'
else: else:
return 'INCORRECT INPUT' return 'INCORRECT INPUT2'
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path)) if list_tag_galaxies != ['']:
for tag in list_tag_galaxies:
# verify input
gal = tag.split(':')[1]
gal = gal.split('=')[0]
print(tag)
print(gal)
print(active_galaxies)
if gal in active_galaxies:
if tag in r_serv_tags.smembers('active_tag_galaxies_' + gal):
@Tags.route("/Tags/thumbs_up_paste") print('adding ...')
def thumbs_up_paste(): #add tag
r_serv_metadata.sadd('tag:'+path, tag)
#TODO verify input r_serv_tags.sadd(tag, path)
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 #add new tag in list of all used tags
r_serv_tags.sadd('list_tags', positive_t) r_serv_tags.sadd('list_tags', tag)
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
if positive_t in list_tags:
return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
else: else:
r_serv_metadata.sadd('tag:'+path, negative_t) return 'INCORRECT INPUT3'
r_serv_tags.sadd(negative_t, path) else:
#add new tag in list of all used tags return 'INCORRECT INPUT4'
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)) return redirect(url_for('showsavedpastes.showsavedpaste', paste=path))
@ -397,10 +440,6 @@ def edit_taxonomie():
else: else:
return 'INVALID TAXONOMIE' return 'INVALID TAXONOMIE'
@Tags.route("/Tags/test")
def test():
return 'test',
@Tags.route("/Tags/disable_taxonomie") @Tags.route("/Tags/disable_taxonomie")
def disable_taxonomie(): def disable_taxonomie():
@ -615,6 +654,32 @@ def active_galaxy():
for tag in l_tags: for tag in l_tags:
r_serv_tags.sadd('active_tag_galaxies_' + id, 'misp-galaxy:{}="{}"'.format(id, tag)) r_serv_tags.sadd('active_tag_galaxies_' + id, 'misp-galaxy:{}="{}"'.format(id, tag))
#save synonyms
for clusters_json in list_clusters:
#get clusters
cluster = json.loads(clusters_json)
if cluster['type'] == id:
val = cluster['values']
tags = []
for data in val:
try:
meta = data['meta']
synonyms = meta['synonyms']
tag_name = data['value']
tag_name = 'misp-galaxy:{}="{}"'.format(id, tag_name)
#save synonyms
for synonym in synonyms:
r_serv_tags.sadd('synonym_tag_' + tag_name, synonym)
except KeyError:
pass
break
return redirect(url_for('Tags.galaxies')) return redirect(url_for('Tags.galaxies'))
@ -631,7 +696,9 @@ def disable_galaxy():
r_serv_tags.srem('active_galaxies', id) r_serv_tags.srem('active_galaxies', id)
for tag in l_tags: for tag in l_tags:
r_serv_tags.srem('active_tag_galaxies_' + id, 'misp-galaxy:{}="{}"'.format(id, tag)) tag_name = 'misp-galaxy:{}="{}"'.format(id, tag)
r_serv_tags.srem('active_tag_galaxies_' + id, tag_name)
r_serv_tags.delete('synonym_tag_' + tag_name)
return redirect(url_for('Tags.galaxies')) return redirect(url_for('Tags.galaxies'))
@ -666,6 +733,7 @@ def edit_galaxy_tag():
#remove tags #remove tags
for tag in diff: for tag in diff:
r_serv_tags.srem('active_tag_galaxies_' + id, tag) r_serv_tags.srem('active_tag_galaxies_' + id, tag)
r_serv_tags.delete('synonym_tag_' + tag)
#all tags unchecked #all tags unchecked
if len(arg1) == 0 and len(arg2) == 0: if len(arg1) == 0 and len(arg2) == 0:
@ -676,10 +744,42 @@ def edit_galaxy_tag():
r_serv_tags.sadd('active_galaxies', id) r_serv_tags.sadd('active_galaxies', id)
r_serv_tags.sadd('active_tag_galaxies_' + id, tag) r_serv_tags.sadd('active_tag_galaxies_' + id, tag)
#get tags synonyms
for clusters_json in list_clusters:
#get clusters
cluster = json.loads(clusters_json)
if cluster['type'] == id:
val = cluster['values']
tags = []
for data in val:
try:
meta = data['meta']
synonyms = meta['synonyms']
tag_name = data['value']
tag_name = 'misp-galaxy:{}="{}"'.format(id, tag_name)
if tag_name in arg2:
#save synonyms
for synonym in synonyms:
r_serv_tags.sadd('synonym_tag_' + tag_name, synonym)
except KeyError:
pass
break
return redirect(url_for('Tags.galaxies')) return redirect(url_for('Tags.galaxies'))
else: else:
return "INCORRECT INPUT" return "INCORRECT INPUT"
@Tags.route("/Tags/test")
def test():
return render_template("test.html",
id = '1')
# ========= REGISTRATION ========= # ========= REGISTRATION =========
app.register_blueprint(Tags) app.register_blueprint(Tags)

View file

@ -38,20 +38,31 @@
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off"> <input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
<div class="input-group-btn"> <div class="input-group-btn">
<button class="btn btn-search btn-primary btn-tags" onclick="searchTags()"> <button type="button" class="btn btn-search btn-primary btn-tags" onclick="searchTags()"<button class="btn btn-primary" onclick="emptyTags()">
<span class="glyphicon glyphicon-search"></span> <span class="glyphicon glyphicon-search "></span>
<span class="label-icon">Search</span> <span class="label-icon">Search Tags</span>
</button> </button>
</div> </div>
</div> </div>
<button type="button" class="btn btn-primary" style="margin-bottom: 30px;" data-target="#filter-panel"> <button class="btn btn-primary" onclick="emptyTags()" style="margin-bottom: 30px;">
<span class="glyphicon glyphicon-cog "></span> Advanced Search <span class="glyphicon glyphicon-remove"></span>
<span class="label-icon">Clear Tags</span>
</button> </button>
<div> <div>
<a href="{{ url_for('Tags.taxonomies') }}"> [Taxonomies list] </a> <br></br>
<a class="btn btn-tags" href="{{ url_for('Tags.taxonomies') }}" target="_blank">
<i class="fa fa-wrench fa-2x"></i>
<br></br>
<span class="label-icon">Edit Taxonomies List </span>
</a>
<a class="btn btn-tags" href="{{ url_for('Tags.galaxies') }}" target="_blank">
<i class="fa fa-rocket fa-2x"></i>
<br></br>
<span class="label-icon">Edit Galaxies List</span>
</a>
</div> </div>
</div> </div>
@ -79,9 +90,12 @@
<script> <script>
function searchTags() { function searchTags() {
var data = ltags.getValue(); var data = ltags.getValue();
console.log(data);
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data); window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
} }
function emptyTags() {
console.log('b');
ltags.clear();
}
</script> </script>
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script> <script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
</body> </body>

View file

@ -127,7 +127,7 @@
<div class="input-group-btn"> <div class="input-group-btn">
<button class="btn btn-primary btn-lg"> <button class="btn btn-primary btn-lg" onclick="submitActiveTags()">
<i class="fa fa-check-square-o fa"></i> <i class="fa fa-check-square-o fa"></i>
Update Tags Update Tags
</button> </button>
@ -142,13 +142,14 @@
</body> </body>
<script> <script>
var table
$(document).ready(function(){ $(document).ready(function(){
$('#myTable_').DataTable( table = $('#myTable_').DataTable(
{ {
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]], "aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
"iDisplayLength": 10, "iDisplayLength": 10,
//"order": [[ 1, "asc" ]] "order": [[ 3, "desc" ]]
} }
); );
@ -157,7 +158,12 @@ $(document).ready(function(){
<script> <script>
function submitActiveTags(){ function submitActiveTags(){
document.getElementById("checkboxForm").submit(); table.destroy()
table = $('#myTable_').DataTable(
{
"iDisplayLength": -1,
}
);
} }
</script> </script>

View file

@ -127,7 +127,7 @@
<div class="input-group-btn"> <div class="input-group-btn">
<button class="btn btn-primary btn-lg"> <button class="btn btn-primary btn-lg" onclick="submitActiveTags()">
<i class="fa fa-check-square-o fa"></i> <i class="fa fa-check-square-o fa"></i>
Update Tags Update Tags
</button> </button>
@ -142,20 +142,14 @@
</body> </body>
<script> <script>
var table
$(document).ready(function(){ $(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" ]] });*/ table = $('#myTable_').DataTable(
$('#myTable_').DataTable(
{ {
"aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]], "aLengthMenu": [[5, 10, 15, 20, -1], [5, 10, 15, 20, "All"]],
"iDisplayLength": 10, "iDisplayLength": 10,
//"order": [[ 1, "asc" ]] "order": [[ 3, "desc" ]]
} }
); );
@ -164,7 +158,12 @@ $(document).ready(function(){
<script> <script>
function submitActiveTags(){ function submitActiveTags(){
document.getElementById("checkboxForm").submit(); table.destroy()
table = $('#myTable_').DataTable(
{
"iDisplayLength": -1,
}
);
} }
</script> </script>

View file

@ -74,16 +74,17 @@
<input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off"> <input id="ltags" style="width:100%;" type="text" name="ltags" autocomplete="off">
<div class="input-group-btn"> <div class="input-group-btn">
<button class="btn btn-search btn-primary btn-tags" onclick="searchTags()"> <button type="button" class="btn btn-search btn-primary btn-tags" onclick="searchTags()">
<span class="glyphicon glyphicon-search"></span> <span class="glyphicon glyphicon-search "></span>
<span class="label-icon">Search</span> <span class="label-icon">Search Tags</span>
</button> </button>
</div> </div>
</div> </div>
<button type="button" class="btn btn-primary" style="margin-bottom: 30px;" data-target="#filter-panel"> <button class="btn btn-primary" onclick="emptyTags()" style="margin-bottom: 30px;">
<span class="glyphicon glyphicon-cog "></span> Advanced Search <span class="glyphicon glyphicon-remove"></span>
<span class="label-icon">Clear Tags</span>
</button> </button>
<table class="test table table-striped table-bordered table-hover table-responsive " id="myTable_"> <table class="test table table-striped table-bordered table-hover table-responsive " id="myTable_">
@ -105,7 +106,7 @@
<div> <div>
{% for tag in paste_tags[loop.index0] %} {% for tag in paste_tags[loop.index0] %}
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}"> <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> <span class="label label-{{ bootstrap_label[loop.index0 % 5] }} pull-left">{{ tag[0] }}</span>
</a> </a>
{% endfor %} {% endfor %}
</div> </div>
@ -129,7 +130,19 @@
<img id="loading_gif_browse" src="/static//image/loading.gif" heigt="20" width="20" style="margin: 2px;"></div> <img id="loading_gif_browse" src="/static//image/loading.gif" heigt="20" width="20" style="margin: 2px;"></div>
</br> </br>
<a href="{{ url_for('Tags.taxonomies') }}"> [Taxonomies list] </a> <div>
<br></br>
<a class="btn btn-tags" href="{{ url_for('Tags.taxonomies') }}" target="_blank">
<i class="fa fa-wrench fa-2x"></i>
<br></br>
<span class="label-icon">Edit Taxonomies List </span>
</a>
<a class="btn btn-tags" href="{{ url_for('Tags.galaxies') }}" target="_blank">
<i class="fa fa-rocket fa-2x"></i>
<br></br>
<span class="label-icon">Edit Galaxies List</span>
</a>
</div>
</div> </div>
@ -186,6 +199,10 @@ $(document).ready(function(){
var data = ltags.getValue(); var data = ltags.getValue();
window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data); window.location.replace("{{ url_for('Tags.get_tagged_paste') }}?ltags=" + data);
} }
function emptyTags() {
console.log('b');
ltags.clear();
}
</script> </script>
<!-- Dynamically update the modal --> <!-- Dynamically update the modal -->

View file

@ -64,7 +64,6 @@ def event_stream_getImportantPasteByModule(module_name, year):
bootstrap_label.append('danger') bootstrap_label.append('danger')
bootstrap_label.append('warning') bootstrap_label.append('warning')
bootstrap_label.append('info') bootstrap_label.append('info')
bootstrap_label.append('dark')
for path in all_pastes_list: for path in all_pastes_list:
index += 1 index += 1
@ -135,7 +134,6 @@ def importantPasteByModule():
bootstrap_label.append('danger') bootstrap_label.append('danger')
bootstrap_label.append('warning') bootstrap_label.append('warning')
bootstrap_label.append('info') bootstrap_label.append('info')
bootstrap_label.append('dark')
for path in allPastes[0:10]: for path in allPastes[0:10]:
all_path.append(path) all_path.append(path)

View file

@ -16,7 +16,7 @@
<div> <div>
{% for tag in paste_tags[loop.index0] %} {% for tag in paste_tags[loop.index0] %}
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}"> <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> <span class="label label-{{ bootstrap_label[loop.index0 % 5] }} pull-left">{{ tag[0] }}</span>
</a> </a>
{% endfor %} {% endfor %}
</div> </div>
@ -101,7 +101,7 @@ function add_entries_X(to_add) {
for(j=0; j<feed.l_tags.length; j++) { for(j=0; j<feed.l_tags.length; j++) {
console.log(feed.l_tags[j][1]) console.log(feed.l_tags[j][1])
tag = tag + "<a href=\"{{ url_for('Tags.get_tagged_paste') }}?ltags=" + 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>"; + "<span class=\"label label-" + feed.bootstrap_label[j % 5] + " pull-left\">" + feed.l_tags[j][0] + "</span>" + "</a>";
} }
search_table.row.add( [ search_table.row.add( [
feed.index, feed.index,

View file

@ -164,7 +164,6 @@ def search():
bootstrap_label.append('danger') bootstrap_label.append('danger')
bootstrap_label.append('warning') bootstrap_label.append('warning')
bootstrap_label.append('info') bootstrap_label.append('info')
bootstrap_label.append('dark')
index_min = 1 index_min = 1
index_max = len(get_index_list()) index_max = len(get_index_list())
@ -205,7 +204,6 @@ def get_more_search_result():
bootstrap_label.append('danger') bootstrap_label.append('danger')
bootstrap_label.append('warning') bootstrap_label.append('warning')
bootstrap_label.append('info') bootstrap_label.append('info')
bootstrap_label.append('dark')
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT) schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)

View file

@ -101,7 +101,7 @@
<div> <div>
{% for tag in paste_tags[loop.index0] %} {% for tag in paste_tags[loop.index0] %}
<a href="{{ url_for('Tags.get_tagged_paste') }}?ltags={{ tag[1] }}"> <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> <span class="label label-{{ bootstrap_label[loop.index0 % 5] }} pull-left">{{ tag[0] }}</span>
</a> </a>
{% endfor %} {% endfor %}
</div> </div>
@ -200,7 +200,7 @@
var curr_preview = data.preview_array[i].replace(/\"/g, "\'"); var curr_preview = data.preview_array[i].replace(/\"/g, "\'");
var tag = "" var tag = ""
for(j=0; j<data.list_tags[i].length; j++) { for(j=0; j<data.list_tags[i].length; j++) {
tag = tag + "<span class=\"label label-" + data.bootstrap_label[j % 6] + " pull-left\">" + data.list_tags[j] + "</span>" tag = tag + "<span class=\"label label-" + data.bootstrap_label[j % 5] + " pull-left\">" + data.list_tags[j] + "</span>"
} }
search_table.row.add( [ search_table.row.add( [
init_num_of_elements_in_table+((offset))+i+1, init_num_of_elements_in_table+((offset))+i+1,

View file

@ -104,13 +104,15 @@ def showpaste(content_range):
bootstrap_label.append('danger') bootstrap_label.append('danger')
bootstrap_label.append('warning') bootstrap_label.append('warning')
bootstrap_label.append('info') bootstrap_label.append('info')
bootstrap_label.append('dark')
#active taxonomies #active taxonomies
active_taxonomies = r_serv_tags.smembers('active_taxonomies') active_taxonomies = r_serv_tags.smembers('active_taxonomies')
l_tags = r_serv_metadata.smembers('tag:'+requested_path) l_tags = r_serv_metadata.smembers('tag:'+requested_path)
#active galaxies
active_galaxies = r_serv_tags.smembers('active_galaxies')
list_tags = [] list_tags = []
for tag in l_tags: for tag in l_tags:
@ -119,7 +121,7 @@ def showpaste(content_range):
else: else:
list_tags.append( (tag, False) ) 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) return render_template("show_saved_paste.html", date=p_date, bootstrap_label=bootstrap_label, active_taxonomies=active_taxonomies, active_galaxies=active_galaxies, 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 ============ # ============ ROUTES ============

View file

@ -51,7 +51,6 @@
<div class="form-group input-group" > <div class="form-group input-group" >
<input id="ltags" style="width:850%;" type="text" name="ltags"> <input id="ltags" style="width:850%;" type="text" name="ltags">
</div> </div>
<div class="btn-group btn-block"> <div class="btn-group btn-block">
@ -59,16 +58,42 @@
<i class="fa fa-chevron-down"></i> <i class="fa fa-chevron-down"></i>
</button> </button>
<ul class="dropdown-menu scrollable-menu" role="menu"> <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><a href="#" id="all-tags-taxonomies">All Tags <i class="fa fa-tags"></i></a></li>
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
{% for taxo in active_taxonomies %} {% for taxo in active_taxonomies %}
<li><a href="#" id="{{ taxo }}-id{{ loop.index0 }}">{{ taxo }}</a></li> <li><a href="#" id="{{ taxo }}-id{{ loop.index0 }}">{{ taxo }}</a></li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
<br/><br/>
<div class="form-group input-group" >
<input id="ltagsgalaxies" style="width:850%;" type="text" name="ltagsgalaxies">
</div>
<div class="btn-group btn-block">
<button type="button" class="btn btn-primary dropdown-toggle btn-block" data-toggle="dropdown">Galaxy Selection
<i class="fa fa-chevron-down"></i>
</button>
<ul class="dropdown-menu scrollable-menu" role="menu">
<li><a href="#" id="all-tags-galaxies">All Tags <i class="fa fa-tags"></i></a></li>
<li role="separator" class="divider"></li>
{% for galaxy in active_galaxies %}
<li><a href="#" id="{{ galaxy }}-idgalax{{ loop.index0 }}">{{ galaxy }}</a></li>
{% endfor %}
</ul>
</div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<a class="btn btn-tags pull-left" href="{{ url_for('Tags.taxonomies') }}" target="_blank">
<span class="label-icon">Edit Taxonomies List </span>
<i class="fa fa-wrench fa-2x"></i>
</a>
<a class="btn btn-tags pull-left" href="{{ url_for('Tags.galaxies') }}" target="_blank">
<span class="label-icon">Edit Galaxies List</span>
<i class="fa fa-rocket fa-2x"></i>
</a>
<button class="btn btn-primary btn-tags" onclick="addTags()"> <button class="btn btn-primary btn-tags" onclick="addTags()">
<span class="glyphicon glyphicon-plus"></span> <span class="glyphicon glyphicon-plus"></span>
<span class="label-icon">Add Tags</span> <span class="label-icon">Add Tags</span>
@ -82,7 +107,7 @@
{% for tag in list_tags %} {% 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[0] }}</span> <span class="btn btn-{{ bootstrap_label[loop.index0 % 5] }} btn-lg pull-left" data-toggle="modal" data-target="#myModal_{{ loop.index0 }}">{{ tag[0] }}</span>
<!-- Modal edit this tag --> <!-- Modal edit this tag -->
<div class="modal fade" id="myModal_{{ loop.index0 }}" role="dialog"> <div class="modal fade" id="myModal_{{ loop.index0 }}" role="dialog">
@ -94,7 +119,7 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<span class="label label-{{ bootstrap_label[loop.index0 % 6] }}" >{{ tag[0] }}</span> <span class="label label-{{ bootstrap_label[loop.index0 % 5] }}" >{{ tag[0] }}</span>
</div> </div>
<div class="modal-footer center"> <div class="modal-footer center">
{% if tag[1] %} {% if tag[1] %}
@ -145,12 +170,6 @@
</tbody> </tbody>
</table> </table>
<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>
</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>
</a>
</div> </div>
<div class="panel-body" id="panel-body"> <div class="panel-body" id="panel-body">
{% if duplicate_list|length == 0 %} {% if duplicate_list|length == 0 %}
@ -191,6 +210,7 @@
<script> <script>
var ltags var ltags
var ltagsgalaxies
$(document).ready(function(){ $(document).ready(function(){
$.getJSON('/Tags/get_all_tags_taxonomies', $.getJSON('/Tags/get_all_tags_taxonomies',
@ -204,12 +224,23 @@
}); });
}); });
$.getJSON('/Tags/get_all_tags_galaxies',
function(data) {
ltagsgalaxies = $('#ltagsgalaxies').tagSuggest({
data: data,
//sortOrder: 'name',
maxDropHeight: 200,
name: 'ltagsgalaxies'
});
});
$('#tableDup').DataTable(); $('#tableDup').DataTable();
}); });
</script> </script>
<script> <script>
jQuery("#all-tags").click(function(e){ jQuery("#all-tags-taxonomies").click(function(e){
//change input tags list /Tags/get_tags_taxonomie?taxonomie=infoleak //change input tags list /Tags/get_tags_taxonomie?taxonomie=infoleak
$.getJSON('/Tags/get_all_tags_taxonomies', $.getJSON('/Tags/get_all_tags_taxonomies',
function(data) { function(data) {
@ -217,14 +248,25 @@
}); });
}); });
</script>
<script>
jQuery("#all-tags-galaxies").click(function(e){
$.getJSON('/Tags/get_all_tags_galaxies',
function(data) {
ltagsgalaxies.setData(data)
});
});
</script> </script>
<script> <script>
function addTags() { function addTags() {
var data = ltags.getValue() var tags = ltags.getValue()
var tagsgalaxy = ltagsgalaxies.getValue()
var path = '{{ request.args.get('paste') }}' var path = '{{ request.args.get('paste') }}'
window.location.replace("{{ url_for('Tags.addTags') }}?tags=" + data + "&path=" + path); window.location.replace("{{ url_for('Tags.addTags') }}?tags=" + tags + "&tagsgalaxies=" + tagsgalaxy + "&path=" + path);
} }
</script> </script>
<script> <script>
@ -237,5 +279,16 @@
}); });
{% endfor %} {% endfor %}
</script> </script>
<script>
{% for galaxy in active_galaxies %}
jQuery("#{{ galaxy }}-idgalax{{ loop.index0 }}").click(function(e){
$.getJSON('/Tags/get_tags_galaxy?galaxy={{ galaxy }}',
function(data) {
ltagsgalaxies.setData(data)
});
});
{% endfor %}
</script>
</html> </html>

View file

@ -99,7 +99,7 @@
* Defaults to <code>'Type or click here'</code> or just <code>'Click here'</code> if not editable. * Defaults to <code>'Type or click here'</code> or just <code>'Click here'</code> if not editable.
*/ */
emptyText: function() { emptyText: function() {
return cfg.editable ? '' : ''; return cfg.editable ? 'Select Tags' : '';
}, },
/** /**
@ -122,7 +122,7 @@
* Defaults to <code>false</code>. * Defaults to <code>false</code>.
*/ */
expandOnFocus: function() { expandOnFocus: function() {
return cfg.editable ? false : true; return cfg.editable ? true : true;
}, },
/** /**