web
This commit is contained in:
46
web/app.py
Normal file
46
web/app.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from flask import Flask, render_template, request, redirect, url_for
|
||||
import logging
|
||||
from datetime import datetime
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Set up custom logging
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
||||
# Remove werkzeug logs by setting its logger to a higher level (e.g., ERROR)
|
||||
werkzeug_logger = logging.getLogger('werkzeug')
|
||||
werkzeug_logger.setLevel(logging.ERROR)
|
||||
|
||||
# Log client IP before each request
|
||||
@app.before_request
|
||||
def log_client_ip():
|
||||
# Get client IP address from X-Forwarded-For header or remote_addr
|
||||
client_ip = request.headers.get('X-Forwarded-For', request.remote_addr)
|
||||
client_ip = client_ip.split(',')[0] # Get the first IP if it's a forwarded request
|
||||
|
||||
# Override werkzeug's default logging to show client IP in the access log
|
||||
@app.after_request
|
||||
def log_request(response):
|
||||
client_ip = request.headers.get('X-Forwarded-For', request.remote_addr)
|
||||
client_ip = client_ip.split(',')[0] # Get the first IP if it's a forwarded request
|
||||
app.logger.info(f"{client_ip} - - [{request.date}] \"{request.method} {request.full_path} {request.environ.get('SERVER_PROTOCOL')}\" {response.status_code}")
|
||||
return response
|
||||
|
||||
@app.route('/')
|
||||
def home():
|
||||
greeting = "Hello, Python!"
|
||||
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
return render_template('home.html', greeting=greeting, current_time=current_time)
|
||||
|
||||
@app.route('/about')
|
||||
def about():
|
||||
return render_template('about.html')
|
||||
|
||||
# Always redirect back home
|
||||
@app.errorhandler(404)
|
||||
def default_page(e):
|
||||
return redirect(url_for('home'))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True, host="0.0.0.0", port=5005)
|
||||
Reference in New Issue
Block a user