Server IP : 172.67.216.182 / Your IP : 162.158.162.72 Web Server : Apache System : Linux krdc-ubuntu-s-2vcpu-4gb-amd-blr1-01.localdomain 5.15.0-142-generic #152-Ubuntu SMP Mon May 19 10:54:31 UTC 2025 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /www/server/panel/class_v2/ |
Upload File : |
#coding: utf-8 # +------------------------------------------------------------------- # | aaPanel # +------------------------------------------------------------------- # | Copyright (c) 2015-2099 aaPanel(www.aapanel.com) All rights reserved. # +------------------------------------------------------------------- # | Author: hwliang <[email protected]> # +------------------------------------------------------------------- #+-------------------------------------------------------------------- #| 插件认证模块 #+-------------------------------------------------------------------- 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 ''