Files
aaPanel/class_v2/wp_toolkit/security.py
T
Jack a24f2e23c6 Update to 7.25.0
1. Added Mail Marketing Automation trigger tasks
2. Added Mail Marketing Groups Import, Export, Merge
3. Added Mail Marketing Subscribers to support paste import
4. Added Mail Marketing Template Import Export Duplicate
5. Added Mail server add timed automatic reply
6. Added HTTPS Protection function for Website (disables automatic HTTP to HTTPS redirection when enabled)
7. Optimize Website Interface Button Integration
8. Optimize the response speed of WP Toolkit interface
2025-03-13 17:52:26 +08:00

226 lines
8.5 KiB
Python

# WP Toolkit security
# author: hzh<2024-07-02>
import public
from public.validate import Param
# WP安全模块类
class wp_security:
# 开启文件防护
def open_file_protection(self, get):
# 校验参数
try:
get.validate([
Param('paths').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
tamper_core_status = public.run_plugin('tamper_core', 'get_service_status', public.to_dict_obj({}))
if not (tamper_core_status["kernel_module_status"] and tamper_core_status["controller_status"]):
return public.return_message(-1, 0, public.lang("Sorry, opening failed, please go to the App Store --Tamper-proof for Enterprise to view details"))
result= public.run_plugin('tamper_core', 'multi_create', public.to_dict_obj({
'paths': get.paths,
}))
if 'status' in result:
return public.return_message(-1,0,result[0]['msg'])
if type(result)==list:
# for i in result:
public.run_plugin('tamper_core', 'assign_rule_to_directory', public.to_dict_obj({
'rule_group_name': 'WordPress Normal',
'path_id': result[0]['pid'],
}))
return public.return_message(0, 0, public.lang("Successfully added file protection"))
#取安全防护配置
def get_security_info(self, get):
# 校验参数
try:
get.validate([
Param('path').Require().String(),
Param('site_name').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
return_result={
'hotlink_status':0,
'file_status':0,
'firewall_status':0,
'file_count':0,
'firewall_count':0,
}
if get.path[-1] !='/':
get.path+='/'
#取文件防护配置
try:
tamper_core_status = public.run_plugin('tamper_core', 'get_service_status', public.to_dict_obj({}))
if tamper_core_status["kernel_module_status"] and tamper_core_status["controller_status"]:
result= public.run_plugin('tamper_core', 'get_tamper_paths', public.to_dict_obj({}))
if type(result)==list:
for i in result:
if i['path']==get.path and i['status']==1:
return_result['file_status']=1
today=i['total']['today']
return_result['file_count']=int(today['create'])+int(today['modify'])+int(today['unlink'])+int(today['rename'])+int(today['mkdir'])+int(today['rmdir'])+int(today['chmod'])+int(today['chown'])+int(today['link'])
break
except:pass
#取防火墙配置
result= public.run_plugin('btwaf', 'get_site_config_byname', public.to_dict_obj({'siteName':get.site_name}))
try:
if result['open']:
return_result['firewall_status']=1
except:
pass
result= public.run_plugin('btwaf', 'get_site_config3', public.to_dict_obj({'siteName':get.site_name}))
try:
if type(result['data'])==list:
for i in result['data']:
if i['siteName']!=get.site_name:
continue
if type(i['total'])==list:
for total in i['total']:
return_result['firewall_count']+=int(total['value'])
except:
pass
return public.return_message(0,0,return_result)
#关闭文件保护
def close_file_protection(self, get):
# 校验参数
try:
get.validate([
Param('path_id').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
tamper_core_status = public.run_plugin('tamper_core', 'get_service_status', public.to_dict_obj({}))
if not (tamper_core_status["kernel_module_status"] and tamper_core_status["controller_status"]):
return public.return_message(-1, 0, public.lang("Sorry, opening failed, please go to the App Store --Tamper-proof for Enterprise to view details"))
result= public.run_plugin('tamper_core', 'remove_path_config', public.to_dict_obj({
'path_id': get.path_id,
}))
status=0
if not result['status']:
status=-1
return public.return_message(status,0,result['msg'])
# 开启防火墙防护
def open_firewall_protection(self, get):
# 校验参数
try:
get.validate([
Param('site_name').Require().String(),
Param('obj').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
result= public.run_plugin('btwaf', 'get_total_all', public.to_dict_obj({
}))
if not result['open']:
result= public.run_plugin('btwaf', 'set_open', public.to_dict_obj({
}))
if not result['status']:
return public.return_message(-1, 0, public.lang("Failed to open firewall"))
result= public.run_plugin('btwaf', 'get_site_config_byname', public.to_dict_obj({
'siteName': get.site_name,
}))
if not result['open']:
result= public.run_plugin('btwaf', 'set_site_obj_open', public.to_dict_obj({
'siteName': get.site_name,
'obj': get.obj,
}))
if not result['status']:
return public.return_message(-1, 0, public.lang("Failed to open firewall"))
return public.return_message(0, 0, public.lang("Successfully opened firewall"))
# 关闭防火墙防护
def close_firewall_protection(self, get):
# 校验参数
try:
get.validate([
Param('site_name').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
result= public.run_plugin('btwaf', 'set_site_obj_open', public.to_dict_obj({
'siteName': get.site_name,
'obj': 'open',
}))
if not result['status']:
return public.return_message(-1, 0, public.lang("Failed to close firewall"))
return public.return_message(0, 0, public.lang("Successfully closeed firewall"))
# 获取防火墙防护配置
def get_firewall_info(self, get):
# 校验参数
try:
get.validate([
Param('site_name').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
result= public.run_plugin('btwaf', 'get_site_config_byname', public.to_dict_obj({
'siteName':get.site_name,
}))
return public.return_message(0,0,result)
# 获取文件防护配置
def get_file_info(self, get):
# 校验参数
try:
get.validate([
Param('path').Require().String(),
], [
public.validate.trim_filter(),
])
except Exception as ex:
public.print_log("error info: {}".format(ex))
return public.return_message(-1, 0, str(ex))
if get.path[-1] !='/':
get.path+='/'
result= public.run_plugin('tamper_core', 'get_tamper_paths', public.to_dict_obj({
'path':get.path,
}))
for i in result:
if i['path']==get.path:
return public.return_message(0,0,i)
return public.return_message(0,0,{})