lesscode-flask 0.2.114__tar.gz → 0.2.116__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/PKG-INFO +2 -2
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/__init__.py +1 -1
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/setting/__init__.py +1 -1
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/signature.py +13 -2
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/PKG-INFO +2 -2
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/requires.txt +1 -1
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/README.md +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/app.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/db/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/db/datasource.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/db/executor.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/export_data/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/export_data/data_download_handler.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/log/access_log_handler.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/access_log.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/base_model.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/parameterized_query.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/resource_param_template.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/response_result.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/user.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/user_limit_policy.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/access_log_service.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/base_service.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/resource_param_template_service.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/setup/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/signals.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/static/swagger.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/cache.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/sql_injection.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/swagger.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/dify_utils.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/file/file_exporter.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/file/file_utils.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/fs_util.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/helpers.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/consecutive/consecutive_limiter_handler.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/consecutive/redis_consecutive_limiter.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/limit_util.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req/rate_limiter_handler.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req/redis_rate_limiter.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req_count/count_limiter_handler.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req_count/redis_count_limiter.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/aliyun_oss.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/minio_oss.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/redis/redis_helper.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/request/request.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/body_canonical.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/sign_main.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/task/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/task/task_helper.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/thread/thread_utils.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/wsgi.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/SOURCES.txt +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/dependency_links.txt +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/top_level.txt +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/clickhouse.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/dameng.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/elasticsearch.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/kingbase.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/mysql.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/pg.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/settings/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/settings/helpers.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/utils/__init__.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/utils/requests_session.py +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/setup.cfg +0 -0
- {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lesscode-flask
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.116
|
|
4
4
|
Summary: lesscode-flask 是基于flask的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
|
|
5
5
|
Home-page: https://lesscode-flask
|
|
6
6
|
Author: Chao.yy
|
|
@@ -11,7 +11,7 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.9
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
Requires-Dist: Flask==3.0.3
|
|
14
|
-
Requires-Dist: lesscode-utils==0.0.
|
|
14
|
+
Requires-Dist: lesscode-utils==0.0.96
|
|
15
15
|
Requires-Dist: Flask-Login==0.6.3
|
|
16
16
|
Requires-Dist: redis==5.1.1
|
|
17
17
|
Requires-Dist: flask-swagger-ui==4.11.1
|
|
@@ -100,7 +100,7 @@ class BaseConfig:
|
|
|
100
100
|
SIGN_NONCE_ENABLE: bool = True
|
|
101
101
|
# nonce缓存时长(秒)
|
|
102
102
|
SIGN_NONCE_TTL_SEC: int = 300
|
|
103
|
-
#
|
|
103
|
+
# 签名白名单路径,普通配置按前缀匹配;带 * 时支持任意内容通配,例如 /a/*/b
|
|
104
104
|
SIGN_WHITE_LIST: list = [SWAGGER_URL, SWAGGER_API_URL, f"{ROUTE_PREFIX}/oauth/token", f"{ROUTE_PREFIX}/oauth/captcha"]
|
|
105
105
|
# 签名IP白名单(支持单IP或CIDR,命中后跳过签名校验)
|
|
106
106
|
SIGN_IP_WHITE_LIST: list = []
|
|
@@ -2,6 +2,7 @@ import hashlib
|
|
|
2
2
|
import hmac
|
|
3
3
|
import ipaddress
|
|
4
4
|
import logging
|
|
5
|
+
import re
|
|
5
6
|
import time
|
|
6
7
|
|
|
7
8
|
from flask import request
|
|
@@ -70,13 +71,23 @@ def _canonical_sign_content(timestamp: str, nonce: str) -> str:
|
|
|
70
71
|
return f"{method}\n{path}\n{query_string}\n{body_hash}\n{timestamp}\n{nonce}"
|
|
71
72
|
|
|
72
73
|
|
|
74
|
+
def _match_sign_white_path(request_path: str, white_item: str) -> bool:
|
|
75
|
+
white_path = (white_item or "").strip()
|
|
76
|
+
if not white_path:
|
|
77
|
+
return False
|
|
78
|
+
if "*" not in white_path:
|
|
79
|
+
return request_path.startswith(white_path)
|
|
80
|
+
pattern = re.escape(white_path).replace(r"\*", ".*")
|
|
81
|
+
return re.match(f"^{pattern}", request_path) is not None
|
|
82
|
+
|
|
83
|
+
|
|
73
84
|
def _in_sign_white_list(white_list: list) -> bool:
|
|
74
|
-
#
|
|
85
|
+
# 白名单匹配规则:普通配置按前缀匹配;带 * 时支持任意内容通配。
|
|
75
86
|
if not white_list:
|
|
76
87
|
return False
|
|
77
88
|
request_path = request.path or ""
|
|
78
89
|
for white_item in white_list:
|
|
79
|
-
if
|
|
90
|
+
if _match_sign_white_path(request_path, white_item):
|
|
80
91
|
return True
|
|
81
92
|
return False
|
|
82
93
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lesscode-flask
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.116
|
|
4
4
|
Summary: lesscode-flask 是基于flask的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
|
|
5
5
|
Home-page: https://lesscode-flask
|
|
6
6
|
Author: Chao.yy
|
|
@@ -11,7 +11,7 @@ Classifier: Operating System :: OS Independent
|
|
|
11
11
|
Requires-Python: >=3.9
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
Requires-Dist: Flask==3.0.3
|
|
14
|
-
Requires-Dist: lesscode-utils==0.0.
|
|
14
|
+
Requires-Dist: lesscode-utils==0.0.96
|
|
15
15
|
Requires-Dist: Flask-Login==0.6.3
|
|
16
16
|
Requires-Dist: redis==5.1.1
|
|
17
17
|
Requires-Dist: flask-swagger-ui==4.11.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/parameterized_query.py
RENAMED
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/resource_param_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/access_log_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/sql_injection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/file/file_exporter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/json/NotSortJSONProvider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/redis/redis_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/body_canonical.py
RENAMED
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/swagger/swagger_template.py
RENAMED
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/swagger/swagger_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/thread/thread_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|