from flask import Flask, render_template, send_file, request, Response, redirect, url_for, make_response, render_template_string import os import pyfiglet # Use pyfiglet for CLI art ascii_banner = pyfiglet.figlet_format("Web Server") print(ascii_banner) app = Flask(__name__, static_folder="Sign in") # Ask user where the log file is log_file_path = input("Enter the full path for the log file (e.g., /path/to/logfile.txt): ") # Secret key for sessions app.secret_key = 'your_super_secret_key_here' # Serve login/signup page @app.route('/login') def login(): return send_file('Sign in/index.html') # Handle login form submission @app.route('/login', methods=['POST']) def handle_login(): username = request.form.get('username') password = request.form.get('password') if username and password: resp = make_response(redirect(url_for('home'))) resp.set_cookie('session_id', 'authenticated_user', max_age=3600, httponly=True) return resp return 'Invalid Credentials', 401 @app.route('/') def home(): session_id = request.cookies.get('session_id') if session_id == 'authenticated_user': if os.path.exists(log_file_path): with open(log_file_path, 'r') as file: log_contents = file.read() else: log_contents = "Log file not found." return render_template_string(HTML_TEMPLATE, log_file_path=log_file_path, log_contents=log_contents) return redirect(url_for('login')) @app.route('/download') def download_log(): session_id = request.cookies.get('session_id') if session_id == 'authenticated_user': if os.path.exists(log_file_path): return send_file(log_file_path, as_attachment=True) return "Log file not found." return redirect(url_for('login')) # Logout @app.route('/logout') def logout(): resp = make_response(redirect(url_for('login'))) resp.set_cookie('session_id', '', expires=0) return resp HTML_TEMPLATE = '''
{{ log_contents }}
Download Log File
Logout
'''
if __name__ == '__main__':
debug_mode = os.getenv('FLASK_DEBUG', 'False').lower() in ['true', '1', 't']
app.run(debug=debug_mode)