from flask import Flask, request, render_template_string import difflib import argparse app = Flask(__name__) HTML_TEMPLATE = ''' Enhanced Diff Tool

Diff Tool

🌓 Toggle Theme

Original Content

Modified Content

{% if diff_html %} {% endif %}
{% if message %}
{{ message }}
{% endif %} {% if diff_html %}
{{ diff_html|safe }}
{% endif %}
''' @app.route('/', methods=['GET']) def index(): return render_template_string(HTML_TEMPLATE, text1=request.args.get('text1', ''), text2=request.args.get('text2', '')) @app.route('/diff', methods=['POST']) def diff_files(): # Handle file uploads and text inputs file1 = request.files.get('file1') file2 = request.files.get('file2') text1 = request.form.get('text1', '').strip() text2 = request.form.get('text2', '').strip() # Validate input if (not file1 and not text1) or (not file2 and not text2): return render_template_string(HTML_TEMPLATE, message="Please provide content for both sides to compare.", text1=text1, text2=text2) try: # Process first content if file1 and file1.filename: content1 = file1.read().decode('utf-8').splitlines() filename1 = file1.filename else: content1 = text1.splitlines() filename1 = "Original Content" # Process second content if file2 and file2.filename: content2 = file2.read().decode('utf-8').splitlines() filename2 = file2.filename else: content2 = text2.splitlines() filename2 = "Modified Content" except UnicodeDecodeError: return render_template_string(HTML_TEMPLATE, message="Error: Only UTF-8 encoded text files are supported.", text1=text1, text2=text2) # Generate diff differ = difflib.HtmlDiff( tabsize=4, wrapcolumn=80, linejunk=None, charjunk=difflib.IS_CHARACTER_JUNK ) diff_html = differ.make_file( content1, content2, fromdesc=filename1, todesc=filename2, context=True, numlines=3 ) return render_template_string(HTML_TEMPLATE, text1=text1, text2=text2, diff_html=diff_html) if __name__ == '__main__': parser = argparse.ArgumentParser(description="Run SSL Certificate Decoder") parser.add_argument('--port', type=int, default=5000, help='Port to run the service on') parser.add_argument('--host', type=str, default='127.0.0.1', help='Host to run the service on') args = parser.parse_args() app.run(debug=True, port=args.port, host=args.host)