Refactor(plugins): Use pathlib.relative_to for robust plugin path resolution

This commit is contained in:
Aqr-K
2025-09-30 20:03:08 +08:00
parent 751d627ead
commit fa2b720e92

View File

@@ -360,15 +360,14 @@ class PluginManager(metaclass=Singleton):
try: try:
plugins_root = settings.ROOT_PATH / "app" / "plugins" plugins_root = settings.ROOT_PATH / "app" / "plugins"
# 确保修改的文件在 plugins 目录下 # 确保修改的文件在 plugins 目录下
if plugins_root not in event_path.parents: if not event_path.is_relative_to(plugins_root):
return None return None
# 找到插件的根目录 try:
plugin_dir = event_path.parent plugin_dir_name = event_path.relative_to(plugins_root).parts[0]
while plugin_dir.parent != plugins_root: plugin_dir = plugins_root / plugin_dir_name
plugin_dir = plugin_dir.parent except (ValueError, IndexError):
if plugin_dir == plugins_root: # 防止无限循环 return None
break
init_file = plugin_dir / "__init__.py" init_file = plugin_dir / "__init__.py"
if not init_file.exists(): if not init_file.exists():