Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.217.117
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
home /
otto /
python /
Delete
Unzip
Name
Size
Permission
Date
Action
app
[ DIR ]
drwxr-xr-x
2025-09-06 08:13
.env
479
B
-rw-r--r--
2025-09-06 08:13
.htaccess
44
B
-rw-r--r--
2025-09-06 08:13
check-ssl.py
1.36
KB
-rw-r--r--
2025-09-06 08:13
config.py
5.72
KB
-rw-r--r--
2025-09-06 08:13
db-bck.py
4.52
KB
-rw-r--r--
2025-09-06 08:13
db-transfer.py
3.94
KB
-rw-r--r--
2025-09-06 08:13
env.example
5.5
KB
-rw-r--r--
2025-09-06 08:13
requirements.txt
1.68
KB
-rw-r--r--
2025-09-06 08:13
send-mail.py
1.3
KB
-rw-r--r--
2025-09-06 08:13
server-checks.py
2.93
KB
-rw-r--r--
2025-09-06 08:13
Save
Rename
import os import subprocess import datetime import glob # Settings list where each entry is the details of one web site/ database all_settings = [ { "db_host": "sql1.cpt2.host-h.net", "db_port": 3306, "db_name": "saacedb", "db_user": "saacea_1", "db_pass": "heJxoP40d", "backup_dir": "/var/backups", "retention_days": 7, "db_restore_host": "cesa-main-db.local", "db_restore_port": 3306, "db_restore_name": "cesa", "db_restore_user": "cesa", "db_restore_pass": "MAC4SCg9268c_MCd", "storage_engine": "innodb" }, { "db_host": "sql1.cpt2.host-h.net", "db_port": 3306, "db_name": "saacemail", "db_user": "saacea_3", "db_pass": "GFTcREk8", "backup_dir": "/var/backups", "retention_days": 7, "db_restore_host": "cesa-main-db.local", "db_restore_port": 3306, "db_restore_name": "cesa_mail", "db_restore_user": "cesa_mail", "db_restore_pass": "DIo60ZDXK7A9iSwG", "storage_engine": "innodb" }, { "db_host": "sql8.cpt2.host-h.net", "db_port": 3306, "db_name": "cesa_wp", "db_user": "saacea_7", "db_pass": "WbtTYUYUu58", "backup_dir": "/var/backups", "retention_days": 7, "db_restore_host": "cesa-main-db.local", "db_restore_port": 3306, "db_restore_name": "cesa_wp", "db_restore_user": "cesa_wp", "db_restore_pass": "r0jYdp5/h)iLA/N5", "storage_engine": "myisam" } ] for index, settings in enumerate(all_settings): backup_dir = settings["backup_dir"] retention_days = settings["retention_days"] db_host = settings["db_host"] db_port = settings["db_port"] db_name = settings["db_name"] db_user = settings["db_user"] db_pass = settings["db_pass"] # Ensure backup directory exists os.makedirs(backup_dir, exist_ok=True) # Today's date today = datetime.date.today().isoformat() backup_file = os.path.join(backup_dir, f"{db_name}-{today}.sql.gz") all_settings[index]["backup_file"] = backup_file print(f"Backing up {db_name} to {backup_file}") # Run mysqldump dump_cmd = f"mysqldump -f --skip-triggers --add-locks --hex-blob --single-transaction" \ + f" -u {db_user} -p{db_pass} -h {db_host} -P {db_port} {db_name} "\ + f"| sed '1i SET FOREIGN_KEY_CHECKS=0;' | sed '$a SET FOREIGN_KEY_CHECKS=1;' | sed 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip > {backup_file}" subprocess.run(dump_cmd, shell=True, check=True) for settings in all_settings: #Check if db_restore_pass is defined if "db_restore_pass" in settings: db_name = settings["db_name"] db_restore_host = settings["db_restore_host"] db_restore_port = settings["db_restore_port"] db_restore_name = settings["db_restore_name"] db_restore_user = settings["db_restore_user"] db_restore_pass = settings["db_restore_pass"] backup_file = settings["backup_file"] # Restore the database from zipped backup file print(f"Restoring {db_name} from {backup_file}") restore_cmd = ( f"gunzip -c {backup_file} | " f"mysql -u {db_restore_user} -p{db_restore_pass} -h {db_restore_host} " f"-P {db_restore_port} {db_restore_name}" ) subprocess.run(restore_cmd, shell=True, check=True) for index, settings in enumerate(all_settings): db_name = settings["db_name"] retention_days = settings["retention_days"] backup_dir = settings["backup_dir"] print(f"Deleting old backups of {db_name} older than {retention_days} days") # Delete old backups cutoff = datetime.datetime.now() - datetime.timedelta(days=retention_days) for f in glob.glob(os.path.join(backup_dir, f"{db_name}-*.sql.gz")): file_time = datetime.datetime.fromtimestamp(os.path.getmtime(f)) if file_time < cutoff: os.remove(f)