libentry 1.28.5__py3-none-any.whl → 1.29__py3-none-any.whl
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.
- libentry/mcp/service.py +44 -5
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/METADATA +1 -1
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/RECORD +8 -8
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/LICENSE +0 -0
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/WHEEL +0 -0
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/entry_points.txt +0 -0
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/top_level.txt +0 -0
- {libentry-1.28.5.dist-info → libentry-1.29.dist-info}/zip-safe +0 -0
libentry/mcp/service.py
CHANGED
@@ -812,8 +812,11 @@ class Route:
|
|
812
812
|
|
813
813
|
class FlaskServer(Flask):
|
814
814
|
|
815
|
-
def __init__(self, service):
|
815
|
+
def __init__(self, service, options: Dict[str, Any]):
|
816
816
|
super().__init__(__name__)
|
817
|
+
self.options = options
|
818
|
+
self.access_control_allow_origin = self.options.get("access_control_allow_origin")
|
819
|
+
self.access_control_allow_methods = self.options.get("access_control_allow_methods")
|
817
820
|
|
818
821
|
self.service_routes = {}
|
819
822
|
self.builtin_routes = {}
|
@@ -876,10 +879,20 @@ class FlaskServer(Flask):
|
|
876
879
|
return routes
|
877
880
|
|
878
881
|
def ok(self, body: Union[str, Iterable[str], None], mimetype: str):
|
879
|
-
|
882
|
+
response = self.response_class(body, status=200, mimetype=mimetype)
|
883
|
+
if self.access_control_allow_origin:
|
884
|
+
response.headers["Access-Control-Allow-Origin"] = "*"
|
885
|
+
if self.access_control_allow_methods:
|
886
|
+
response.headers["Access-Control-Allow-Methods"] = "GET, POST"
|
887
|
+
return response
|
880
888
|
|
881
889
|
def error(self, body: str, mimetype=MIME.plain.value):
|
882
|
-
|
890
|
+
response = self.response_class(body, status=500, mimetype=mimetype)
|
891
|
+
if self.access_control_allow_origin:
|
892
|
+
response.headers["Access-Control-Allow-Origin"] = "*"
|
893
|
+
if self.access_control_allow_methods:
|
894
|
+
response.headers["Access-Control-Allow-Methods"] = "GET, POST"
|
895
|
+
return response
|
883
896
|
|
884
897
|
@api.get("/")
|
885
898
|
def index(self, name: str = None):
|
@@ -937,7 +950,7 @@ class GunicornApplication(BaseApplication):
|
|
937
950
|
service = self._create_service(self.service_type, self.service_config)
|
938
951
|
logger.info("Service initialized.")
|
939
952
|
|
940
|
-
return FlaskServer(service)
|
953
|
+
return FlaskServer(service, self.options)
|
941
954
|
|
942
955
|
@staticmethod
|
943
956
|
def _create_service(service_type, service_config):
|
@@ -1014,6 +1027,21 @@ class RunServiceConfig(BaseModel):
|
|
1014
1027
|
description="SSL certificate file.",
|
1015
1028
|
default=None
|
1016
1029
|
)
|
1030
|
+
access_control_allow_origin: Optional[str] = Field(
|
1031
|
+
title="Access control allow origin",
|
1032
|
+
description="Access control allow origin.",
|
1033
|
+
default="*"
|
1034
|
+
)
|
1035
|
+
access_control_allow_methods: Optional[str] = Field(
|
1036
|
+
title="Access control allow methods",
|
1037
|
+
description="Access control allow methods.",
|
1038
|
+
default="GET, POST"
|
1039
|
+
)
|
1040
|
+
name: Optional[str] = Field(
|
1041
|
+
title="服务实例名称",
|
1042
|
+
description="服务实例名称,会在进程命令行中显示。",
|
1043
|
+
default=None
|
1044
|
+
)
|
1017
1045
|
|
1018
1046
|
|
1019
1047
|
def run_service(
|
@@ -1063,6 +1091,14 @@ def run_service(
|
|
1063
1091
|
for name, value in kwargs.items():
|
1064
1092
|
setattr(run_config, name, value)
|
1065
1093
|
|
1094
|
+
if run_config.name is None:
|
1095
|
+
name = service_type.__name__
|
1096
|
+
module = service_type.__module__
|
1097
|
+
if module != "builtins":
|
1098
|
+
name = f"{module}.{name}"
|
1099
|
+
run_config.name = name
|
1100
|
+
run_config.name = f"{run_config.name} ({run_config.host}:{run_config.port})"
|
1101
|
+
|
1066
1102
|
logger.info("Starting gunicorn server.")
|
1067
1103
|
|
1068
1104
|
def ssl_context(config, _default_ssl_context_factory):
|
@@ -1086,7 +1122,10 @@ def run_service(
|
|
1086
1122
|
"keyfile": run_config.keyfile,
|
1087
1123
|
"certfile": run_config.certfile,
|
1088
1124
|
"worker_class": run_config.worker_class,
|
1089
|
-
"ssl_context": ssl_context
|
1125
|
+
"ssl_context": ssl_context,
|
1126
|
+
"access_control_allow_origin": run_config.access_control_allow_origin,
|
1127
|
+
"access_control_allow_methods": run_config.access_control_allow_methods,
|
1128
|
+
"proc_name": run_config.name,
|
1090
1129
|
}
|
1091
1130
|
for name, value in options.items():
|
1092
1131
|
logger.info(f"Option {name}: {value}")
|
@@ -13,7 +13,7 @@ libentry/utils.py,sha256=vCm6UyAlibnPOlPJHZO57u3TXhw5PZmGM5_vBAPUnB4,1981
|
|
13
13
|
libentry/mcp/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
|
14
14
|
libentry/mcp/api.py,sha256=hhveOjDYhWiEEq3C7wSAOdpbPn9JP1T1CW3QYWrLHa4,3679
|
15
15
|
libentry/mcp/client.py,sha256=_O-O6OETwHidhiFmg7P01NIrVhHgEetwFeFfJNqRt6M,24899
|
16
|
-
libentry/mcp/service.py,sha256=
|
16
|
+
libentry/mcp/service.py,sha256=k7kDAEOq5kUQ1Jz9YsIBIPAage_Ub-jjkX59DzQznmE,42082
|
17
17
|
libentry/mcp/types.py,sha256=aAoVO4jjqEvDzNneuZapmRYonLLnGsbcLoypVyRNNYg,12389
|
18
18
|
libentry/service/__init__.py,sha256=1oLL20yLB1GL9IbFiZD8OReDqiCpFr-yetIR6x1cNkI,23
|
19
19
|
libentry/service/common.py,sha256=OVaW2afgKA6YqstJmtnprBCqQEUZEWotZ6tHavmJJeU,42
|
@@ -22,10 +22,10 @@ libentry/service/list.py,sha256=ElHWhTgShGOhaxMUEwVbMXos0NQKjHsODboiQ-3AMwE,1397
|
|
22
22
|
libentry/service/running.py,sha256=FrPJoJX6wYxcHIysoatAxhW3LajCCm0Gx6l7__6sULQ,5105
|
23
23
|
libentry/service/start.py,sha256=mZT7b9rVULvzy9GTZwxWnciCHgv9dbGN2JbxM60OMn4,1270
|
24
24
|
libentry/service/stop.py,sha256=wOpwZgrEJ7QirntfvibGq-XsTC6b3ELhzRW2zezh-0s,1187
|
25
|
-
libentry-1.
|
26
|
-
libentry-1.
|
27
|
-
libentry-1.
|
28
|
-
libentry-1.
|
29
|
-
libentry-1.
|
30
|
-
libentry-1.
|
31
|
-
libentry-1.
|
25
|
+
libentry-1.29.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
26
|
+
libentry-1.29.dist-info/METADATA,sha256=z588Zlo18mTULlQQLoeNEKpVVKONPW3EeAqzK2AP47Q,1133
|
27
|
+
libentry-1.29.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
28
|
+
libentry-1.29.dist-info/entry_points.txt,sha256=1v_nLVDsjvVJp9SWhl4ef2zZrsLTBtFWgrYFgqvQBgc,61
|
29
|
+
libentry-1.29.dist-info/top_level.txt,sha256=u2uF6-X5fn2Erf9PYXOg_6tntPqTpyT-yzUZrltEd6I,9
|
30
|
+
libentry-1.29.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
31
|
+
libentry-1.29.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|