Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
flucont committed Sep 24, 2022
1 parent 5bd1670 commit 8946b4f
Show file tree
Hide file tree
Showing 8 changed files with 132 additions and 66 deletions.
2 changes: 1 addition & 1 deletion app/script/convert.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash

Linux_Version="7.9.4"
Windows_Version="7.6.0"
Windows_Version="7.7.0"

FILES=(
public/install/src/panel6.zip
Expand Down
Binary file modified public/install/src/panel6.zip
Binary file not shown.
Binary file modified public/install/update/LinuxPanel-7.9.4.zip
Binary file not shown.
Binary file not shown.
122 changes: 122 additions & 0 deletions wiki/files/win/PluginLoader.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#coding: utf-8
import public,os,sys,json

#获取插件列表(0/1)
def get_plugin_list(force = 0):
api_root_url = 'https://api.bt.cn'
api_url = api_root_url+ '/wpanel/get_plugin_list'
cache_file = 'data/plugin_list.json'

if force==0 and os.path.exists(cache_file):
jsonData = public.readFile(cache_file)
softList = json.loads(jsonData)
else:
try:
jsonData = public.HttpGet(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(cache_file, jsonData)
return softList

#获取授权状态() 返回:0.免费版 1.专业版 2.企业版 -1.获取失败
def get_auth_state():
try:
softList = get_plugin_list()
if softList['ltd'] > -1:
return 2
elif softList['pro'] > -1:
return 1
else:
return 0
except:
return -1

#执行插件方法(插件名,方法名,参数)
def plugin_run(plugin_name, def_name, args):
if not plugin_name or not def_name: return public.returnMsg(False,'插件名称和插件方法名称不能为空!')
if not path_check(plugin_name) or not path_check(def_name): return public.returnMsg(False,'插件名或方法名不能包含特殊符号!')
p_path = public.get_plugin_path(plugin_name)
if not os.path.exists(p_path + '/index.php') and not os.path.exists(p_path + '/%s_main.py' % plugin_name): return public.returnMsg(False,'插件不存在!')

is_php = os.path.exists(p_path + '/index.php')
if not is_php:
sys.path.append(p_path)
plugin_main = __import__(plugin_name + '_main')
try:
if sys.version_info[0] == 2:
reload(plugin_main)
else:
from imp import reload
reload(plugin_main)
except:
pass
plu = eval('plugin_main.' + plugin_name + '_main()')
if not hasattr(plu, def_name):
return public.returnMsg(False,'在[%s]插件中找不到[%s]方法' % (plugin_name,def_name))

if 'plugin_get_object' in args and args.plugin_get_object == 1:
if not is_php:
return getattr(plu, def_name)
else:
return None
else:
if not is_php:
data = eval('plu.' + def_name + '(args)')
else:
import panelPHP
args.s = def_name
args.name = plugin_name
data = panelPHP.panelPHP(plugin_name).exec_php_script(args)
return data

#执行模块方法(模块名,方法名,参数)
def module_run(mod_name, def_name, args):
if not mod_name or not def_name: return public.returnMsg(False,'模块名称和模块方法名称不能为空!')
if not path_check(mod_name) or not path_check(def_name): return public.returnMsg(False,'模块名或方法名不能包含特殊符号!')

if 'model_index' in args:
if args.model_index:
mod_file = "{}/{}Model/{}Model.py".format(public.get_class_path(),args.model_index,mod_name)
else:
mod_file = "{}/projectModel/{}Model.py".format(public.get_class_path(),mod_name)
else:
module_list = get_module_list()
for module_dir in module_list:
mod_file = "{}/{}/{}Model.py".format(public.get_class_path(),module_dir,mod_name)
if os.path.exists(mod_file): break

if not os.path.exists(mod_file):
return public.returnMsg(False,'模块[%s]不存在' % mod_name)

def_object = public.get_script_object(mod_file)
if not def_object: return public.returnMsg(False,'模块[%s]不存在!' % mod_name)
try:
run_object = getattr(def_object.main(),def_name,None)
except:
return public.returnMsg(False,'模块入口实例化失败' % mod_name)
if not run_object: return public.returnMsg(False,'在[%s]模块中找不到[%s]方法' % (mod_name,def_name))
if 'module_get_object' in args and args.module_get_object == 1:
return run_object
result = run_object(args)
return result

#获取模块文件夹列表
def get_module_list():
list = []
class_path = public.get_class_path()
f_list = os.listdir(class_path)
for fname in f_list:
f_path = class_path+'/'+fname
if os.path.isdir(f_path) and len(fname) > 6 and fname.find('.') == -1 and fname.find('Model') != -1:
list.append(fname)
return list

#检查路径是否合法
def path_check(path):
list = ["./","..",",",";",":","?","'","\"","<",">","|","\\","\n","\r","\t","\b","\a","\f","\v","*","%","&","$","#","@","!","~","`","^","(",")","+","=","{","}","[","]"]
for i in path:
if i in list:
return False
return True
60 changes: 0 additions & 60 deletions wiki/files/win/pluginAuth.py

This file was deleted.

6 changes: 5 additions & 1 deletion wiki/update.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

- 全局搜索替换 https://api.bt.cn => http://www.example.com

- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py、ipsModel.py)
- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除clearModel.py、scanningModel.py、ipsModel.py)

- 全局搜索替换 http://download.bt.cn/install/update6.sh => http://www.example.com/install/update6.sh

Expand Down Expand Up @@ -67,6 +67,10 @@

"check_panel_msg": check_panel_msg,

PluginLoader.daemon_task()

PluginLoader.daemon_panel()

- 去除首页广告:BTPanel/static/js/index.js 文件删除最下面index.recommend_paid_version()这一行

- 去除内页广告:BTPanel/templates/default/layout.html 删除getPaymentStatus();这一行
Expand Down
8 changes: 4 additions & 4 deletions wiki/updatewin.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@

Windows版宝塔由于加密文件太多,无法全部解密,因此无法做到全开源。

- 删除pluginAuth.cp38-win_amd64.pyd,将win/pluginAuth.py复制到class文件夹
- 删除PluginLoader.pyd,将win/PluginLoader.py复制到class文件夹

- 全局搜索替换 https://api.bt.cn => http://www.example.com

- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/
- 全局搜索替换 https://www.bt.cn/api/ => http://www.example.com/api/(需排除ipsModel.py)

- 全局搜索替换 http://www.bt.cn/api/ => http://www.example.com/api/

Expand Down Expand Up @@ -50,7 +50,7 @@ Windows版宝塔由于加密文件太多,无法全部解密,因此无法做

- 去除面板日志上报:script/site_task.py 文件

删除最下面 logs_analysis() 这1行
- 删除最下面 logs_analysis() 这1行

- 去除首页广告:BTPanel/static/js/index.js 文件删除最下面index.recommend_paid_version()这一行

Expand All @@ -72,5 +72,5 @@ Windows版宝塔由于加密文件太多,无法全部解密,因此无法做

删除 if not os.path.exists(self.sitePath + '/.htaccess') 这一行


- [可选]关闭自动生成访问日志:在 BTPanel/\_\_init\_\_.py 删除public.write_request_log()这一行

0 comments on commit 8946b4f

Please sign in to comment.