Compare commits
3 Commits
a9b1e22b47
...
6f3df5fc51
Author | SHA1 | Date | |
---|---|---|---|
6f3df5fc51 | |||
9c309dafc2 | |||
19423c7f84 |
@ -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
BIN
project/static/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
@ -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"
|
||||||
|
@ -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"
|
||||||
|
Reference in New Issue
Block a user