mirror of
https://github.com/aaPanel/aaPanel.git
synced 2026-08-17 21:25:47 +02:00
Since version 7.7.0, we recommend yours update python to 3.12. [+] Using nginx technology to load static files improves access speed [+] Refactor homepage, website, FTP, and database using vue3 [+] Table loading changed to skeleton screen [+] Add Website statistics-v2 professional plug-in [+] Add Home page - top 5 resource occupancy [+] Add protection for Files management (requires Tamper-proof for Enterprise 3.7) [+] Website, FTP, Databases page add program status [+] Add FTP log analysis (only supports Centos) [+] Add password-free login to phpMyAdmin [+] Add Proxy Project in Website (Supported when web service uses Nginx) [+] Add WP Toolkit (Pro version only) [+] Redesigned Docker module [+] Add WP Toolkit Protection [+] Add WP Toolkit Backup and Restore [+] Add WP Toolkit Migrated [+] Add WP Toolkit Clone site (supports new domain and subdomain) [+] Add WP Toolkit Create site from backup of other panel [+] Add WP Toolkit support for Cron automatic backup (only save Local disk) [+] Add WP Toolkit operation log [+] Add Integrity check for WP Toolkit [+] Add WP Toolkit plug-in management and themes management [*] Optimize phpMyAdmin formula access method [*] Optimize Home page PHP display problem [*] Optimize jump to the login interface after the login expires [*] Optimize automatic renewal of SSL at some times [*] Optimize Let's Encrypt to increase application success rate [-] Fix Logs Audit cannot be opened [-] Fix apache URL rewrite issue [-] Fix phpmyadmin installation problem [-] Fix the problem that some servers cannot install software [-] Fix upload file error [-] Fix left menu hiding problem [-] Fix aaPanel Mobile QR code display problem [-] Fix problem that third-party plug-ins are not displayed in the App Store [-] Fix issue where the menu bar is blank when opening new tabs [-] Fixed panel not being accessible in some cases [-] Fix the issue where Curl warning caused the inability to apply for SSL [-] Fix Quota issues for Website, FTP, Databases [-] Fix file interface display problem on mobile terminal
98 lines
3.1 KiB
Python
98 lines
3.1 KiB
Python
#coding: utf-8
|
|
# +-------------------------------------------------------------------
|
|
# | aaPanel
|
|
# +-------------------------------------------------------------------
|
|
# | Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved.
|
|
# +-------------------------------------------------------------------
|
|
# | Author: hwliang <hwl@aapanel.com>
|
|
# +-------------------------------------------------------------------
|
|
|
|
#+--------------------------------------------------------------------
|
|
#| 插件认证模块
|
|
#+--------------------------------------------------------------------
|
|
|
|
|
|
import public
|
|
import PluginLoader
|
|
|
|
class Plugin:
|
|
__plugin_name = None
|
|
__is_php = False
|
|
__dict__ = None
|
|
__obj_dict = {}
|
|
|
|
|
|
def __init__(self,init_plugin_name = None):
|
|
'''
|
|
@name 实例化插件对像
|
|
@author hwliang<2021-06-15>
|
|
@param init_plugin_name<string> 插件名称
|
|
@return Plguin<object>
|
|
'''
|
|
if not init_plugin_name is False:
|
|
if not init_plugin_name:
|
|
raise ValueError('参数错误,plugin_name少需要一个有效参数')
|
|
self.__plugin_name = init_plugin_name
|
|
|
|
def get_plugin_list(self,upgrade_force = False):
|
|
'''
|
|
@name 获取插件列表
|
|
@author hwliang<2021-06-15>
|
|
@param upgrade_force<bool> 是否强制重新获取列表
|
|
@return dict
|
|
'''
|
|
force = 1 if upgrade_force else 0
|
|
return PluginLoader.get_plugin_list(force)
|
|
|
|
|
|
def exec_fun(self,get_args,def_name = None):
|
|
'''
|
|
@name 执行指定方法
|
|
@author hwliang<2021-06-16>
|
|
@param def_name<string> 方法名称
|
|
@param get_args<dict_obj> POST/GET参数对像
|
|
@return mixed
|
|
'''
|
|
if not def_name:
|
|
def_name = get_args.get("s","")
|
|
else:
|
|
if not 's' in get_args:
|
|
get_args.s = def_name
|
|
|
|
res = PluginLoader.plugin_run(self.__plugin_name,def_name,get_args)
|
|
if isinstance(res,dict):
|
|
if 'status' in res and res['status'] == False and 'msg' in res:
|
|
if isinstance(res['msg'],str):
|
|
if res['msg'].find('Traceback ') != -1:
|
|
raise public.PanelError(res['msg'])
|
|
return res
|
|
|
|
def get_fun(self,def_name):
|
|
'''
|
|
@name 获取函对像
|
|
@author hwliang<2021-06-28>
|
|
@param def_name<string> 函数名称
|
|
@return func_object
|
|
'''
|
|
if def_name in self.__obj_dict.keys():
|
|
return self.__obj_dict[def_name]
|
|
get_args = public.dict_obj()
|
|
get_args.plugin_get_object = 1
|
|
return PluginLoader.plugin_run(self.__plugin_name,def_name,get_args)
|
|
|
|
|
|
def isdef(self,def_name):
|
|
'''
|
|
@name 指定方法是否存在
|
|
@author hwliang<2021-06-16>
|
|
@param def_name<string> 方法名称
|
|
@return bool
|
|
'''
|
|
if self.__is_php: return True
|
|
self.__obj_dict[def_name] = self.get_fun(def_name)
|
|
return True if self.__obj_dict[def_name] else False
|
|
|
|
def __dir__(self):
|
|
return ''
|
|
|