From 6a1c5bebaaf657cdcbbce020d752e8e6f20833bb Mon Sep 17 00:00:00 2001 From: Son NK Date: Wed, 1 Jan 2020 22:47:04 +0100 Subject: [PATCH 1/5] add flask-profiler to requirements --- requirements.in | 3 ++- requirements.txt | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/requirements.in b/requirements.in index 1feb16a2..7cfc98ac 100644 --- a/requirements.in +++ b/requirements.in @@ -32,4 +32,5 @@ coloredlogs pycryptodome phpserialize dkimpy -pyotp \ No newline at end of file +pyotp +flask_profiler \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index d1785ff9..b5652536 100644 --- a/requirements.txt +++ b/requirements.txt @@ -34,8 +34,10 @@ docutils==0.14 # via botocore flask-admin==1.5.3 flask-cors==3.0.8 flask-debugtoolbar==0.10.1 +flask-httpauth==3.3.0 # via flask-profiler flask-login==0.4.1 flask-migrate==2.5.2 +flask-profiler==1.8.1 flask-sqlalchemy==2.4.0 flask-wtf==0.14.2 flask==1.0.3 @@ -83,6 +85,7 @@ requests==2.22.0 # via requests-oauthlib ruamel.yaml==0.15.97 # via strictyaml s3transfer==0.2.1 # via boto3 sentry-sdk==0.13.5 +simplejson==3.17.0 # via flask-profiler six==1.12.0 # via bcrypt, cryptography, flask-cors, packaging, pip-tools, prompt-toolkit, pyopenssl, pytest, python-dateutil, sqlalchemy-utils, traitlets sqlalchemy-utils==0.33.11 sqlalchemy==1.3.12 # via alembic, flask-sqlalchemy, sqlalchemy-utils From e609404e6f506eb212f902de517b491ff0e641d3 Mon Sep 17 00:00:00 2001 From: Son NK Date: Wed, 1 Jan 2020 22:54:33 +0100 Subject: [PATCH 2/5] Add FLASK_PROFILER_PATH, FLASK_PROFILER_PASSWORD setting --- .env.example | 4 ++++ app/config.py | 3 +++ 2 files changed, 7 insertions(+) diff --git a/.env.example b/.env.example index ac76ee16..6b060098 100644 --- a/.env.example +++ b/.env.example @@ -86,3 +86,7 @@ GOOGLE_CLIENT_SECRET=to_fill # Facebook FACEBOOK_CLIENT_ID=to_fill FACEBOOK_CLIENT_SECRET=to_fill + +# Flask profiler +# FLASK_PROFILER_PATH=/tmp/flask-profiler.sql +# FLASK_PROFILER_PASSWORD=password \ No newline at end of file diff --git a/app/config.py b/app/config.py index 047178d5..ae2082ee 100644 --- a/app/config.py +++ b/app/config.py @@ -125,3 +125,6 @@ AVATAR_URL_EXPIRATION = 3600 * 24 * 7 # 1h*24h/d*7d=1week # session key HIGHLIGHT_GEN_EMAIL_ID = "highlight_gen_email_id" MFA_USER_ID = "mfa_user_id" + +FLASK_PROFILER_PATH = os.environ.get("FLASK_PROFILER_PATH") +FLASK_PROFILER_PASSWORD = os.environ.get("FLASK_PROFILER_PASSWORD") From d3f82338448664f732432c106bf8595f85439217 Mon Sep 17 00:00:00 2001 From: Son NK Date: Wed, 1 Jan 2020 22:54:49 +0100 Subject: [PATCH 3/5] Enable flask-profiler if FLASK_PROFILER_PATH is set --- server.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/server.py b/server.py index f70d4d0d..d0771d5d 100644 --- a/server.py +++ b/server.py @@ -6,8 +6,8 @@ import sentry_sdk from flask import Flask, redirect, url_for, render_template, request, jsonify from flask_admin import Admin from flask_cors import cross_origin -from flask_debugtoolbar import DebugToolbarExtension from flask_login import current_user +import flask_profiler from sentry_sdk.integrations.flask import FlaskIntegration from app import paddle_utils @@ -22,6 +22,8 @@ from app.config import ( SHA1, PADDLE_MONTHLY_PRODUCT_ID, RESET_DB, + FLASK_PROFILER_PATH, + FLASK_PROFILER_PASSWORD, ) from app.dashboard.base import dashboard_bp from app.developer.base import developer_bp @@ -77,6 +79,20 @@ def create_app() -> Flask: init_admin(app) setup_paddle_callback(app) + if FLASK_PROFILER_PATH: + LOG.d("Enable flask-profiler") + app.config["flask_profiler"] = { + "enabled": True, + "storage": {"engine": "sqlite", "FILE": FLASK_PROFILER_PATH}, + "basicAuth": { + "enabled": True, + "username": "admin", + "password": FLASK_PROFILER_PASSWORD, + }, + "ignore": ["^/static/.*"], + } + flask_profiler.init_app(app) + return app From 064e10771b59de7a04bc21cba4540428e7c7b95c Mon Sep 17 00:00:00 2001 From: Son NK Date: Wed, 1 Jan 2020 23:20:28 +0100 Subject: [PATCH 4/5] Ignore /git and /exception in flask-profiler --- server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server.py b/server.py index d0771d5d..eac981ac 100644 --- a/server.py +++ b/server.py @@ -2,12 +2,12 @@ import os import ssl import arrow +import flask_profiler import sentry_sdk from flask import Flask, redirect, url_for, render_template, request, jsonify from flask_admin import Admin from flask_cors import cross_origin from flask_login import current_user -import flask_profiler from sentry_sdk.integrations.flask import FlaskIntegration from app import paddle_utils @@ -89,7 +89,7 @@ def create_app() -> Flask: "username": "admin", "password": FLASK_PROFILER_PASSWORD, }, - "ignore": ["^/static/.*"], + "ignore": ["^/static/.*", "/git", "/exception" ], } flask_profiler.init_app(app) From 6dd782733048a289885fb60675369c4ce69ffbd3 Mon Sep 17 00:00:00 2001 From: Son NK Date: Wed, 1 Jan 2020 23:22:34 +0100 Subject: [PATCH 5/5] fix formatting --- server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.py b/server.py index eac981ac..605d28c4 100644 --- a/server.py +++ b/server.py @@ -89,7 +89,7 @@ def create_app() -> Flask: "username": "admin", "password": FLASK_PROFILER_PASSWORD, }, - "ignore": ["^/static/.*", "/git", "/exception" ], + "ignore": ["^/static/.*", "/git", "/exception"], } flask_profiler.init_app(app)