Download bt-source/panel/class/wptoolkitModel/toolkitModel.py from SZFSPC/apple: direct link, hf CLI and curl.
- Browser
- Download file 29.1 kB
-
https://huggingface.co/spaces/SZFSPC/apple/resolve/main/bt-source/panel/class/wptoolkitModel/toolkitModel.py
- Command line
-
hf download hf://spaces/SZFSPC/apple/bt-source/panel/class/wptoolkitModel/toolkitModel.py
-
curl -L -o toolkitModel.py https://huggingface.co/spaces/SZFSPC/apple/resolve/main/bt-source/panel/class/wptoolkitModel/toolkitModel.py
29.1 kB
| import json | |
| import os | |
| from types import MethodType | |
| from flask import request | |
| from wptoolkitModel.base import wpbase | |
| import requests | |
| import panelSite | |
| import public_wp as public | |
| from wptoolkitModel import one_key_wp_v2, base | |
| class main(wpbase): | |
| def __init__(self, get=None): | |
| super(main, self).__init__(get) | |
| # 入口函数 处理dict_obj | |
| def api(self, get): | |
| query = request.args | |
| if not query.get("action"): | |
| return public.returnMsg(False, "参数错误") | |
| action = query['action'] | |
| get = public.to_dict_obj(vars(get)) | |
| method = getattr(self, action) | |
| try: | |
| return method(get) | |
| except public.HintException as e: | |
| return public.return_message(-1, 0, str(e)) | |
| # 新增站点 | |
| def AddWPSite(self, get): | |
| public.set_module_logs('wp_toolkit', 'AddWPSite', 1) | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().AddWPSite(get) | |
| # 重置Wordpress管理员账号密码 | |
| def reset_wp_password(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().reset_wp_password(get) | |
| # 检查Wordpress版本更新 | |
| def is_update(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().is_update(get) | |
| # 清除Wordpress Nginx fastcgi cache | |
| def purge_all_cache(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().purge_all_cache(get) | |
| # 设置Wordpress Nginx fastcgi cache | |
| def set_fastcgi_cache(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().set_fastcgi_cache(get) | |
| # 更新Wordpress到最新版本 | |
| def update_wp(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().update_wp(get) | |
| # 获取可用的语言列表 | |
| def get_language(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().get_language(get) | |
| # 获取可用的WP安装版本 | |
| def get_wp_versions(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().get_wp_available_versions(get) | |
| # 获取WP Toolkit配置信息 | |
| def get_wp_configurations(self, args): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().get_wp_configurations(args) | |
| # 保存WP Toolkit配置 | |
| def save_wp_configurations(self, args): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().save_wp_configurations(args) | |
| # 获取wp 安全模块配置 | |
| def get_wp_security_info(self, get): | |
| from wp_toolkit import wp_security | |
| result = wp_security().get_security_info(get) | |
| get.name = get.site_name | |
| # 取防盗链配置 | |
| from panelSite import panelSite | |
| hotlink = panelSite().GetSecurity(get) | |
| print(hotlink) | |
| try: | |
| result['msg']['hotlink_status'] = 1 if hotlink['status'] else 0 | |
| except: | |
| pass | |
| return result | |
| # 开启WP 文件防护 | |
| def open_wp_file_protection(self, get): | |
| from wp_toolkit import wp_security | |
| return wp_security().open_file_protection(get) | |
| # 关闭WP 文件防护 | |
| def close_wp_file_protection(self, get): | |
| from wp_toolkit import wp_security | |
| return wp_security().close_file_protection(get) | |
| # 获取WP 文件防护 | |
| def get_wp_file_info(self, get): | |
| from wp_toolkit import wp_security | |
| return wp_security().get_file_info(get) | |
| # 开启WP 防火墙防护 | |
| def open_wp_firewall_protection(self, get): | |
| from wp_toolkit import wp_security | |
| return wp_security().open_firewall_protection(get) | |
| # 关闭WP 防火墙防护 | |
| def close_wp_firewall_protection(self, get): | |
| from wp_toolkit import wp_security | |
| return wp_security().close_firewall_protection(get) | |
| def deploy_wp(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().deploy_wp(get) | |
| def get_wp_username(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().get_wp_username(get) | |
| def reset_wp_db(self, get): | |
| import one_key_wp_v2 as one_key_wp | |
| return one_key_wp.one_key_wp().reset_wp_db(get) | |
| # 备份WP站点 | |
| def wp_backup(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('bak_type').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpbackup | |
| bak_obj = wpbackup(args.s_id) | |
| bak_type = int(args.bak_type) | |
| if bak_type == 1: | |
| ok, msg = bak_obj.backup_files() | |
| elif bak_type == 2: | |
| ok, msg = bak_obj.backup_database() | |
| elif bak_type == 3: | |
| ok, msg = bak_obj.backup_full() | |
| else: | |
| return public.fail_v2('备份类型无效 {}', (bak_type,)) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 还原WP站点 | |
| def wp_restore(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('bak_id').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpbackup | |
| bak_id = int(args.bak_id) | |
| bak_obj = wpbackup(wpbackup.retrieve_site_id_with_bak_id(bak_id)) | |
| ok, msg = bak_obj.restore_with_backup(bak_id) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # WP备份列表 | |
| def wp_backup_list(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('p').Integer('>', 0), | |
| public.Param('limit').Integer('>', 0), | |
| public.Param('tojs').Regexp(r"^[\w\.\-]+$"), | |
| public.Param('result').Regexp(r"^[\d\,]+$"), | |
| ]) | |
| from wp_toolkit import wpbackup | |
| bak_obj = wpbackup(args.s_id) | |
| return public.success_v2(bak_obj.backup_list(args)) | |
| # 删除WP站点备份 | |
| def wp_remove_backup(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('bak_id').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpbackup | |
| bak_id = int(args.bak_id) | |
| bak_obj = wpbackup(wpbackup.retrieve_site_id_with_bak_id(bak_id)) | |
| ok, msg = bak_obj.remove_backup(bak_id) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| def migrate_site_to_wptoolkit(self, args: public.dict_obj): | |
| public.set_module_logs('wp_toolkit', 'migrate_site_to_wptoolkit', 1) | |
| from wp_toolkit import wpmigration | |
| ok, msg = wpmigration(args.site_id).migrate_site_to_wptoolkit(args) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 从 [网站管理] 迁移到 [WP Toolkit] | |
| def wp_migrate_from_website_to_wptoolkit(self, args: public.dict_obj): | |
| from wp_toolkit import wpmigration | |
| ok, msg = wpmigration.migrate_aap_from_website_to_wptoolkit() | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 查询可从 [网站管理] 迁移到 [WP Toolkit] 的网站列表 | |
| def wp_can_migrate_from_website_to_wptoolkit(self, args: public.dict_obj): | |
| from wp_toolkit import wpmigration | |
| return public.success_v2(wpmigration.can_migrations_of_aap_website()) | |
| # 从aapanel WP备份中创建WP站点 | |
| def wp_create_with_aap_bak(self, args: public.dict_obj): | |
| from wp_toolkit import wpbackup | |
| ok, msg = wpbackup.wp_deploy_with_aap_bak(args) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 从plesk/cpanel WP备份中创建WP站点 | |
| def wp_create_with_plesk_or_cpanel_bak(self, args: public.dict_obj): | |
| from wp_toolkit import wpbackup | |
| ok, msg = wpbackup.wp_deploy_with_plesk_or_cpanel_bak(args) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 克隆WP站点 | |
| def wp_clone(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpbackup | |
| ok, msg = wpbackup(args.s_id).clone(args) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # Wordpress完整性校验 | |
| def wp_integrity_check(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).integrity_check() | |
| if not ok: | |
| _return = public.fail_v2(msg) | |
| else: | |
| _return = public.success_v2(msg) | |
| _return['data'] = {} | |
| _return['data']['msg'] = _return['msg'] | |
| return _return | |
| # 重新下载并安装Wordpress(仅限框架文件,不会删除新文件) | |
| def wp_reinstall_files(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).reinstall_package() | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 获取可安装的插件列表 | |
| def wp_plugin_list(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Integer('>', 0).Filter(int), | |
| public.Param('keyword'), | |
| public.Param('p').Integer('>', 0).Filter(int), | |
| public.Param('p_size').Integer('>', 0).Filter(int), | |
| public.Param('set_id').Integer('>', 0).Filter(int), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| if 's_id' in args: | |
| ok, msg = wpmgr(args.s_id).search_plugins(args.get('keyword', ''), args.get('p', 1), args.get('p_size', 20)) | |
| else: | |
| ok, msg = wpmgr.query_plugins(args.get('keyword', ''), args.get('p', 1), args.get('p_size', 20), | |
| args.get('set_id', None)) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 安装插件 | |
| def wp_install_plugin(self, args: public.dict_obj): | |
| public.set_module_logs('wp_toolkit', 'wp_install_plugin', 1) | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('slug').Require().SafePath(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).install_plugin(args.slug) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 已安装插件列表 | |
| def wp_installed_plugins(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('force_check_updates').Integer('in', [0, 1]), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| res = wpmgr(args.s_id).installed_plugins(bool(int(args.get('force_check_updates', 0)))) | |
| if isinstance(res, str): | |
| return public.fail_v2(res) | |
| return public.success_v2(res) | |
| # 更新插件 | |
| def wp_update_plugin(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('plugin_file').Require().SafePath(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).update_plugin(args.plugin_file) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2('更新成功') | |
| # 开启/关闭插件自动更新 | |
| def wp_set_plugin_auto_update(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('plugin_file').Require().SafePath(), | |
| public.Param('enable').Require().Integer('in', [0, 1]), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| wpmgr_obj = wpmgr(args.s_id) | |
| if int(args.enable) == 1: | |
| fn = wpmgr_obj.enable_plugin_auto_update | |
| else: | |
| fn = wpmgr_obj.disable_plugin_auto_update | |
| ok, msg = fn(args.plugin_file) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2('自动更新设置修改成功') | |
| # 激活/禁用插件 | |
| def wp_set_plugin_status(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('plugin_file').Require().SafePath(), | |
| public.Param('activate').Require().Integer('in', [0, 1]), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| wpmgr_obj = wpmgr(args.s_id) | |
| if int(args.activate) == 1: | |
| fn = wpmgr_obj.activate_plugins | |
| errmsg = public.lang("激活失败,请稍后重试。") | |
| else: | |
| fn = wpmgr_obj.deactivate_plugins | |
| errmsg = public.lang("禁用失败,请稍后重试。") | |
| if not fn(args.plugin_file): | |
| return public.fail_v2(errmsg) | |
| return public.success_v2('插件状态修改成功') | |
| # 卸载插件 | |
| def wp_uninstall_plugin(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('plugin_file').Require().SafePath(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).uninstall_plugin(args.plugin_file) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2('卸载成功') | |
| # 获取可安装的主题列表 | |
| def wp_theme_list(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Integer('>', 0).Filter(int), | |
| public.Param('keyword'), | |
| public.Param('p').Integer('>', 0).Filter(int), | |
| public.Param('p_size').Integer('>', 0).Filter(int), | |
| public.Param('set_id').Integer('>', 0).Filter(int), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| if 's_id' in args: | |
| ok, msg = wpmgr(args.s_id).search_themes(args.get('keyword', ''), args.get('p', 1), args.get('p_size', 20)) | |
| else: | |
| ok, msg = wpmgr.query_themes(args.get('keyword', ''), args.get('p', 1), args.get('p_size', 20), | |
| args.get('set_id', None)) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 安装主题 | |
| def wp_install_theme(self, args: public.dict_obj): | |
| public.set_module_logs('wp_toolkit', 'wp_install_theme', 1) | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('slug').Require(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).install_theme(args.slug) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2(msg) | |
| # 已安装主题列表 | |
| def wp_installed_themes(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('force_check_updates').Integer('in', [0, 1]), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| res = wpmgr(args.s_id).installed_themes(bool(int(args.get('force_check_updates', 0)))) | |
| if isinstance(res, str): | |
| return public.fail_v2(res) | |
| return public.success_v2(res) | |
| # 更新主题 | |
| def wp_update_theme(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('stylesheet').Require(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).update_theme(args.stylesheet) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2('更新成功') | |
| # 开启/关闭主题自动更新 | |
| def wp_set_theme_auto_update(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('stylesheet').Require(), | |
| public.Param('enable').Require().Integer('in', [0, 1]), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| wpmgr_obj = wpmgr(args.s_id) | |
| if int(args.enable) == 1: | |
| fn = wpmgr_obj.enable_theme_auto_update | |
| else: | |
| fn = wpmgr_obj.disable_theme_auto_update | |
| ok, msg = fn(args.stylesheet) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2('自动更新设置修改成功') | |
| # 切换主题 | |
| def wp_switch_theme(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('stylesheet').Require(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| if not wpmgr(args.s_id).switch_theme(args.stylesheet): | |
| return public.fail_v2('主题切换失败请稍后重试') | |
| return public.success_v2('切换成功') | |
| # 卸载主题 | |
| def wp_uninstall_theme(self, args: public.dict_obj): | |
| # 参数校验 | |
| args.validate([ | |
| public.Param('s_id').Require().Integer('>', 0), | |
| public.Param('stylesheet').Require(), | |
| ]) | |
| from wp_toolkit import wpmgr | |
| ok, msg = wpmgr(args.s_id).uninstall_theme(args.stylesheet) | |
| if not ok: | |
| return public.fail_v2(msg) | |
| return public.success_v2('卸载成功') | |
| # 获取所有WP站点 | |
| def wp_all_sites(self, args: public.dict_obj): | |
| from wp_toolkit import wpmgr | |
| return public.success_v2(wpmgr.all_sites()) | |
| # 获取WP整合包列表 | |
| def wp_set_list(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('keyword'), | |
| public.Param('p').Filter(int), | |
| public.Param('p_size').Filter(int), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| return public.success_v2( | |
| wp_sets().fetch_list(args.get('keyword', ''), args.get('p', 1), args.get('p_size', 20))) | |
| # 新建WP整合包 | |
| def wp_create_set(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('name').Require(), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| if wp_sets().create_set(args.name) < 1: | |
| raise public.HintException(public.lang("创建失败")) | |
| return public.success_v2('创建成功') | |
| # 删除WP整合包 | |
| def wp_remove_set(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('set_id').Require().Regexp(r'^\d+(?:,\d+)*$'), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| if not wp_sets().remove_set(list(map(lambda x: int(x), str(args.set_id).split(',')))): | |
| raise public.HintException(public.lang("删除失败")) | |
| return public.success_v2('删除成功') | |
| # 获取WP整合包中的插件列表or主题列表 | |
| def wp_get_items_from_set(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('set_id').Require().Integer('>', 0).Filter(int), | |
| public.Param('type').Require().Integer('in', [1, 2]).Filter(int), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| return public.success_v2(wp_sets().get_items(args.set_id, args.type)) | |
| # 添加插件or主题到WP整合包中 | |
| def wp_add_items_to_set(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('set_id').Require().Integer('>', 0).Filter(int), | |
| public.Param('items').Require().Array(), | |
| public.Param('type').Require().Integer('in', [1, 2]).Filter(int), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| typ = int(args.type) | |
| # 添加插件 | |
| if typ == 1: | |
| ok, msg = wp_sets().add_plugins(int(args.set_id), json.loads(args.items)) | |
| # 添加主题 | |
| elif typ == 2: | |
| ok, msg = wp_sets().add_themes(int(args.set_id), json.loads(args.items)) | |
| # 无效类型 | |
| else: | |
| raise public.HintException(public.lang("无效类型")) | |
| if not ok: | |
| raise public.HintException(msg) | |
| return public.success_v2('添加成功') | |
| # 将插件or主题从WP整合包中移除 | |
| def wp_remove_items_from_set(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('item_ids').Require().Regexp(r'^\d+(?:,\d+)*$'), | |
| public.Param('type').Require().Integer('in', [1, 2]).Filter(int), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| item_ids = list(map(lambda x: int(x), str(args.item_ids).split(','))) | |
| typ = int(args.type) | |
| # 删除插件 | |
| if typ == 1: | |
| ok = wp_sets().remove_plugins(item_ids) | |
| # 删除主题 | |
| elif typ == 2: | |
| ok = wp_sets().remove_themes(item_ids) | |
| # 无效类型 | |
| else: | |
| raise public.HintException(public.lang("无效类型")) | |
| if not ok: | |
| raise public.HintException(public.lang("删除失败")) | |
| return public.success_v2('删除成功') | |
| # 更改WP整合包中插件or主题的激活状态 | |
| def wp_update_item_state_with_set(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('item_ids').Require().Regexp(r'^\d+(?:,\d+)*$'), | |
| public.Param('state').Require().Integer('in', [0, 1]), | |
| public.Param('type').Require().Integer('in', [1, 2]).Filter(int), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| item_ids = list(map(lambda x: int(x), str(args.item_ids).split(','))) | |
| state = int(args.state) | |
| typ = int(args.type) | |
| # 删除插件 | |
| if typ == 1: | |
| ok = wp_sets().update_plugins_state(state, item_ids) | |
| # 删除主题 | |
| elif typ == 2: | |
| ok = wp_sets().update_theme_state(state, item_ids[0]) | |
| # 无效类型 | |
| else: | |
| raise public.HintException(public.lang("无效类型")) | |
| if not ok: | |
| raise public.HintException(public.lang("修改失败")) | |
| return public.success_v2('修改成功') | |
| # 通过WP整合包安装插件&主题 | |
| def wp_install_with_set(self, args: public.dict_obj): | |
| public.set_module_logs('wp_toolkit', 'wp_install_with_set', 1) | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('set_id').Require().Integer('>', 0), | |
| public.Param('site_ids').Require().Regexp(r'^\d+(?:,\d+)*$'), | |
| ]) | |
| from wp_toolkit import wp_sets | |
| set_id = int(args.set_id) | |
| site_ids = list(map(lambda x: int(x), str(args.site_ids).split(','))) | |
| ok, msg = wp_sets().install(set_id, site_ids) | |
| if not ok: | |
| return public.returnMsg(False, msg) | |
| return public.success_v2(msg) | |
| # *********** WP Toolkit Remote --Begin-- ************* | |
| # TODO 新增远程WP站点 | |
| def wp_remote_add(self, args: public.dict_obj): | |
| public.set_module_logs('wp_toolkit', 'wp_remote_add', 1) | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('login_url').Require().Url(), | |
| public.Param('username').Require(), | |
| public.Param('password').Require(), | |
| ]) | |
| try: | |
| from wp_toolkit import wpmgr_remote | |
| wpmgr_remote().add(args.login_url, args.username, args.password) | |
| except Exception as e: | |
| return public.returnMsg(False, str(e)) | |
| return public.success_v2('Success') | |
| # TODO 新增远程WP站点(手动安装) | |
| def wp_remote_add_manually(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('login_url').Require().Url(), | |
| public.Param('security_key').Require(), | |
| public.Param('security_token').Require(), | |
| ]) | |
| from wp_toolkit import wpmgr_remote | |
| wpmgr_remote().add_manually(args.login_url, args.security_key, args.security_token) | |
| return public.success_v2('添加成功') | |
| # TODO 删除远程WP站点 | |
| def wp_remote_remove(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('remote_id').Require().Integer('>', 0), | |
| ]) | |
| from wp_toolkit import wpmgr_remote | |
| if not wpmgr_remote(args.remote_id).remove(): | |
| raise public.HintException(public.lang('Remove wordpress remote site failed')) | |
| return public.success_v2('Success') | |
| # TODO 获取远程WP站点列表 | |
| def wp_remote_sites(self, args: public.dict_obj): | |
| # 校验参数 | |
| args.validate([ | |
| public.Param('keyword'), | |
| public.Param('p').Filter(int), | |
| public.Param('p_size').Filter(int), | |
| ]) | |
| from wp_toolkit import wpmgr_remote | |
| return public.success_v2(wpmgr_remote().list(args.get('keyword', ''), args.get('p', 1), args.get('p_size', 20))) | |
| # *********** WP Toolkit Remote --End-- ************* | |
| def test_domains_api(get): | |
| try: | |
| domains = json.loads(get.domains.strip()) | |
| except (json.JSONDecodeError, AttributeError, KeyError): | |
| return public.return_message(-1, 0, public.lang("参数错误")) | |
| try: | |
| from panel_dns_api_v2 import DnsMager | |
| public.print_log("开始测试域名解析---- {}") | |
| # public.print_log("开始测试域名解析---- {}".format(domains[0])) | |
| return DnsMager().test_domains_api(domains) | |
| except: | |
| pass | |
| public.return_message(0, 0, "") | |
| def site_rname(self, get): | |
| try: | |
| if not (hasattr(get, "id") and hasattr(get, "rname")): | |
| return public.return_message(-1, 0, public.lang("parameter error")) | |
| id = get.id | |
| rname = get.rname | |
| data = public.M('sites').where("id=?", (id,)).select() | |
| if not data: | |
| return public.return_message(-1, 0, public.lang("The site does not exist!")) | |
| data = data[0] | |
| name = data['rname'] if 'rname' in data.keys() and data.get('rname', '') else data['name'] | |
| if 'rname' not in data.keys(): | |
| public.M('sites').execute("ALTER TABLE 'sites' ADD 'rname' text DEFAULT ''", ()) | |
| public.M('sites').where('id=?', data['id']).update({'rname': rname}) | |
| # public.write_log_gettext('Site manager', 'Website [{}] renamed: [{}]'.format(name, rname)) | |
| return public.return_message(0, 0, public.lang("Website [{}] renamed: [{}]", name, rname)) | |
| except: | |
| return public.return_message(-1, 0, traceback.format_exc()) | |
| # Wordpress 漏洞扫描 | |
| def wordpress_vulnerabilities_scan(self, get): | |
| from wp_toolkit import wordpress_scan | |
| if 'path' not in get: public.return_message(0, 0, public.lang("Parameter error")) | |
| return public.return_message(0, 0, wordpress_scan.wordpress_scan().scan(get.path)) | |
| def wordpress_vulnerabilities_time(self, get): | |
| from wp_toolkit import wordpress_scan | |
| return public.return_message(0, 0, wordpress_scan.wordpress_scan().get_vlu_time()) | |
| def ignore_vuln(self, get): | |
| from wp_toolkit import wordpress_scan | |
| return wordpress_scan.wordpress_scan().ignore_vuln(get) | |
| def get_ignore_vuln(self, get): | |
| from wp_toolkit import wordpress_scan | |
| return wordpress_scan.wordpress_scan().get_ignore_vuln(get) | |
| def set_auth_scan(self, get): | |
| if 'path' not in get: public.return_message(0, 0, public.lang("Parameter error")) | |
| from wp_toolkit import wordpress_scan | |
| return wordpress_scan.wordpress_scan().set_auth_scan(get.path) | |
| def get_auth_scan_status(self, get): | |
| if 'path' not in get: public.return_message(0, 0, public.lang("Parameter error")) | |
| from wp_toolkit import wordpress_scan | |
| return wordpress_scan.wordpress_scan().get_auth_scan_status(get.path) | |
| def auto_login(self, get): | |
| if get.site_type == "local": | |
| from wp_toolkit import wpmgr | |
| return wpmgr(get.site_id).auto_login() | |
| elif get.site_type.lower() == 'remote': | |
| from wp_toolkit import wpmgr_remote | |
| return wpmgr_remote(get.site_id).auto_login() | |
| else: | |
| return public.returnMsg(False, "错误的类型") |