mirror of https://github.com/CIRCL/AIL-framework
feature: diff in the web interface for duplicates pastes.
parent
9cab76cf88
commit
3fe7ecf75a
|
@ -7,7 +7,8 @@
|
|||
import redis
|
||||
import json
|
||||
import flask
|
||||
from flask import Flask, render_template, jsonify, request, Blueprint
|
||||
from flask import Flask, render_template, jsonify, request, Blueprint, make_response
|
||||
import difflib
|
||||
|
||||
import Paste
|
||||
|
||||
|
@ -113,5 +114,21 @@ def getmoredata():
|
|||
to_return = p_content[max_preview_modal-1:]
|
||||
return to_return
|
||||
|
||||
@showsavedpastes.route("/showDiff/")
|
||||
def showDiff():
|
||||
s1 = request.args.get('s1', '')
|
||||
s2 = request.args.get('s2', '')
|
||||
p1 = Paste.Paste(s1)
|
||||
p2 = Paste.Paste(s2)
|
||||
maxLengthLine1 = p1.get_lines_info()[1]
|
||||
maxLengthLine2 = p2.get_lines_info()[1]
|
||||
if maxLengthLine1 > 100000 or maxLengthLine2 > 100000:
|
||||
return "Can't make the difference as the lines are too long."
|
||||
htmlD = difflib.HtmlDiff()
|
||||
lines1 = p1.get_p_content().decode('utf8', 'ignore').splitlines()
|
||||
lines2 = p2.get_p_content().decode('utf8', 'ignore').splitlines()
|
||||
the_html = htmlD.make_file(lines1, lines2)
|
||||
return the_html
|
||||
|
||||
# ========= REGISTRATION =========
|
||||
app.register_blueprint(showsavedpastes)
|
||||
|
|
|
@ -15,14 +15,14 @@
|
|||
<script src="{{ url_for('static', filename='js/dataTables.bootstrap.js') }}"></script>
|
||||
<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/jquery.flot.stack.js') }}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h1 class="page-header" >Paste: {{ request.args.get('paste') }}</h1>
|
||||
<h2 class="page-header" >({{ request.args.get('num') }})</h2>
|
||||
|
||||
|
||||
<table class="table table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -62,7 +62,8 @@
|
|||
<th>Hash type</th>
|
||||
<th>Paste info</th>
|
||||
<th>Date</th>
|
||||
<th>Path</th>
|
||||
<th>Path</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -72,6 +73,7 @@
|
|||
<td>Similarity: {{ simil_list[i] }}%</td>
|
||||
<td>{{ date_list[i] }}</td>
|
||||
<td><a target="_blank" href="{{ url_for('showsavedpastes.showsavedpaste') }}?paste={{ dup_path }}" id='dup_path'>{{ dup_path }}</a></td>
|
||||
<td><a target="_blank" href="{{ url_for('showsavedpastes.showDiff') }}?s1={{ request.args.get('paste') }}&s2={{ dup_path }}" class="fa fa-columns" title="Show differences"></a></td>
|
||||
</tr>
|
||||
{% set i = i + 1 %}
|
||||
{% endfor %}
|
||||
|
@ -82,7 +84,7 @@
|
|||
<p data-initsize="{{ initsize }}"> <pre id="paste-holder">{{ content }}</pre></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
<script>
|
||||
$('#tableDup').DataTable();
|
||||
|
|
Loading…
Reference in New Issue