This commit is contained in:
jxxghp 2023-09-07 16:05:48 +08:00
parent 7efcde89b9
commit a9db0f6bbf
9 changed files with 144 additions and 6 deletions

View File

@ -3,6 +3,7 @@ from typing import List, Any, Dict, Tuple
from app.db.systemconfig_oper import SystemConfigOper from app.db.systemconfig_oper import SystemConfigOper
from app.helper.module import ModuleHelper from app.helper.module import ModuleHelper
from app.helper.sites import SitesHelper
from app.log import logger from app.log import logger
from app.schemas.types import SystemConfigKey from app.schemas.types import SystemConfigKey
from app.utils.object import ObjectUtils from app.utils.object import ObjectUtils
@ -23,6 +24,7 @@ class PluginManager(metaclass=Singleton):
_config_key: str = "plugin.%s" _config_key: str = "plugin.%s"
def __init__(self): def __init__(self):
self.siteshelper = SitesHelper()
self.init_config() self.init_config()
def init_config(self): def init_config(self):
@ -196,6 +198,10 @@ class PluginManager(metaclass=Singleton):
conf.update({"state": plugin_obj.get_state()}) conf.update({"state": plugin_obj.get_state()})
else: else:
conf.update({"state": False}) conf.update({"state": False})
# 权限
if hasattr(plugin, "auth_level"):
if self.siteshelper.auth_level < plugin.auth_level:
continue
# 名称 # 名称
if hasattr(plugin, "plugin_name"): if hasattr(plugin, "plugin_name"):
conf.update({"plugin_name": plugin.plugin_name}) conf.update({"plugin_name": plugin.plugin_name})

View File

@ -0,0 +1,132 @@
from typing import Any, List, Dict, Tuple
from app.plugins import _PluginBase
class BrushFlow(_PluginBase):
# 插件名称
plugin_name = "站点刷流"
# 插件描述
plugin_desc = "自动托管刷流,将会默认提高对应站点的种子刷新频率。"
# 插件图标
plugin_icon = "fileupload.png"
# 主题色
plugin_color = "#EC5665"
# 插件版本
plugin_version = "1.0"
# 插件作者
plugin_author = "jxxghp"
# 作者主页
author_url = "https://github.com/jxxghp"
# 插件配置项ID前缀
plugin_config_prefix = "brushflow_"
# 加载顺序
plugin_order = 21
# 可使用的用户级别
auth_level = 3
# 私有属性
_enabled = False
_notify = True
_onlyonce = False
def init_plugin(self, config: dict = None):
if config:
self._enabled = config.get("enabled")
self._notify = config.get("notify")
self._onlyonce = config.get("onlyonce")
def get_state(self) -> bool:
return self._enabled
@staticmethod
def get_command() -> List[Dict[str, Any]]:
pass
def get_api(self) -> List[Dict[str, Any]]:
pass
def get_form(self) -> Tuple[List[dict], Dict[str, Any]]:
"""
拼装插件配置页面需要返回两块数据1页面配置2数据结构
"""
request_options = ["POST", "GET"]
return [
{
'component': 'VForm',
'content': [
{
'component': 'VRow',
'content': [
{
'component': 'VCol',
'props': {
'cols': 12,
'md': 4
},
'content': [
{
'component': 'VSwitch',
'props': {
'model': 'enabled',
'label': '启用插件',
}
}
]
},
{
'component': 'VCol',
'props': {
'cols': 12,
'md': 4
},
'content': [
{
'component': 'VSwitch',
'props': {
'model': 'enabled',
'label': '发送通知',
}
}
]
},
{
'component': 'VCol',
'props': {
'cols': 12,
'md': 4
},
'content': [
{
'component': 'VSwitch',
'props': {
'model': 'onlyonce',
'label': '立即运行一次',
}
}
]
}
]
},
{
'component': 'VRow',
'content': [
]
},
]
}
], {
"enabled": False,
"notify": True,
"onlyonce": False,
}
def get_page(self) -> List[dict]:
pass
def stop_service(self):
"""
退出插件
"""
pass

View File

@ -31,7 +31,7 @@ class MessageForward(_PluginBase):
# 加载顺序 # 加载顺序
plugin_order = 16 plugin_order = 16
# 可使用的用户级别 # 可使用的用户级别
auth_level = 2 auth_level = 1
# 私有属性 # 私有属性
_enabled = False _enabled = False

View File

@ -31,7 +31,7 @@ class NAStoolSync(_PluginBase):
# 加载顺序 # 加载顺序
plugin_order = 15 plugin_order = 15
# 可使用的用户级别 # 可使用的用户级别
auth_level = 2 auth_level = 1
# 私有属性 # 私有属性
_transferhistory = None _transferhistory = None

View File

@ -37,7 +37,7 @@ class SpeedLimiter(_PluginBase):
# 加载顺序 # 加载顺序
plugin_order = 11 plugin_order = 11
# 可使用的用户级别 # 可使用的用户级别
auth_level = 2 auth_level = 1
# 私有属性 # 私有属性
_scheduler = None _scheduler = None

View File

@ -34,7 +34,7 @@ class SyncDownloadFiles(_PluginBase):
# 加载顺序 # 加载顺序
plugin_order = 20 plugin_order = 20
# 可使用的用户级别 # 可使用的用户级别
auth_level = 2 auth_level = 1
# 私有属性 # 私有属性
_enabled = False _enabled = False

View File

@ -26,7 +26,7 @@ class WebHook(_PluginBase):
# 加载顺序 # 加载顺序
plugin_order = 14 plugin_order = 14
# 可使用的用户级别 # 可使用的用户级别
auth_level = 2 auth_level = 1
# 私有属性 # 私有属性
_webhook_url = None _webhook_url = None

File diff suppressed because one or more lines are too long