btcloud/wiki/files/win/pluginAuth.py

61 lines
1.9 KiB
Python
Raw Normal View History

2022-06-14 03:50:39 -04:00
#coding: utf-8
import public,os,sys,json
class Plugin:
name = False
p_path = None
is_php = False
plu = None
__api_root_url = 'https://api.bt.cn'
__api_url = __api_root_url+ '/wpanel/get_plugin_list'
__cache_file = 'data/plugin_list.json'
def __init__(self, name):
self.name = name
self.p_path = public.get_plugin_path(name)
self.is_php = os.path.exists(self.p_path + '/index.php')
def get_plugin_list(self, force = False):
if force==False and os.path.exists(self.__cache_file):
jsonData = public.readFile(self.__cache_file)
softList = json.loads(jsonData)
else:
try:
jsonData = public.HttpGet(self.__api_url)
except Exception as ex:
raise public.error_conn_cloud(str(ex))
softList = json.loads(jsonData)
if type(softList)!=dict or 'list' not in softList: raise Exception('云端插件列表获取失败')
public.writeFile(self.__cache_file, jsonData)
return softList
def isdef(self, fun):
if not self.is_php:
sys.path.append(self.p_path)
plugin_main = __import__(self.name + '_main')
try:
from imp import reload
reload(plugin_main)
except:
pass
self.plu = eval('plugin_main.' + self.name + '_main()')
if not hasattr(self.plu, fun):
if self.name == 'btwaf' and fun == 'index':
raise Exception("未购买")
return False
return True
def exec_fun(self, args):
fun = args.s
if not self.is_php:
plu = self.plu
data = eval('plu.' + fun + '(args)')
else:
import panelPHP
args.s = fun
args.name = self.name
data = panelPHP.panelPHP(self.name).exec_php_script(args)
return data