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.helper.module import ModuleHelper
from app.helper.sites import SitesHelper
from app.log import logger
from app.schemas.types import SystemConfigKey
from app.utils.object import ObjectUtils
@ -23,6 +24,7 @@ class PluginManager(metaclass=Singleton):
_config_key: str = "plugin.%s"
def __init__(self):
self.siteshelper = SitesHelper()
self.init_config()
def init_config(self):
@ -196,6 +198,10 @@ class PluginManager(metaclass=Singleton):
conf.update({"state": plugin_obj.get_state()})
else:
conf.update({"state": False})
# 权限
if hasattr(plugin, "auth_level"):
if self.siteshelper.auth_level < plugin.auth_level:
continue
# 名称
if hasattr(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
# 可使用的用户级别
auth_level = 2
auth_level = 1
# 私有属性
_enabled = False

View File

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

View File

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

View File

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

View File

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

File diff suppressed because one or more lines are too long