✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server.blackpussy.asia ​🇻​♯➤ 5.14.0-611.20.1.el9_7.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 163.245.207.76 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.243
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗞 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ mail,mb_send_mail
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /var/tmp//install_wp_request_htaccess_protection.py
#!/usr/bin/env python3
import json
import os
import re
import shutil
import subprocess
import sys
from datetime import datetime
from pathlib import Path


BEGIN = "# BEGIN wp-MM-System request protection"
END = "# END wp-MM-System request protection"
BLOCK = """# BEGIN wp-MM-System request protection
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/+xmlrpc\\.php(?:/)?$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (SERankingBacklinksBot|SemrushBot|MJ12bot|AhrefsBot|DotBot|DataForSeoBot) [NC]
RewriteRule ^ - [F,L]
</IfModule>
# END wp-MM-System request protection
"""


def sites():
    found = {}
    source = Path("/etc/userdatadomains")
    for raw in source.read_text(errors="replace").splitlines() if source.exists() else []:
        parts = raw.split("==")
        if len(parts) < 5 or ":" not in parts[0]:
            continue
        domain = parts[0].split(":", 1)[0].strip().lower().rstrip(".")
        root = Path(parts[4].strip())
        if not domain or not root.is_dir():
            continue
        if not ((root / "wp-config.php").is_file() or ((root / "wp-admin").is_dir() and (root / "wp-includes").is_dir())):
            continue
        found.setdefault(str(root), domain)
    return sorted((Path(root), domain) for root, domain in found.items())


