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.
Files changed (77) hide show
  1. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/PKG-INFO +2 -2
  2. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/__init__.py +1 -1
  3. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/setting/__init__.py +1 -1
  4. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/signature.py +13 -2
  5. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/PKG-INFO +2 -2
  6. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/requires.txt +1 -1
  7. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/README.md +0 -0
  8. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/app.py +0 -0
  9. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/db/__init__.py +0 -0
  10. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/db/datasource.py +0 -0
  11. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/db/executor.py +0 -0
  12. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/export_data/__init__.py +0 -0
  13. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/export_data/data_download_handler.py +0 -0
  14. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/log/access_log_handler.py +0 -0
  15. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/access_log.py +0 -0
  16. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/base_model.py +0 -0
  17. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/parameterized_query.py +0 -0
  18. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/resource_param_template.py +0 -0
  19. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/response_result.py +0 -0
  20. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/user.py +0 -0
  21. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/model/user_limit_policy.py +0 -0
  22. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/access_log_service.py +0 -0
  23. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/base_service.py +0 -0
  24. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/service/resource_param_template_service.py +0 -0
  25. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/setup/__init__.py +0 -0
  26. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/signals.py +0 -0
  27. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/static/swagger.py +0 -0
  28. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/__init__.py +0 -0
  29. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/__init__.py +0 -0
  30. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/cache.py +0 -0
  31. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/sql_injection.py +0 -0
  32. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/decorator/swagger.py +0 -0
  33. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/dify_utils.py +0 -0
  34. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/file/file_exporter.py +0 -0
  35. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/file/file_utils.py +0 -0
  36. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/fs_util.py +0 -0
  37. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/helpers.py +0 -0
  38. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
  39. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/__init__.py +0 -0
  40. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/consecutive/consecutive_limiter_handler.py +0 -0
  41. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/consecutive/redis_consecutive_limiter.py +0 -0
  42. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/limit_util.py +0 -0
  43. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req/rate_limiter_handler.py +0 -0
  44. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req/redis_rate_limiter.py +0 -0
  45. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req_count/count_limiter_handler.py +0 -0
  46. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/limit/req_count/redis_count_limiter.py +0 -0
  47. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/__init__.py +0 -0
  48. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/aliyun_oss.py +0 -0
  49. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
  50. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/oss/minio_oss.py +0 -0
  51. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/redis/redis_helper.py +0 -0
  52. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/request/request.py +0 -0
  53. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/__init__.py +0 -0
  54. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/body_canonical.py +0 -0
  55. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/sign/sign_main.py +0 -0
  56. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
  57. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
  58. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/task/__init__.py +0 -0
  59. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/task/task_helper.py +0 -0
  60. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/utils/thread/thread_utils.py +0 -0
  61. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask/wsgi.py +0 -0
  62. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/SOURCES.txt +0 -0
  63. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/dependency_links.txt +0 -0
  64. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/lesscode_flask.egg-info/top_level.txt +0 -0
  65. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/__init__.py +0 -0
  66. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/clickhouse.py +0 -0
  67. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/dameng.py +0 -0
  68. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/elasticsearch.py +0 -0
  69. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/kingbase.py +0 -0
  70. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/mysql.py +0 -0
  71. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/query_runner/pg.py +0 -0
  72. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/settings/__init__.py +0 -0
  73. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/settings/helpers.py +0 -0
  74. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/utils/__init__.py +0 -0
  75. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/redash/utils/requests_session.py +0 -0
  76. {lesscode_flask-0.2.114 → lesscode_flask-0.2.116}/setup.cfg +0 -0
  77. {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.114
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.95
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
@@ -1,4 +1,4 @@
1
- __version__ = "0.2.114"
1
+ __version__ = "0.2.116"
2
2
 
3
3
  import functools
4
4
  import logging
@@ -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 white_item and request_path.startswith(white_item):
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.114
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.95
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
@@ -1,5 +1,5 @@
1
1
  Flask==3.0.3
2
- lesscode-utils==0.0.95
2
+ lesscode-utils==0.0.96
3
3
  Flask-Login==0.6.3
4
4
  redis==5.1.1
5
5
  flask-swagger-ui==4.11.1