Compare commits

...

3 Commits

Author SHA1 Message Date
6f3df5fc51 fix wrong ip address behind proxy 2023-04-18 01:28:58 +08:00
9c309dafc2 add favicon 2023-04-18 01:27:49 +08:00
19423c7f84 add placeholder for input prompt 2023-04-18 01:06:35 +08:00
4 changed files with 20 additions and 5 deletions

View File

@ -1,10 +1,11 @@
from flask import Flask, request from flask import Flask, request, send_from_directory
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager from flask_login import LoginManager
import yaml import yaml
import logging import logging
import time import time
import traceback import traceback
import os
# init SQLAlchemy so we can use it later in our models # init SQLAlchemy so we can use it later in our models
db = SQLAlchemy() db = SQLAlchemy()
@ -59,17 +60,30 @@ logger = logging.getLogger('waitress')
logger.setLevel(app.config['LOGGING_LEVEL']) logger.setLevel(app.config['LOGGING_LEVEL'])
def get_actual_addr(request):
ip = request.remote_addr
if request.headers.getlist("X-Forwarded-For"):
ip = request.headers.getlist("X-Forwarded-For")[0]
return ip
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
@app.before_request @app.before_request
def before_request(): def before_request():
timestamp = time.strftime('[%Y-%b-%d %H:%M]') timestamp = time.strftime('[%Y-%b-%d %H:%M]')
logger.info('%s > %s %s %s %s', timestamp, request.remote_addr, logger.info('%s > %s %s %s %s', timestamp, get_actual_addr(request),
request.method, request.scheme, request.full_path) request.method, request.scheme, request.full_path)
@app.after_request @app.after_request
def after_request(response): def after_request(response):
timestamp = time.strftime('[%Y-%b-%d %H:%M]') timestamp = time.strftime('[%Y-%b-%d %H:%M]')
logger.info('%s < %s %s %s %s %s', timestamp, request.remote_addr, logger.info('%s < %s %s %s %s %s', timestamp, get_actual_addr(request),
request.method, request.scheme, request.full_path, response.status) request.method, request.scheme, request.full_path, response.status)
return response return response
@ -79,5 +93,5 @@ def exceptions(e):
tb = traceback.format_exc() tb = traceback.format_exc()
timestamp = time.strftime('[%Y-%b-%d %H:%M]') timestamp = time.strftime('[%Y-%b-%d %H:%M]')
logger.error('%s %s %s %s %s 5xx INTERNAL SERVER ERROR\n%s', timestamp, logger.error('%s %s %s %s %s 5xx INTERNAL SERVER ERROR\n%s', timestamp,
request.remote_addr, request.method, request.scheme, request.full_path, tb) get_actual_addr(request), request.method, request.scheme, request.full_path, tb)
return e.status_code return e.status_code

BIN
project/static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -7,6 +7,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flask</title> <title>Flask</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}"/>
<link rel="stylesheet" <link rel="stylesheet"
href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"/> href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"/>
<link rel="stylesheet" <link rel="stylesheet"

View File

@ -7,7 +7,7 @@
</ul> </ul>
</div> </div>
<div class="fixed-bottom form-inline"> <div class="fixed-bottom form-inline">
<textarea id="msgbox" class="form-control" style="width:85%; float: left; margin-bottom: 20px;"></textarea> <textarea id="msgbox" class="form-control" style="width:85%; float: left; margin-bottom: 20px;" placeholder="说点什么吧"></textarea>
<button id="btn-send" <button id="btn-send"
class="btn btn-info" class="btn btn-info"
type="button" type="button"