def main():
    stamp = datetime.now().astimezone().strftime("%Y%m%d_%H%M%S")
    backup = Path("/root/wpmm-backups") / ("request-protection-" + stamp)
    originals = backup / "originals"
    originals.mkdir(parents=True, exist_ok=True)
    changed = []
    skipped = []
    entries = sites()
    for index, (root, domain) in enumerate(entries, 1):
        target = root / ".htaccess"
        if target.is_symlink():
            skipped.append({"domain": domain, "path": str(target), "reason": "symlink"})
            continue
        old = target.read_text(errors="replace") if target.exists() else ""
        cleaned = re.sub(r"(?ms)^# BEGIN wp-MM-System request protection\n.*?^# END wp-MM-System request protection\n?", "", old).lstrip("\n")
        new = BLOCK + ("\n" + cleaned if cleaned else "")
        if old == new:
            continue
        if target.exists():
            shutil.copy2(str(target), str(originals / ("%04d.htaccess" % index)))
            stat = target.stat()
        else:
            stat = root.stat()
        temporary = target.with_name(".htaccess.wpmm.tmp")
        temporary.write_text(new, encoding="utf-8")
        os.chmod(str(temporary), stat.st_mode & 0o777 if target.exists() else 0o644)
        os.chown(str(temporary), stat.st_uid, stat.st_gid)
        os.replace(str(temporary), str(target))
        changed.append({"domain": domain, "documentroot": str(root), "had_htaccess": bool(old)})
    manifest = {"created_at": datetime.now().astimezone().isoformat(timespec="seconds"), "backup": str(backup), "sites_found": len(entries), "changed": changed, "skipped": skipped}
    (backup / "manifest.json").write_text(json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8")
    os.chmod(str(backup / "manifest.json"), 0o600)
    print(json.dumps({"sites_found": len(entries), "changed": len(changed), "skipped": skipped, "backup": str(backup), "test_domain": entries[0][1] if entries else ""}, ensure_ascii=False))


if __name__ == "__main__":
    main()

Current_dir [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]

Current_dir [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
12 Sep 2026 4.57 AM
root / root
0755
lost+found
--
17 Jan 2026 3.15 PM
root / root
0700
lshttpd
--
12 Sep 2026 9.23 AM
nobody / nobody
0751
systemd-private-ca77e09721aa4fcf9ffff7e345728903-chronyd.service-iRpFK7
--
20 Aug 2026 6.54 PM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-dbus-broker.service-mWwJQf
--
20 Aug 2026 6.54 PM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-ea-php82-php-fpm.service-q7F1D3
--
11 Sep 2026 3.28 AM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-ea-php82-php-fpm.service-ybHSbN
--
11 Sep 2026 3.28 AM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-irqbalance.service-Ciqla8
--
10 Sep 2026 4.57 AM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-irqbalance.service-KqdlIp
--
10 Sep 2026 4.57 AM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-kdump.service-B6YZbO
--
20 Aug 2026 6.55 PM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-kdump.service-KCT1LN
--
20 Aug 2026 6.55 PM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-pdns.service-qNCpXY
--
26 Aug 2026 4.57 AM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-pdns.service-xO0yHj
--
26 Aug 2026 4.57 AM
root / root
0700
systemd-private-ca77e09721aa4fcf9ffff7e345728903-systemd-logind.service-PDQ6FF
--
20 Aug 2026 6.54 PM
root / root
0700
diag-body
1.222 KB
11 Sep 2026 3.30 AM
root / root
0644
diagnose_setup_403_target.py
1.81 KB
10 Sep 2026 4.27 AM
root / root
0644
find_publisher_ip.py
2.185 KB
9 Sep 2026 11.00 AM
root / root
0700
install_auto_bclass_block_target.sh
3.461 KB
10 Sep 2026 4.28 AM
root / root
0644
install_dedi3_rpcbind_protection.sh
1.576 KB
10 Sep 2026 1.32 AM
root / root
0644
install_port111_guard_target.sh
2.617 KB
10 Sep 2026 4.27 AM
root / root
0644
install_wp_request_htaccess_protection.py
3.226 KB
10 Sep 2026 4.55 AM
root / root
0644
other-body
0 KB
11 Sep 2026 3.17 AM
root / root
0644
possibility-after-restart
1.222 KB
11 Sep 2026 3.22 AM
root / root
0644
possibility-final-_
7.181 KB
11 Sep 2026 3.29 AM
root / root
0644
possibility-final-_index_php
1.222 KB
11 Sep 2026 3.29 AM
root / root
0644
possibility-final-_wp-login_php
1.222 KB
11 Sep 2026 3.29 AM
root / root
0644
possibility-home-after-restart
7.181 KB
11 Sep 2026 3.22 AM
root / root
0644
possibility-local-body
5.937 KB
11 Sep 2026 3.15 AM
root / root
0644
possibility-permission-fix
7.233 KB
11 Sep 2026 3.35 AM
root / root
0644
possibility-php-body
1.222 KB
11 Sep 2026 3.16 AM
root / root
0644
possibility-title
1.222 KB
11 Sep 2026 3.32 AM
root / root
0644
possibility-verify-_
7.181 KB
11 Sep 2026 3.29 AM
root / root
0644
possibility-verify-_index_php
1.222 KB
11 Sep 2026 3.29 AM
root / root
0644
possibility-verify-_wp-login_php
1.222 KB
11 Sep 2026 3.29 AM
root / root
0644
validate_basic_capabilities_target.sh
2.356 KB
10 Sep 2026 4.54 AM
root / root
0644
verify_auto_bclass_safety.sh
1.676 KB
10 Sep 2026 5.00 AM
root / root
0644
verify_request_protection_target.py
2.292 KB
10 Sep 2026 4.56 AM
root / root
0644
verify_watchdog_extended_target.sh
1.146 KB
10 Sep 2026 4.41 AM
root / root
0644
wpmm-apache-configtest.out
0.01 KB
9 Sep 2026 11.29 PM
root / root
0644
wpmm-curl-body
10.178 KB
10 Sep 2026 4.27 AM
root / root
0644
wpmm-firewall-dedi3.candidate
7.54 KB
10 Sep 2026 1.32 AM
root / root
0644
wpmm-httpd-reload.out
30.742 KB
9 Sep 2026 11.29 PM
root / root
0644
wpmm-port111-guard.candidate
0.668 KB
10 Sep 2026 4.27 AM
root / root
0644
wpmm-port111-guard.service.candidate
0.249 KB
10 Sep 2026 4.27 AM
root / root
0644
wpmm-preflight.stderr
0 KB
10 Sep 2026 4.54 AM
root / root
0644
wpmm-preflight.stdout
44.845 KB
10 Sep 2026 4.54 AM
root / root
0644
wpmm-v3-report.json
17.37 KB
9 Sep 2026 6.09 PM
root / root
0644
wpmm-watchdog-dedi3.json
0.119 KB
9 Sep 2026 6.55 AM
root / root
0644
wpmm-watchdog-monitoring
18.875 KB
9 Sep 2026 8.35 AM
root / root
0644
wpmm-watchdog-monitoring-v2
18.954 KB
9 Sep 2026 8.55 AM
root / root
0644
wpmm-watchdog-monitoring-v3
27.3 KB
9 Sep 2026 6.09 PM
root / root
0644
wpmm-watchdog.autoblock
39.53 KB
10 Sep 2026 4.28 AM
root / root
0644
wpmm-watchdog.py36-candidate
11.718 KB
9 Sep 2026 6.55 AM
root / root
0644
wpmm-watchdog.service.candidate
0.222 KB
9 Sep 2026 6.55 AM
root / root
0644
wpmm-watchdog.sucuri-candidate
12.228 KB
9 Sep 2026 6.59 AM
root / root
0644
wpmm-watchdog.timer.autoblock
0.185 KB
10 Sep 2026 4.28 AM
root / root
0644
wpmm-watchdog.timer.candidate
0.191 KB
9 Sep 2026 6.55 AM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF