Linux gator3097.hostgator.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
Apache
Server IP : 192.185.227.195 & Your IP : 216.73.216.0
Domains :
Cant Read [ /etc/named.conf ]
User : mave78
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Lock Shell
Lock File++
Readme
/
usr /
local /
cpanel /
scripts /
Delete
Unzip
Name
Size
Permission
Date
Action
cpan_sandbox
[ DIR ]
drwxr-xr-x
2025-07-14 20:44
php_sandbox
[ DIR ]
drwxr-xr-x
2025-07-14 20:44
MirrorSearch_pingtest
2.38
KB
-rwxr-xr-x
2022-02-09 18:56
activesync-invite-reply
1.69
KB
-rwxr-xr-x
2022-02-09 18:56
add_dns
2.36
KB
-rwxr-xr-x
2022-02-09 18:56
adddns
2.36
KB
-rwxr-xr-x
2022-02-09 18:56
addpop
6.08
KB
-rwxr-xr-x
2022-02-09 18:56
addsystemuser
3.27
KB
-rwxr-xr-x
2022-02-09 18:56
adduser
92
B
-rwxr-xr-x
2015-02-11 17:35
apachelimits
4.31
KB
-rwxr-xr-x
2022-02-09 18:56
archive_sync_zones
3.02
KB
-rwxr-xr-x
2022-02-09 18:56
auto-adjust-mysql-limits
1.81
KB
-rwxr-xr-x
2022-02-09 18:56
autorepair
1.24
KB
-rwxr-xr-x
2022-02-09 18:56
backup_jobs_helper
8.03
KB
-rwxr-xr-x
2026-02-17 18:27
backups_clean_metadata_for_missing_backups
1.57
KB
-rwxr-xr-x
2022-02-09 18:56
backups_create_metadata
15.75
KB
-rwxr-xr-x
2022-02-09 18:56
backups_list_user_files
4.56
KB
-rwxr-xr-x
2022-02-09 18:56
balance_linked_node_quotas
2.58
KB
-rwxr-xr-x
2022-02-09 18:56
biglogcheck
1.69
KB
-rwxr-xr-x
2022-02-09 18:56
build_bandwidthdb_root_cache_in_background
1.52
KB
-rwxr-xr-x
2022-02-09 18:56
build_cpnat
3.41
KB
-rwxr-xr-x
2022-02-09 18:56
build_mail_sni
3.87
KB
-rwxr-xr-x
2022-07-28 00:26
build_maxemails_config
1.14
KB
-rwxr-xr-x
2022-02-09 18:56
builddovecotconf
6.76
KB
-rwxr-xr-x
2022-02-09 18:56
buildeximconf
7
KB
-rwxr-xr-x
2023-01-19 18:44
buildhttpdconf
2.6
KB
-rwxr-xr-x
2022-02-09 18:56
buildnsdconf
1.01
KB
-rwxr-xr-x
2022-02-09 18:56
buildpureftproot
539
B
-rwxr-xr-x
2022-02-09 18:56
call_pkgacct
2.17
KB
-rwxr-xr-x
2026-02-17 18:27
ccs-check
4.91
KB
-rwxr-xr-x
2022-02-09 18:56
check_cpanel_pkgs
10.75
KB
-rwxr-xr-x
2022-02-09 18:56
check_cpanel_rpms
218
B
-rwxr-xr-x
2021-09-10 14:14
check_domain_tls_service_domains.pl
6.68
KB
-rwxr-xr-x
2022-02-09 18:56
check_immutable_files
5.49
KB
-rwxr-xr-x
2022-02-09 18:56
check_mail_spamassassin_compiledregexps_body_0
187
B
-rwxr-xr-x
2016-04-13 18:55
check_maxmem_against_domains_count
3.57
KB
-rwxr-xr-x
2022-02-09 18:56
check_mount_procfs
2.02
KB
-rwxr-xr-x
2022-02-09 18:56
check_mysql
5.55
KB
-rwxr-xr-x
2022-07-28 00:26
check_security_advice_changes
8.28
KB
-rwxr-xr-x
2023-01-19 18:44
check_unmonitored_enabled_services
4.56
KB
-rwxr-xr-x
2022-07-28 00:26
check_unreliable_resolvers
3.59
KB
-rwxr-xr-x
2022-02-09 18:56
check_users_my_cnf
6.05
KB
-rwxr-xr-x
2022-02-09 18:56
check_valid_server_hostname
7.66
KB
-rwxr-xr-x
2022-07-28 00:26
checkalldomainsmxs
2.4
KB
-rwxr-xr-x
2022-02-09 18:56
checkbashshell
1.18
KB
-rwxr-xr-x
2022-02-09 18:56
checkccompiler
1.22
KB
-rwxr-xr-x
2022-02-09 18:56
checkexim.pl
3.1
KB
-rwxr-xr-x
2022-02-09 18:56
checklink
1.29
KB
-rwxr-xr-x
2022-02-09 18:56
checknsddirs
1014
B
-rwxr-xr-x
2022-02-09 18:56
checkusers
856
B
-rwxr-xr-x
2022-02-09 18:56
chkmydns
561
B
-rwxr-xr-x
2022-02-09 18:56
chkpaths
141
B
-rwxr-xr-x
2015-02-11 17:35
chpass
416
B
-rwxr-xr-x
2022-02-09 18:56
ckillall
1.11
KB
-rwxr-xr-x
2022-02-09 18:56
clean_dead_mailman_locks
2.09
KB
-rwxr-xr-x
2022-02-09 18:56
clean_up_temp_wheel_users
2.44
KB
-rwxr-xr-x
2022-02-09 18:56
clean_user_php_sessions
4.76
KB
-rwxr-xr-x
2022-07-28 00:26
cleandns
13.09
KB
-rwxr-xr-x
2022-07-28 00:26
cleandns8
417
B
-rwxr-xr-x
2022-02-09 18:56
cleanmsglog
735
B
-rwxr-xr-x
2015-02-11 17:35
cleanphpsessions
932
B
-rwxr-xr-x
2022-02-09 18:56
cleanphpsessions.php
658
B
-rw-r--r--
2022-08-31 17:30
cleanquotas
1.61
KB
-rwxr-xr-x
2022-02-09 18:56
cleansessions
5.91
KB
-rwxr-xr-x
2022-12-09 14:03
cleanupinterchange
2.64
KB
-rwxr-xr-x
2022-02-09 18:56
cleanupmysqlprivs
533
B
-rwxr-xr-x
2021-09-10 14:14
clear_cpaddon_ui_caches
1.27
KB
-rwxr-xr-x
2022-02-09 18:56
clear_orphaned_virtfs_mounts
3.56
KB
-rwxr-xr-x
2022-02-09 18:56
comet_license_registration_sync
1.75
KB
-rwxr-xr-x
2026-02-17 18:27
comet_protected_item_maintenance
20.7
KB
-rwxr-xr-x
2026-02-17 18:27
comparecdb
1.52
KB
-rwxr-xr-x
2022-02-09 18:56
compilers
2.86
KB
-rwxr-xr-x
2022-02-09 18:56
compilerscheck
999
B
-rwxr-xr-x
2022-02-09 18:56
configure_firewall_for_cpanel
520
B
-rwxr-xr-x
2022-02-09 18:56
configure_rh_firewall_for_cpanel
520
B
-rwxr-xr-x
2022-02-09 18:56
configure_rh_ipv6_firewall_for_cpanel
520
B
-rwxr-xr-x
2022-02-09 18:56
convert2dovecot
682
B
-rwxr-xr-x
2022-02-09 18:56
convert_accesshash_to_token
4.07
KB
-rwxr-xr-x
2022-02-09 18:56
convert_and_migrate_from_legacy_backup
1.97
KB
-rwxr-xr-x
2022-02-09 18:56
convert_maildir_to_mdbox
1.66
KB
-rwxr-xr-x
2022-02-09 18:56
convert_mdbox_to_maildir
1.66
KB
-rwxr-xr-x
2022-02-09 18:56
convert_roundcube_mysql2sqlite
25.28
KB
-rwxr-xr-x
2024-12-02 23:05
convert_to_dovecot_delivery
4.33
KB
-rwxr-xr-x
2022-02-09 18:56
convert_whmxfer_to_sqlite
1.46
KB
-rwxr-xr-x
2022-02-09 18:56
copy_user_mail_as_root
1.25
KB
-rwxr-xr-x
2022-02-09 18:56
copy_user_mail_as_user
1.34
KB
-rwxr-xr-x
2022-02-09 18:56
cpaddonsup
3.25
KB
-rwxr-xr-x
2022-02-09 18:56
cpan_config
2.8
KB
-rwxr-xr-x
2022-02-09 18:56
cpanel_initial_install
67.36
KB
-rwxr-xr-x
2024-03-15 14:56
cpanelsync
28.31
KB
-rwxr-xr-x
2022-02-09 18:56
cpanelsync_postprocessor
1.62
KB
-rwxr-xr-x
2022-02-09 18:56
cpanpingtest
965
B
-rwxr-xr-x
2022-02-09 18:56
cpbackup
44.77
KB
-rwxr-xr-x
2022-07-28 00:26
cpbackup_transport_file
5.65
KB
-rwxr-xr-x
2022-09-09 17:01
cpdig
1.81
KB
-rwxr-xr-x
2022-02-09 18:56
cpfetch
1.23
KB
-rwxr-xr-x
2022-02-09 18:56
cphulkdblacklist
433
B
-rwxr-xr-x
2022-02-09 18:56
cphulkdwhitelist
1.3
KB
-rwxr-xr-x
2022-02-09 18:56
cpservice
2.87
KB
-rwxr-xr-x
2022-02-09 18:56
cpuser_port_authority
19.29
KB
-rwxr-xr-x
2022-02-09 18:56
cpuser_service_manager
10.85
KB
-rwxr-xr-x
2022-07-28 00:26
create_default_featurelist
11.62
KB
-rwx------
2026-03-03 18:34
createacct
24.59
MB
-rwx------
2026-02-17 06:25
custom_backup_destination.pl.sample
5.06
KB
-rwxr-xr-x
2022-07-28 00:26
custom_backup_destination.pl.skeleton
2.84
KB
-rwxr-xr-x
2022-02-09 18:56
dav_change_hostname
3.57
KB
-rwxr-xr-x
2022-02-09 18:56
dcpumon-wrapper
850
B
-rwxr-xr-x
2022-02-09 18:56
delpop
6.2
KB
-rwxr-xr-x
2022-02-09 18:56
detect_env_capabilities
508
B
-rwxr-xr-x
2022-02-09 18:56
disable_prelink
2.77
KB
-rwxr-xr-x
2022-02-09 18:56
disable_sqloptimizer
1.49
KB
-rwxr-xr-x
2022-02-09 18:56
disablefileprotect
2.09
KB
-rwxr-xr-x
2022-02-09 18:56
distro_changed_hook
1.16
KB
-rwxr-xr-x
2022-02-09 18:56
dnscluster
4.44
KB
-rwxr-xr-x
2022-02-09 18:56
dnsqueuecron
1.29
KB
-rwxr-xr-x
2022-02-09 18:56
dnssec-cluster-keys
3.75
KB
-rwxr-xr-x
2022-02-09 18:56
dovecot_maintenance
7.93
KB
-rwxr-xr-x
2022-02-09 18:56
dovecot_set_defaults.pl
984
B
-rwxr-xr-x
2022-02-09 18:56
dumpcdb
866
B
-rwxr-xr-x
2022-02-09 18:56
dumpinodes
687
B
-rwxr-xr-x
2022-02-09 18:56
dumpquotas
616
B
-rwxr-xr-x
2022-02-09 18:56
dumpstor
913
B
-rwxr-xr-x
2022-02-09 18:56
ea4_fresh_install
2.64
KB
-rwxr-xr-x
2022-02-09 18:56
easyapache
93
B
-rwxr-xr-x
2025-08-06 08:04
edit_cpanelsync_exclude_list
2.58
KB
-rwxr-xr-x
2022-02-09 18:56
editquota
3.44
KB
-rwxr-xr-x
2022-02-09 18:56
elevate-cpanel
407.81
KB
-rwx------
2026-03-10 05:26
email_archive_maintenance
6.15
KB
-rwxr-xr-x
2022-02-09 18:56
email_hold_maintenance
1.46
KB
-rwxr-xr-x
2022-02-09 18:56
enable_spf_dkim_globally
8.83
KB
-rwxr-xr-x
2022-02-09 18:56
enable_sqloptimizer
1.57
KB
-rwxr-xr-x
2022-02-09 18:56
enablefileprotect
2.1
KB
-rwxr-xr-x
2022-02-09 18:56
ensure_autoenabled_features
2.5
MB
-rwx------
2026-02-17 06:25
ensure_conf_dir_crt_key
4.82
KB
-rwxr-xr-x
2022-02-09 18:56
ensure_cpuser_file_ip
2.55
KB
-rwxr-xr-x
2022-02-09 18:56
ensure_crontab_permissions
1.08
KB
-rwxr-xr-x
2022-02-09 18:56
ensure_dovecot_memory_limits_meet_minimum
3.13
KB
-rwxr-xr-x
2022-02-09 18:56
ensure_hostname_resolves
2.38
KB
-rwxr-xr-x
2025-04-01 23:08
ensure_includes
601
B
-rwxr-xr-x
2022-02-09 18:56
ensure_vhost_includes
13.53
KB
-rwxr-xr-x
2022-02-09 18:56
exim_tidydb
2.96
KB
-rwxr-xr-x
2022-02-09 18:56
eximconfgen
1.32
KB
-rwxr-xr-x
2022-02-09 18:56
eximstats_spam_check
867
B
-rwxr-xr-x
2022-02-09 18:56
export_horde_calendars_to_ics
15.07
KB
-rwxr-xr-x
2023-09-08 13:28
export_horde_contacts_to_vcf
13.94
KB
-rwxr-xr-x
2023-06-09 14:05
exportmydnsdb
3.47
KB
-rwxr-xr-x
2022-02-09 18:56
expunge_expired_certificates_from_sslstorage
3.56
KB
-rwxr-xr-x
2022-02-09 18:56
expunge_expired_pkgacct_sessions
852
B
-rwxr-xr-x
2022-02-09 18:56
expunge_expired_transfer_sessions
1.06
KB
-rwxr-xr-x
2022-02-09 18:56
fastmail
5.16
KB
-rwxr-xr-x
2022-02-09 18:56
featuremod
1.92
KB
-rwxr-xr-x
2022-02-09 18:56
fetchfile
422
B
-rwxr-xr-x
2022-02-09 18:56
find_and_fix_rpm_issues
6.99
KB
-rwxr-xr-x
2022-02-09 18:56
find_outdated_services
5.41
KB
-rwxr-xr-x
2023-06-09 14:05
find_pids_with_inotify_watch_on_path
3.66
KB
-rwxr-xr-x
2022-02-09 18:56
fix-cpanel-perl
28.82
KB
-rwxr-xr-x
2025-10-17 05:25
fix-listen-on-localhost
3.52
KB
-rwxr-xr-x
2022-02-09 18:56
fix-web-vhost-configuration
6.15
KB
-rwxr-xr-x
2022-02-09 18:56
fix_addon_permissions
7.68
KB
-rwxr-xr-x
2022-02-09 18:56
fix_dns_zone_ttls
1.34
KB
-rwxr-xr-x
2022-02-09 18:56
fix_innodb_tables
4.05
KB
-rwxr-xr-x
2022-02-09 18:56
fix_pear_registry
4.07
KB
-rwxr-xr-x
2022-02-09 18:56
fix_reseller_acls
10.88
KB
-rwxr-xr-x
2022-02-09 18:56
fixetchosts
4.32
KB
-rwxr-xr-x
2022-02-09 18:56
fixheaders
572
B
-rwxr-xr-x
2022-02-09 18:56
fixmailinglistperms
1008
B
-rwxr-xr-x
2022-02-09 18:56
fixmailman
2.09
KB
-rwxr-xr-x
2022-02-09 18:56
fixnamedviews
1.22
KB
-rwxr-xr-x
2022-02-09 18:56
fixndc
413
B
-rwxr-xr-x
2022-02-09 18:56
fixquotas
17.45
KB
-rwxr-xr-x
2022-12-09 14:03
fixrelayd
1.74
KB
-rwxr-xr-x
2022-02-09 18:56
fixrndc
16.48
KB
-rwxr-xr-x
2022-02-09 18:56
fixtar
503
B
-rwxr-xr-x
2022-02-09 18:56
fixtlsversions
4.7
KB
-rwxr-xr-x
2022-02-09 18:56
fixvaliases
2
KB
-rwxr-xr-x
2022-02-09 18:56
fixwebalizer
966
B
-rwxr-xr-x
2022-02-09 18:56
forcelocaldomain
895
B
-rwxr-xr-x
2022-02-09 18:56
ftpfetch
2.2
KB
-rwxr-xr-x
2019-12-06 17:06
ftpquotacheck
8.31
KB
-rwxr-xr-x
2022-02-09 18:56
ftpsfetch
2.36
KB
-rwxr-xr-x
2019-12-06 17:06
ftpupdate
261
B
-rwxr-xr-x
2020-04-15 16:08
gather_update_log_stats
4.25
KB
-rwx------
2026-03-04 22:46
gather_update_logs_setupcrontab
5.45
KB
-rwx------
2026-03-04 22:46
gemwrapper
1.74
KB
-rwxr-xr-x
2022-02-09 18:56
gencrt
6.26
KB
-rwxr-xr-x
2022-02-09 18:56
generate_account_suspension_include
5.7
KB
-rwxr-xr-x
2022-02-09 18:56
generate_google_drive_credentials
1.11
KB
-rwxr-xr-x
2022-02-09 18:56
generate_google_drive_oauth_uri
984
B
-rwxr-xr-x
2022-02-09 18:56
generate_maildirsize
13.94
KB
-rwxr-xr-x
2022-09-09 17:01
gensysinfo
1.16
KB
-rwxr-xr-x
2022-02-09 18:56
get_locale_from_legacy_name_info
1.99
KB
-rwxr-xr-x
2022-02-09 18:56
getremotecpmove
12.67
KB
-rwxr-xr-x
2022-07-28 00:26
grpck
1.19
KB
-rwxr-xr-x
2022-02-09 18:56
hackcheck
3.02
KB
-rwxr-xr-x
2022-02-09 18:56
hook
1.45
KB
-rwxr-xr-x
2022-02-09 18:56
httpspamdetect
2.66
KB
-rwxr-xr-x
2022-02-09 18:56
hulk-unban-ip
3.93
MB
-rwx------
2026-02-17 06:25
import_exim_data
8.39
KB
-rwxr-xr-x
2022-07-28 00:26
importmydnsdb
11.34
KB
-rwxr-xr-x
2022-02-09 18:56
increase_filesystem_limits
891
B
-rwxr-xr-x
2022-02-09 18:56
initacls
4.99
KB
-rwxr-xr-x
2022-02-09 18:56
initfpsuexec
444
B
-rwxr-xr-x
2022-02-09 18:56
initquotas
19.47
KB
-rwxr-xr-x
2022-02-09 18:56
initsuexec
4.03
KB
-rwxr-xr-x
2022-02-09 18:56
install_cpanel_analytics
1.93
KB
-rwxr-xr-x
2022-12-09 14:03
install_dovecot_fts
1.57
KB
-rwxr-xr-x
2022-02-09 18:56
install_plugin
2.8
KB
-rwxr-xr-x
2022-07-28 00:26
install_tuxcare_els_php
1.84
KB
-rwxr-xr-x
2026-01-07 06:25
installpkg
575
B
-rwxr-xr-x
2022-02-09 18:56
installpostgres
6.56
KB
-rwxr-xr-x
2022-02-09 18:56
installsqlite3
1.82
KB
-rwxr-xr-x
2022-02-09 18:56
ipcheck
3.93
KB
-rwxr-xr-x
2022-02-09 18:56
ipusage
7.45
KB
-rwxr-xr-x
2022-02-09 18:56
isdedicatedip
602
B
-rwxr-xr-x
2022-02-09 18:56
jetbackup-check
3.69
KB
-rwxr-xr-x
2022-02-09 18:56
killdns
422
B
-rwxr-xr-x
2022-02-09 18:56
killdns-dnsadmin
1.15
KB
-rwxr-xr-x
2022-02-09 18:56
killmysqluserprivs
433
B
-rwxr-xr-x
2022-02-09 18:56
killmysqlwildcard
1.15
KB
-rwxr-xr-x
2022-02-09 18:56
killpvhost
853
B
-rwxr-xr-x
2022-02-09 18:56
killspamkeys
937
B
-rwxr-xr-x
2022-02-09 18:56
link_3rdparty_binaries
1.24
KB
-rwxr-xr-x
2022-03-11 15:43
linksubemailtomainacct
3.17
KB
-rwxr-xr-x
2022-02-09 18:56
listcheck
538
B
-rwxr-xr-x
2022-02-09 18:56
listsubdomains
1.05
KB
-rwxr-xr-x
2022-02-09 18:56
litespeed-check
3.86
KB
-rwxr-xr-x
2022-02-09 18:56
locale_export
4.82
KB
-rwxr-xr-x
2022-02-09 18:56
locale_import
4.35
KB
-rwxr-xr-x
2022-02-09 18:56
locale_info
3.99
KB
-rwxr-xr-x
2022-02-09 18:56
logo.dat
205
B
-rw-r--r--
2015-02-11 17:35
magicloader
1.94
KB
-rwxr-xr-x
2022-02-09 18:56
maildir_converter
6.08
KB
-rwxr-xr-x
2022-02-09 18:56
mailperm
16.58
KB
-rwxr-xr-x
2022-02-09 18:56
mailscannerupdate
2.42
KB
-rwxr-xr-x
2022-02-09 18:56
mainipcheck
10
KB
-rwxr-xr-x
2022-02-09 18:56
maintenance
47.64
KB
-rwxr-xr-x
2026-02-17 06:25
make_config
407
B
-rw-r--r--
2015-02-11 17:35
make_hostname_unowned
1.16
KB
-rwxr-xr-x
2022-02-09 18:56
manage_extra_marketing
12.76
KB
-rwx------
2026-03-03 18:34
manage_greylisting
16.19
KB
-rwxr-xr-x
2022-07-28 00:26
manage_mysql_profiles
20.02
KB
-rwxr-xr-x
2022-12-09 14:03
migrate-pdns-conf
9.83
KB
-rwxr-xr-x
2024-09-13 14:10
migrate_local_ini_to_php_ini
7.41
KB
-rwxr-xr-x
2022-02-09 18:56
migrate_whmtheme_file_to_userdata
2.95
KB
-rwxr-xr-x
2022-02-09 18:56
mkwwwacctconf
2.33
KB
-rwxr-xr-x
2022-09-09 17:01
modify_accounts
4.09
KB
-rwxr-xr-x
2022-07-28 00:26
modify_featurelist
10.31
KB
-rwx------
2026-03-03 18:34
modify_packages
3.65
KB
-rwxr-xr-x
2022-07-28 00:26
modsec_vendor
15.63
KB
-rwxr-xr-x
2022-02-09 18:56
mysqlconnectioncheck
6.55
KB
-rwxr-xr-x
2022-02-09 18:56
mysqlpasswd
4.09
KB
-rwxr-xr-x
2022-02-09 18:56
named.ca
1.57
KB
-rw-r--r--
2015-02-11 17:35
named.rfc1912.zones
774
B
-rw-r--r--
2017-09-22 16:06
notify_expiring_certificates
9.37
KB
-rwxr-xr-x
2022-03-11 15:43
notify_expiring_certificates_on_linked_nodes
1.33
KB
-rwxr-xr-x
2022-07-28 00:26
oopscheck
1.12
KB
-rwxr-xr-x
2022-02-09 18:56
optimize_eximstats
3.88
KB
-rwxr-xr-x
2022-02-09 18:56
patch_mail_spamassassin_compiledregexps_body_0
2.39
KB
-rwxr-xr-x
2022-02-09 18:56
patchfdsetsize
2.72
KB
-rwxr-xr-x
2022-02-09 18:56
pedquota
2.26
KB
-rwxr-xr-x
2022-02-09 18:56
perform_sqlite_auto_rebuild_db_maintenance
2.2
KB
-rwxr-xr-x
2022-02-09 18:56
perlinstaller
528
B
-rwxr-xr-x
2022-02-09 18:56
perlmods
1.18
KB
-rwxr-xr-x
2022-02-09 18:56
php_fpm_config
9.73
KB
-rwxr-xr-x
2022-02-09 18:56
phpini_tidy
687
B
-rwxr-xr-x
2022-02-09 18:56
pkgacct
88.56
KB
-rwxr-xr-x
2026-02-04 06:25
post_snapshot
3.16
KB
-rwxr-xr-x
2022-09-09 17:01
post_sync_cleanup
6.09
KB
-rwxr-xr-x
2022-02-09 18:56
postkillacct
2.73
KB
-rwx------
2025-08-06 08:04
postmodifyacct
1.59
KB
-rwxr-x---
2025-08-06 08:08
postrestoreacct
1.71
KB
-rwxr-xr-x
2025-08-06 08:07
postupcp
711
B
-rwxr-xr-x
2026-02-10 18:07
postwwwacct
5.48
KB
-rwxr-x---
2025-08-12 06:38
prekillacct
375
B
-rwx------
2025-08-06 08:05
prerestoreacct
1
KB
-rwxr-xr-x
2025-08-06 08:04
presuspendacct
402
B
-rwx------
2025-08-06 08:05
preunsuspendacct
119
B
-rwx------
2025-08-06 08:04
preupcp
53
B
-rwxr-xr-x
2025-08-06 08:05
primary_virtual_host_migration
2.44
KB
-rwxr-xr-x
2022-02-09 18:56
process_cpmove
4.23
KB
-rwxr-xr-x
2026-02-17 18:27
process_pending_cpanel_php_pear_registration
3.49
KB
-rwxr-xr-x
2022-02-09 18:56
process_site_templates
7.27
KB
-rwxr-xr-x
2022-02-09 18:56
proxydomains
9.34
KB
-rwxr-xr-x
2022-02-09 18:56
ptycheck
724
B
-rwxr-xr-x
2022-02-09 18:56
purge_modsec_log
1.53
KB
-rwxr-xr-x
2022-02-09 18:56
purge_old_config_caches
2.08
KB
-rwxr-xr-x
2022-02-09 18:56
pwck
708
B
-rwxr-xr-x
2022-02-09 18:56
quickdnslookup
1.13
KB
-rwxr-xr-x
2022-02-09 18:56
quickwhoisips
2.29
KB
-rwxr-xr-x
2022-07-28 00:26
quota_auto_fix
1.41
KB
-rwxr-xr-x
2022-02-09 18:56
quotacheck
22.36
KB
-rwxr-xr-x
2022-07-28 00:26
rawchpass
460
B
-rwxr-xr-x
2022-02-09 18:56
rdate
4.8
KB
-rwxr-xr-x
2022-07-28 00:26
realadduser
5.61
KB
-rwxr-xr-x
2022-02-09 18:56
realchpass
3.26
KB
-rwxr-xr-x
2022-02-09 18:56
realperlinstaller
5.67
KB
-rwxr-xr-x
2022-02-09 18:56
realrawchpass
425
B
-rwxr-xr-x
2022-02-09 18:56
rebuild_available_addons_packages_cache
1.27
KB
-rwxr-xr-x
2022-02-09 18:56
rebuild_available_rpm_addons_cache
1.27
KB
-rwxr-xr-x
2022-02-09 18:56
rebuild_bandwidthdb_root_cache
1.45
KB
-rwxr-xr-x
2022-02-09 18:56
rebuild_dbmap
5.8
KB
-rwxr-xr-x
2022-02-09 18:56
rebuild_provider_openid_connect_links_db
1.01
KB
-rwxr-xr-x
2022-02-09 18:56
rebuild_whm_chrome
2.22
KB
-rwxr-xr-x
2022-02-09 18:56
rebuilddnsconfig
26.21
KB
-rwxr-xr-x
2022-02-09 18:56
rebuildhttpdconf
2.6
KB
-rwxr-xr-x
2022-02-09 18:56
rebuildinstalledssldb
2.85
KB
-rwxr-xr-x
2022-02-09 18:56
rebuildippool
509
B
-rwxr-xr-x
2022-02-09 18:56
rebuildnsdzones
1.14
KB
-rwxr-xr-x
2022-02-09 18:56
rebuilduserssldb
948
B
-rwxr-xr-x
2022-02-09 18:56
refresh-dkim-validity-cache
5.97
KB
-rwxr-xr-x
2022-02-09 18:56
regenerate_tokens
2.18
KB
-rwxr-xr-x
2022-06-10 15:47
reloadnsd
821
B
-rwxr-xr-x
2022-02-09 18:56
remote_log_transfer
11.6
KB
-rwxr-xr-x
2022-09-09 17:01
remove_dovecot_index_files
5.89
KB
-rwxr-xr-x
2022-02-09 18:56
removeacct
20.92
MB
-rwx------
2026-02-17 06:25
rescan_user_dovecot_fts
2.98
KB
-rwxr-xr-x
2022-02-09 18:56
reset_mail_quotas_to_sane_values
6.82
KB
-rwxr-xr-x
2022-02-09 18:56
resetmailmanurls
2.03
KB
-rwxr-xr-x
2022-02-09 18:56
resetquotas
4.68
KB
-rwxr-xr-x
2022-02-09 18:56
restartsrv
3.23
KB
-rwxr-xr-x
2022-02-09 18:56
restartsrv_apache
422
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_apache_php_fpm
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_base
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_bind
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_chkservd
427
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_clamd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpanalyticsd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpanel_php_fpm
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpanellogd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpdavd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpgreylistd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cphulkd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpipv6
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_cpsrvd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_crond
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_dnsadmin
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_dovecot
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_exim
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_eximstats
504
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_ftpd
426
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_ftpserver
911
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_httpd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_imap
437
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_inetd
2.47
KB
-rwxr-xr-x
2022-06-10 15:47
restartsrv_ipaliases
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_lmtp
437
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_mailman
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_mydns
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_mysql
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_named
777
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_nscd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_nsd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_p0f
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_pdns
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_pop3
437
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_postgres
427
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_postgresql
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_powerdns
442
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_proftpd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_pureftpd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_queueprocd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_rsyslog
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_rsyslogd
437
B
-rwxr-xr-x
2022-02-09 18:56
restartsrv_spamd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_sshd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_syslogd
2.4
KB
-rwxr-xr-x
2022-03-11 15:43
restartsrv_tailwatchd
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_unknown
9.9
MB
-rwxr-xr-x
2026-02-17 06:25
restartsrv_xinetd
422
B
-rwxr-xr-x
2022-02-09 18:56
restorecpuserfromcache
1.96
KB
-rwxr-xr-x
2022-02-09 18:56
restorepkg
36.93
MB
-rwx------
2026-02-24 06:25
rfc1912_zones.tar
10
KB
-rw-r--r--
2015-02-11 17:35
rpmup
4.77
KB
-rwxr-xr-x
2022-02-09 18:56
rsync-user-homedir.pl
5.76
KB
-rwxr-xr-x
2022-02-09 18:56
run_if_exists
512
B
-rwxr-xr-x
2022-02-09 18:56
run_plugin_lifecycle
3.72
KB
-rwx------
2026-03-03 18:34
runstatsonce
440
B
-rwxr-xr-x
2022-02-09 18:56
runweblogs
1.02
KB
-rwxr-xr-x
2022-02-09 18:56
sa-update_wrapper
3.34
KB
-rwxr-xr-x
2022-02-09 18:56
safetybits.pl
844
B
-rwxr-xr-x
2022-02-09 18:56
secureit
4.72
KB
-rwxr-xr-x
2022-02-09 18:56
securemysql
4.54
KB
-rwxr-xr-x
2022-02-09 18:56
securerailsapps
3.58
KB
----------
2022-02-09 18:56
securetmp
15.99
KB
-rwxr-xr-x
2023-09-08 13:28
sendicq
474
B
-rwxr-xr-x
2022-02-09 18:56
servicedomains
9.34
KB
-rwxr-xr-x
2022-02-09 18:56
set_mailman_archive_perms
1.75
KB
-rwxr-xr-x
2022-02-09 18:56
set_php_memory_limits
3.67
KB
-rwxr-xr-x
2022-02-09 18:56
setpostgresconfig
6.04
KB
-rwxr-xr-x
2022-02-09 18:56
setup_greylist_db
16.19
KB
-rwxr-xr-x
2022-07-28 00:26
setup_modsec_db
1.3
KB
-rwxr-xr-x
2022-02-09 18:56
setup_systemd_timer_for_plugins
3.92
KB
-rwx------
2026-03-03 18:34
setupftpserver
10.47
KB
-rwxr-xr-x
2022-02-09 18:56
setupmailserver
9.55
KB
-rwxr-xr-x
2022-02-09 18:56
setupnameserver
13.75
KB
-rwxr-xr-x
2022-06-10 15:47
shrink_modsec_ip_database
12.97
KB
-rwxr-xr-x
2022-02-09 18:56
simpleps
3.05
KB
-rwxr-xr-x
2022-02-09 18:56
slurp_exim_mainlog
5.78
KB
-rwxr-xr-x
2022-02-09 18:56
smartcheck
15.13
KB
-rwxr-xr-x
2022-02-09 18:56
smtpmailgidonly
8.15
KB
-rwxr-xr-x
2022-09-09 17:01
snapshot_prep
5.88
KB
-rwxr-xr-x
2022-09-09 17:01
spamassassin_dbm_cleaner
5.85
KB
-rwxr-xr-x
2022-07-28 00:26
spamassassindisable
3.74
KB
-rwxr-xr-x
2022-06-10 15:47
spamboxdisable
2.27
KB
-rwxr-xr-x
2022-06-10 15:47
sshcontrol
14.38
KB
-rwxr-xr-x
2022-02-09 18:56
ssl_crt_status
3.84
KB
-rwxr-xr-x
2022-02-09 18:56
suspendacct
18.01
KB
-rwxr-xr-x
2023-03-10 15:03
suspendmysqlusers
4.42
KB
-rwxr-xr-x
2022-02-09 18:56
swapip
3.82
KB
-rwxr-xr-x
2022-02-09 18:56
sync-mysql-users-from-grants
1.2
KB
-rwxr-xr-x
2022-02-09 18:56
sync_child_accounts
1.77
KB
-rwxr-xr-x
2022-02-09 18:56
sync_contact_emails_to_cpanel_users_files
1.14
KB
-rwxr-xr-x
2022-06-10 15:47
synccpaddonswithsqlhost
6.59
KB
-rwxr-xr-x
2022-02-09 18:56
synctransfers
1.92
KB
-rwxr-xr-x
2022-02-09 18:56
syslog_check
1.36
KB
-rwxr-xr-x
2022-02-09 18:56
sysup
645
B
-rwxr-xr-x
2022-02-09 18:56
test_sa_compiled
1.07
KB
-rwxr-xr-x
2022-02-09 18:56
transfer_account_as_user
2.34
KB
-rwxr-xr-x
2022-02-09 18:56
transfer_accounts_as_root
4.76
KB
-rwxr-xr-x
2022-02-09 18:56
transfer_in_progress
3.08
KB
-rwxr-xr-x
2022-02-09 18:56
transfer_in_progress.pod
312
B
-rw-r--r--
2016-11-17 01:07
transfermysqlusers
9.55
MB
-rwx------
2026-02-17 06:25
try-later
7.95
KB
-rwxr-xr-x
2022-02-09 18:56
uf
362
B
-rwx------
2025-08-06 08:07
unblockip
667
B
-rwxr-xr-x
2022-02-09 18:56
uninstall_cpanel_analytics
1.2
KB
-rwxr-xr-x
2022-02-09 18:56
uninstall_dovecot_fts
562
B
-rwxr-xr-x
2022-02-09 18:56
uninstall_plugin
2.84
KB
-rwxr-xr-x
2022-07-28 00:26
unlink_service_account
2.62
KB
-rwxr-xr-x
2022-02-09 18:56
unpkgacct
4.6
KB
-rwxr-xr-x
2022-02-09 18:56
unslavenamedconf
863
B
-rwxr-xr-x
2022-02-09 18:56
unsuspendacct
17.8
KB
-rwxr-xr-x
2022-12-09 14:03
unsuspendmysqlusers
6.71
KB
-rwxr-xr-x
2022-07-28 00:26
upcp
31.56
KB
-rwxr-xr-x
2022-07-28 00:26
upcp-running
2.7
KB
-rwxr-xr-x
2022-02-09 18:56
upcp.static
709.53
KB
-rwxr-xr-x
2026-02-24 06:25
update-packages
4.77
KB
-rwxr-xr-x
2022-02-09 18:56
update_apachectl
480
B
-rwxr-xr-x
2022-02-09 18:56
update_db_cache
430
B
-rwxr-xr-x
2022-02-09 18:56
update_dkim_keys
1.45
KB
-rwxr-xr-x
2022-02-09 18:56
update_exim_rejects
1.21
KB
-rwxr-xr-x
2022-02-09 18:56
update_existing_mail_quotas_for_account
4.78
KB
-rwxr-xr-x
2022-02-09 18:56
update_known_proxy_ips
1002
B
-rwxr-xr-x
2022-02-09 18:56
update_local_rpm_versions
4.56
KB
-rwxr-xr-x
2022-12-02 16:31
update_mailman_cache
8.34
KB
-rwxr-xr-x
2022-02-09 18:56
update_mysql_systemd_config
1.25
KB
-rwxr-xr-x
2022-02-09 18:56
update_neighbor_netblocks
487
B
-rwxr-xr-x
2022-02-09 18:56
update_sa_config
2.14
KB
-rwxr-xr-x
2022-02-09 18:56
update_spamassassin_config
10.73
KB
-rwxr-xr-x
2022-12-02 16:31
update_users_jail
691
B
-rwxr-xr-x
2022-02-09 18:56
update_users_vhosts
801
B
-rwxr-xr-x
2022-02-09 18:56
updatedomainips
605
B
-rwxr-xr-x
2022-02-09 18:56
updatenameserverips
1.66
KB
-rwxr-xr-x
2022-02-09 18:56
updatenow
5.18
KB
-rwxr-xr-x
2022-07-28 00:26
updatenow.static
1.91
MB
-rwxr-xr-x
2026-02-24 06:25
updatesigningkey
1.95
KB
-rwxr-xr-x
2022-02-09 18:56
updatessldomains
1.81
KB
-rwxr-xr-x
2022-02-09 18:56
updatesupportauthorizations
2.49
KB
-rwxr-xr-x
2022-02-09 18:56
updateuserdatacache
2.47
KB
-rwxr-xr-x
2022-02-09 18:56
updateuserdomains
774
B
-rwxr-xr-x
2022-02-09 18:56
upgrade_bandwidth_dbs
2.22
KB
-rwxr-xr-x
2022-02-09 18:56
upgrade_subaccount_databases
2.73
KB
-rwxr-xr-x
2022-02-09 18:56
userdata_wildcard_cleanup
5.74
KB
-rwxr-xr-x
2022-02-09 18:56
userdirctl
5.01
KB
-rwxr-xr-x
2022-02-09 18:56
validate_sshkey_passphrase
1.21
KB
-rwxr-xr-x
2022-02-09 18:56
verify_api_spec_files
757
B
-rwxr-xr-x
2022-02-09 18:56
verify_pidfile
1.96
KB
-rwxr-xr-x
2022-02-09 18:56
verify_vhost_includes
7.34
KB
-rwxr-xr-x
2022-07-28 00:26
vps_optimizer
7.82
KB
-rwxr-xr-x
2022-02-09 18:56
vzzo-fixer
725
B
-rwxr-xr-x
2022-02-09 18:56
whmlogin
2.33
KB
-rwxr-xr-x
2022-02-09 18:56
whoowns
1.13
KB
-rwxr-xr-x
2016-09-13 16:25
wpt_license
6.27
MB
-rwx------
2026-02-17 06:25
wwwacct
24.59
MB
-rwx------
2026-02-17 06:25
wwwacct2
88
B
-rwxr-xr-x
2015-02-11 17:35
xfer_rcube_schema_migrate.pl
2.4
KB
-rwxr-xr-x
2022-02-09 18:56
xfer_rcube_uid_resolver.pl
1.8
KB
-rwxr-xr-x
2022-02-09 18:56
xferpoint
3.13
KB
-rwxr-xr-x
2022-02-09 18:56
xfertool
16.14
KB
-rwxr-xr-x
2022-12-09 14:03
zoneexists
800
B
-rwxr-xr-x
2022-02-09 18:56
Save
Rename
#!/usr/local/cpanel/3rdparty/bin/perl # Copyright 2025 WebPros International, LLC # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited. =encoding utf-8 =head1 NAME comet_protected_item_maintenance - Maintenance and retention operations for Comet Protected Items and deleted users =head1 SYNOPSIS comet_protected_item_maintenance [--status] comet_protected_item_maintenance --list-users comet_protected_item_maintenance --prune-days=90 [--user=USERNAME] [--users=USER1,USER2,...] [--dry-run] comet_protected_item_maintenance --list-deleted-user-snapshots comet_protected_item_maintenance --prune-user=USERNAME [--dry-run] comet_protected_item_maintenance --prune-all-deleted-users [--dry-run] comet_protected_item_maintenance --restore-deleted-user=USERNAME [--use-snapshot=SNAPSHOT_ID] [--dry-run] =head1 DESCRIPTION Performs maintenance on the consolidated metadata database for Comet Protected Items and deleted cPanel users. Supports listing users, pruning terminated Protected Item records, pruning deleted user snapshot records from backup run logs, enumerating snapshots for deleted users, marking deleted users as pruned (stub), and simulating a restore (stub implementation). The metadata database tracks both active Protected Item mappings and retention information for deleted users. Snapshot data is stored in the backup run logs database. Actual snapshot and restore logic are pending integration with the backend Comet service; current commands provide placeholders to exercise CLI flows. =cut package scripts::comet_protected_item_maintenance; use cPstrict; use Getopt::Long (); use Pod::Usage (); use FindBin; use lib "$FindBin::Bin/../plugins/whm/comet/perl/usr/local/cpanel"; use Whostmgr::CometBackup::ProtectedItemMap (); use Whostmgr::CometBackup::DeletedUsers (); # Option variables my $prune_days = 0; my $list_users = 0; my $help = 0; my $status = 0; # explicit status request my $prune_user = ''; my $prune_all_deleted_users = 0; my $list_deleted_snapshots = 0; my $restore_deleted_user = ''; my $use_snapshot = ''; my $dry_run = 0; my $user = ''; # single user for --prune-days my $users = ''; # comma-separated users for --prune-days sub main { Getopt::Long::GetOptions( 'prune-days=i' => \$prune_days, 'list-users' => \$list_users, 'help|h' => \$help, 'status' => \$status, 'prune-user=s' => \$prune_user, 'prune-all-deleted-users' => \$prune_all_deleted_users, 'list-deleted-user-snapshots' => \$list_deleted_snapshots, 'restore-deleted-user=s' => \$restore_deleted_user, 'use-snapshot=s' => \$use_snapshot, 'dry-run' => \$dry_run, 'user=s' => \$user, 'users=s' => \$users, ) or Pod::Usage::pod2usage(2); if ($help) { Pod::Usage::pod2usage(1); return; } my $map = Whostmgr::CometBackup::ProtectedItemMap->new(); my $deleted = Whostmgr::CometBackup::DeletedUsers->new(); # Dispatch precedence: prune specific user, prune all, restore, list snapshots, prune-days, list-users, status(default) if ($prune_user) { prune_single_deleted_user( $deleted, $prune_user, $dry_run ); return; } if ($prune_all_deleted_users) { prune_all_deleted_users( $deleted, $dry_run ); return; } if ($restore_deleted_user) { restore_deleted_user( $deleted, $restore_deleted_user, $use_snapshot, $dry_run ); return; } if ($list_deleted_snapshots) { list_deleted_user_snapshots($deleted); return; } if ($prune_days) { prune_old_records( $map, $prune_days, $dry_run, $user, $users ); return; } if ($list_users) { list_users_with_protected_items($map); return; } # Default status view show_status( $map, $deleted ); return; } sub show_status ( $map, $deleted ) { print "Comet Protected Item / Deleted User Status\n"; print "========================================\n\n"; my @all_users = $map->get_all_users_with_protected_items(); my @active_users = $map->get_all_users_with_protected_items( active_only => 1 ); my @deleted_users = $deleted->list_deleted_users(); print "Total users with protected items: " . scalar(@all_users) . "\n"; print "Users with active protected items: " . scalar(@active_users) . "\n"; print "Users with terminated items only: " . ( scalar(@all_users) - scalar(@active_users) ) . "\n"; # XXX: Delete this "Users with protected items" part? if (@all_users) { print "\nUsers with protected items:\n"; for my $user (@all_users) { my @items = $map->get_protected_items_for_user( system_user => $user ); my @active_items = grep { !$_->{user_terminated} } @items; my @terminated_items = grep { $_->{user_terminated} } @items; printf " %-20s: %d total (%d active, %d terminated)\n", $user, scalar(@items), scalar(@active_items), scalar(@terminated_items); } } print "Deleted users tracked: " . scalar(@deleted_users) . "\n"; print "\nUse --list-users for detailed information\n"; print "Use --prune-days=N to remove terminated Protected Item records\n"; print "Use --list-deleted-user-snapshots to view stub snapshots for deleted users\n"; print "Use --prune-user=USER or --prune-all-deleted-users to mark retained backups pruned (stub)\n"; print "Use --restore-deleted-user=USER [--use-snapshot=ID] to simulate restore (stub)\n"; return; } sub list_users_with_protected_items ($map) { print "Users with Protected Items\n"; print "==========================\n\n"; my @all_users = $map->get_all_users_with_protected_items( active_only => 1 ); if ( !@all_users ) { print "No users found with protected items.\n"; return; } for my $user (@all_users) { print "User: $user\n"; print "-" x 40 . "\n"; my @items = $map->get_protected_items_for_user( system_user => $user ); for my $item (@items) { my $user_status = $item->{user_terminated} ? 'Terminated' : 'Active'; my $item_status = $item->{status} || 'unknown'; my $terminated = $item->{terminated_timestamp} ? localtime( $item->{terminated_timestamp} ) : 'N/A'; print " Protected Item: $item->{protected_item_uid}\n"; print " User Status: $user_status\n"; print " Item Status: $item_status\n"; print " User UUID: $item->{cpanel_user_uuid}\n"; print " Terminated: $terminated\n"; print "\n"; } } return; } sub prune_old_records ( $map, $days, $dry_run = 0, $single_user = '', $user_list = '' ) { my $cutoff_time = time() - ( $days * 24 * 60 * 60 ); # Build list of users to target my @target_users; if ($single_user) { push @target_users, $single_user; } if ($user_list) { push @target_users, split( /,/, $user_list ); } if ($dry_run) { if (@target_users) { print "[DRY RUN] Would prune terminated records older than $days days for users: " . join( ', ', @target_users ) . "...\n"; } else { print "[DRY RUN] Would prune terminated records older than $days days...\n"; } # Query what would be pruned from Protected Item map my %prune_args = ( older_than_days => $days, dry_run => 1 ); $prune_args{users} = \@target_users if @target_users; my $map_count = $map->prune_inactive_users(%prune_args); print "[DRY RUN] Would prune $map_count old terminated Protected Item records.\n"; # Query what would be pruned from backup run logs (deleted user snapshots) my $deleted = Whostmgr::CometBackup::DeletedUsers->new(); my %snapshot_args = ( cutoff_epoch => $cutoff_time, dry_run => 1 ); $snapshot_args{users} = \@target_users if @target_users; my $result = $deleted->prune_deleted_user_snapshots_before(%snapshot_args); if ( $result->{error} ) { print "[DRY RUN] Error checking deleted user snapshots: $result->{error}\n"; } else { my $snapshot_count = $result->{count}; my @affected_users = @{ $result->{users_affected} || [] }; print "[DRY RUN] Would prune $snapshot_count deleted user snapshot records"; if (@affected_users) { print " for users: " . join( ', ', @affected_users ); } print ".\n"; } my $total = $map_count + ( $result->{count} || 0 ); print "[DRY RUN] Total records that would be pruned: $total\n"; } else { if (@target_users) { print "Pruning terminated records older than $days days for users: " . join( ', ', @target_users ) . "...\n"; } else { print "Pruning terminated records older than $days days...\n"; } # Prune terminated Protected Item records my %prune_args = ( older_than_days => $days ); $prune_args{users} = \@target_users if @target_users; my $map_count = $map->prune_inactive_users(%prune_args); print "Pruned $map_count old terminated Protected Item records.\n"; # Prune deleted user snapshots from backup run logs my $deleted = Whostmgr::CometBackup::DeletedUsers->new(); my %snapshot_args = ( cutoff_epoch => $cutoff_time, dry_run => 0 ); $snapshot_args{users} = \@target_users if @target_users; my $result = $deleted->prune_deleted_user_snapshots_before(%snapshot_args); if ( $result->{error} ) { print "Error pruning deleted user snapshots: $result->{error}\n"; } else { my $snapshot_count = $result->{count}; my @affected_users = @{ $result->{users_affected} || [] }; print "Pruned $snapshot_count deleted user snapshot records"; if (@affected_users) { print " for users: " . join( ', ', @affected_users ); } print ".\n"; } my $total = $map_count + ( $result->{count} || 0 ); print "Total records pruned: $total\n"; } } sub list_deleted_user_snapshots ($deleted) { my @users = $deleted->list_deleted_users(); if ( !@users ) { print "No deleted users to list snapshots for.\n"; return; } # Filter to only include users that don't exist locally anymore my @truly_deleted_users = grep { my $username = $_->{system_user}; !getpwnam($username); # Only include if user doesn't exist } @users; if ( !@truly_deleted_users ) { print "No deleted users to list snapshots for.\n"; print "(All tracked deleted users still exist in the system)\n"; return; } print "Deleted User Snapshots\n"; print "======================\n\n"; for my $user_info (@truly_deleted_users) { my $username = $user_info->{system_user}; my $result = $deleted->list_deleted_user_snapshots($username); if ( $result->{error} ) { print "Error for user $username: $result->{error}\n\n"; next; } print "User: $username\n"; print "-" x ( 6 + length($username) ) . "\n"; if ( $result->{count} == 0 ) { print " No snapshots available\n\n"; next; } for my $snap ( @{ $result->{snapshots} } ) { my $created = localtime( $snap->{created_at} // time() ); my $size = $snap->{size} // 'Unknown'; my $type = $snap->{type} // 'Unknown'; my $status = $snap->{status} // 'Unknown'; my $source_id = $snap->{source_id} // $snap->{protected_item_id} // 'Unknown'; my $destination_id = $snap->{destination_id} // 'Unknown'; my $snapshot_id = $snap->{snapshot_uuid} // $snap->{snapshot_id} // 'Unknown'; print " Snapshot:\n"; print " Source ID: $source_id\n"; print " Destination ID: $destination_id\n"; print " Snapshot ID: $snapshot_id\n"; print " Type: $type\n"; print " Created: $created\n"; print " Size: $size bytes\n"; print " Status: $status\n"; print "\n"; } print "\n"; } return; } sub prune_single_deleted_user ( $deleted, $user, $dry_run = 0 ) { if ($dry_run) { print "[DRY RUN] Would prune deleted user '$user'...\n"; my $result = $deleted->prune_single_deleted_user( $user, dry_run => 1 ); if ( $result->{error} ) { print "[DRY RUN] Error: $result->{error}\n"; return; } print "[DRY RUN] Would succeed: $result->{message}\n"; } else { print "Pruning deleted user '$user'...\n"; my $result = $deleted->prune_single_deleted_user($user); if ( $result->{error} ) { print "Error: $result->{error}\n"; return; } print "Success: $result->{message}\n"; } return; } sub prune_all_deleted_users ( $deleted, $dry_run = 0 ) { my @users = $deleted->list_deleted_users(); if ( !@users ) { print "No deleted users to prune.\n"; return; } if ($dry_run) { print "[DRY RUN] Would prune all " . scalar(@users) . " deleted users...\n"; } else { print "Pruning all " . scalar(@users) . " deleted users...\n"; } my $success_count = 0; my $error_count = 0; for my $user_info (@users) { my $username = $user_info->{system_user}; if ($dry_run) { print "[DRY RUN] Would prune user '$username'... "; my $result = $deleted->prune_single_deleted_user( $username, dry_run => 1 ); if ( $result->{error} ) { print "Error: $result->{error}\n"; $error_count++; } else { print "Success\n"; $success_count++; } } else { print "Pruning user '$username'... "; my $result = $deleted->prune_single_deleted_user($username); if ( $result->{error} ) { print "Error: $result->{error}\n"; $error_count++; } else { print "Success\n"; $success_count++; } } } if ($dry_run) { print "\n[DRY RUN] Pruning complete: $success_count would succeed, $error_count errors\n"; } else { print "\nPruning complete: $success_count successful, $error_count errors\n"; } return; } sub restore_deleted_user ( $deleted, $user, $snapshot, $dry_run = 0 ) { if ( !$snapshot ) { # Auto-select latest snapshot if not specified my $snapshots_result = $deleted->list_deleted_user_snapshots($user); if ( $snapshots_result->{error} ) { print "Error: Failed to list snapshots for user '$user': $snapshots_result->{error}\n"; return; } if ( !$snapshots_result->{snapshots} || @{ $snapshots_result->{snapshots} } == 0 ) { print "Error: No snapshots available for user '$user'\n"; return; } # Sort snapshots by created_at descending to get the latest one my @sorted_snapshots = sort { ( $b->{created_at} // 0 ) <=> ( $a->{created_at} // 0 ) } @{ $snapshots_result->{snapshots} }; # Use the latest snapshot (first after sorting) $snapshot = $sorted_snapshots[0]->{snapshot_uuid} // $sorted_snapshots[0]->{snapshot_id}; if ( !$snapshot ) { print "Error: Could not determine snapshot identifier for user '$user'\n"; return; } print "Using latest snapshot: $snapshot\n"; } if ($dry_run) { print "[DRY RUN] Would restore deleted user '$user' from snapshot '$snapshot'...\n"; my $result = $deleted->restore_deleted_user( $user, $snapshot, dry_run => 1 ); if ( $result->{error} ) { print "[DRY RUN] Error: $result->{error}\n"; return; } print "[DRY RUN] Would succeed: $result->{message}\n"; if ( $result->{job_uuid} ) { print "[DRY RUN] Would create restore job UUID: $result->{job_uuid}\n"; } } else { print "Restoring deleted user '$user' from snapshot '$snapshot'...\n"; my $result = $deleted->restore_deleted_user( $user, $snapshot ); if ( $result->{error} ) { print "Error: $result->{error}\n"; return; } print "Success: $result->{message}\n"; if ( $result->{job_uuid} ) { print "Restore job UUID: $result->{job_uuid}\n"; } } return; } # Run as script if not required as module main() if !caller(); 1; __END__ =head1 OPTIONS =over 4 =item B<--status> Show aggregate status (default when no other option is provided). =item B<--list-users> List all users with their Protected Items and activity status. =item B<--prune-days=N> Remove terminated Protected Item records and deleted user snapshot records older than N days. This prunes both the Protected Item map entries for terminated users and the actual snapshot records from the backup run logs database. =item B<--user=USERNAME> Limit --prune-days to a specific user. Can be used multiple times or combined with --users to target multiple users. =item B<--users=USER1,USER2,...> Limit --prune-days to a comma-separated list of users. Can be combined with --user to target additional users. =item B<--list-deleted-user-snapshots> List stub snapshot identifiers for all deleted users. =item B<--prune-user=USERNAME> Mark retained backups for a specific deleted user as pruned (stub implementation). =item B<--prune-all-deleted-users> Mark retained backups for all deleted users as pruned (stub implementation). =item B<--restore-deleted-user=USERNAME> Simulate a restore of a deleted user (stub). If --use-snapshot is not provided, the most recent snapshot will be automatically selected based on creation timestamp. =item B<--use-snapshot=SNAPSHOT_ID> Specify snapshot identifier for simulated restore (used with --restore-deleted-user). If not specified, the most recent snapshot will be used automatically. =item B<--dry-run> Perform a dry run without making any actual changes. Shows what would be done without modifying the database or performing actual operations. Can be used with --prune-days, --prune-user, --prune-all-deleted-users, and --restore-deleted-user. =item B<--help> Show help message. =back =head1 EXAMPLES Show current status: comet_protected_item_maintenance --status List all users and their protected items: comet_protected_item_maintenance --list-users Remove terminated records older than 90 days: comet_protected_item_maintenance --prune-days=90 Remove terminated records for a specific user: comet_protected_item_maintenance --prune-days=90 --user=alice Remove terminated records for multiple users: comet_protected_item_maintenance --prune-days=90 --users=alice,bob,charlie List deleted user snapshots (stub): comet_protected_item_maintenance --list-deleted-user-snapshots Prune a single deleted user: comet_protected_item_maintenance --prune-user=alice Restore a deleted user using the most recent snapshot (stub): comet_protected_item_maintenance --restore-deleted-user=alice Restore a deleted user using a specific snapshot (stub): comet_protected_item_maintenance --restore-deleted-user=alice --use-snapshot=alice-snapA Perform a dry run to see what would be pruned without making changes: comet_protected_item_maintenance --prune-days=90 --dry-run comet_protected_item_maintenance --prune-user=alice --dry-run comet_protected_item_maintenance --prune-all-deleted-users --dry-run comet_protected_item_maintenance --restore-deleted-user=alice --dry-run =head1 FILES =over 4 =item F</var/cpanel/comet/usermap.db> SQLite database containing Protected Item mappings and deleted user retention metadata. =item F</var/cpanel/comet/backup_run_logs.db> SQLite database containing backup run logs and snapshot records for all users, including deleted users. Pruned by the --prune-days option. =back =cut