PATH:
usr
/
local
/
cpanel
/
scripts
#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - scripts/shrink_modsec_ip_database Copyright 2022 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited package scripts::shrink_modsec_ip_database; use strict; use warnings; use File::Temp (); use Cpanel::PwCache (); use Cpanel::FileUtils::Move (); use Cpanel::SafetyBits (); use Cpanel::SafetyBits::Chown (); use Cpanel::AccessIds (); use Cpanel::SafeRun::Object (); use Cpanel::Imports; our $MODSEC_SDBM_UTIL = '/usr/sbin/modsec-sdbm-util'; our $DEFAULT_SECDATADIR = '/var/cpanel/secdatadir'; our @DB_FILE_SUFFIXES = qw( .pag .dir ); # Database file suffixes used by modsec-sdbm-util our $NEW_DB_NAME = 'new_db'; # This name is hard-coded in modsec-sdbm-util our $DB_PERMS = 0640; # S_IRUSR | S_IWUSR | S_IRGRP our $OTHER_EXECUTE_PERMS = 01; # S_IXOTH sub new { my ( $pkg, $opts ) = @_; my $self = ref($opts) eq 'HASH' ? { %{$opts} } : {}; bless $self, $pkg; return $self; } sub as_script { my $self = shift; logger->die('as_script() is a method call.') unless ref $self eq __PACKAGE__; if ( not $ARGV[0] or $ARGV[0] ne '-x' ) { my $msg = 'To execute, use the -x flag.'; logger()->die($msg); } $self->run(); return 1; } sub run { my $self = shift; logger->die('run() is a method call.') unless ref $self eq __PACKAGE__; return 0 unless $self->_bin_check; # Bail out early and silently if the util is not installed my $databases = $self->_gather_databases(); while ( my ( $db_path, $uid ) = each %{$databases} ) { if ( ( stat($MODSEC_SDBM_UTIL) )[2] & $OTHER_EXECUTE_PERMS ) { # Can run util as "other" user? $self->_shrink_db_as_user( $uid, $db_path ); } else { # Will have to settle for doing this as root. $self->_shrink_db( $uid, $db_path ); } } return; } sub _bin_check { return -x $MODSEC_SDBM_UTIL ? 1 : 0; } sub _gather_databases { # All files that belong to the same database and that match @DB_FILE_SUFFIXES will need to have the same file owner or that database will not be in the final output my $self = shift; logger->die('_gather_databases() is a method call.') unless ref $self eq __PACKAGE__; return $self->{'databases'} if defined $self->{'databases'}; my $secdatadir = $self->_secdatadir(); my %databases; if ( opendir( my $dir_fh, $secdatadir ) ) { FILE: while ( my $filename = readdir($dir_fh) ) { SUFFIX: for my $suffix (@DB_FILE_SUFFIXES) { if ( $filename =~ m{ \A (.*) \Q$suffix\E \Z }xms ) { my $short_name = $1; # Filename without suffix my $db_path = $secdatadir . '/' . $short_name; # Database path name suitable for passing to modsec-sdbm-util next FILE if exists $databases{$db_path}; # Move along if this belongs to a database already in the collection my $owner = $self->_validate_database_files_owner($db_path); # Check if there is a full set of files for this database path if ( $self->_allowed_owner($owner) ) { $databases{$db_path} = $owner; # Verified, add it to the collection next FILE; } } } } closedir($dir_fh); } return $self->{'databases'} = \%databases; } sub _shrink_db_as_user { my ( $self, $uid, $db_path ) = @_; logger->die('_shrink_db_as_user() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_shrink_db_as_user() called without expected arguments.') unless length $uid && length $db_path; return Cpanel::AccessIds::do_as_user( $uid, sub { $self->_shrink_db( $uid, $db_path ) } ); } sub _shrink_db { my ( $self, $uid, $db_path ) = @_; logger->die('_shrink_db() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_shrink_db() called without expected arguments.') unless length $uid && length $db_path; my $secdatadir = $self->_secdatadir(); my $workdir = File::Temp->newdir( CLEANUP => 1, TEMPLATE => 'shrink_modsec_db_XXXXXXXX', DIR => $secdatadir ); Cpanel::SafetyBits::Chown::safe_chown_guess_gid( $uid, $workdir ) or logger->warn("Failed to chown $workdir to uid $uid"); my @original_files = $self->_get_db_files($db_path); # modsec-sdbm-util will drop $NEW_DB_NAME * @DB_FILE_SUFFIXES files into $tempdir return 0 unless $self->_call_modsec_sdbm_util( $workdir, $db_path ); # Verify new files exist and adjust perms my $new_db_path = $workdir . '/' . $NEW_DB_NAME; my @new_files = map { $new_db_path . $_ } @DB_FILE_SUFFIXES; if ( !defined $self->_validate_database_files_owner($new_db_path) ) { # root owned files = 0 logger->warn("Failed to verify the database files generated by modsec-sdbm-util in the working directory"); return 0; } $self->_set_default_perms( $uid, \@new_files ); # Move the existing files to the workdir so we can revert if the new-file move fails my @revert_files = map { $workdir . '/original' . $_ } @DB_FILE_SUFFIXES; my $can_revert = $self->_move_files( \@original_files, \@revert_files ) or logger->warn("Failed to move original files for $db_path into working dir"); # Move new files into place if ( !$self->_move_files( \@new_files, \@original_files ) ) { logger->warn("Failed to move new files into place for $db_path"); if ($can_revert) { $self->_move_files( \@revert_files, \@original_files ) or logger->warn("Failed to move backup files for $db_path from working dir to original location"); $self->_set_default_perms( $uid, \@original_files ); } else { logger->warn("Not able to restore original files for db_path"); } return 0; } # Fix up final database permissions return 0 unless $self->_set_default_perms( $uid, \@original_files ); return 1; } sub _call_modsec_sdbm_util { my ( $self, $tempdir, $db_path ) = @_; logger->die('_call_modsec_sdbm_util() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_call_modsec_sdbm_util() called without expected arguments.') unless length $tempdir && length $db_path; my $run = Cpanel::SafeRun::Object->new( program => $MODSEC_SDBM_UTIL, args => [ '-D', $tempdir, '-v', '-n', $db_path ], ); # For whatever reason, if the util fails to open the specified db it doesn't exit with an error code, so parse out the error message. # It will fail to open if the file is immutable -- which is a crazy thing to do on purpose -- but it doesn't make that obvious. if ( $run->stdout() =~ m{ ^ Failed \s to \s open \s sdbm: \s (.*) $ }xms ) { logger()->warn("$MODSEC_SDBM_UTIL failed to open database (try checking all file/dir attributes): $1"); return 0; } if ( $run->CHILD_ERROR() ) { logger()->warn( "$MODSEC_SDBM_UTIL exited with non-zero status: " . join( q{ }, map { $run->$_() // () } qw( autopsy stdout stderr ) ) ); return 0; } return 1; } sub _validate_database_files_owner { # Expects a database path such as "$secdatadir/$db_name" without a suffix # Returns owner (uid) of a full set of database files if they exist, undef otherwise # Remember that root has uid 0! my ( $self, $db_path ) = @_; logger->die('_validate_database_files_owner() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_validate_database_files_owner() called without expected arguments.') unless length $db_path; my $owner; for my $file ( $self->_get_db_files($db_path) ) { return unless -f $file; # All generated filenames must exist my $seen = ( stat(_) )[4]; $owner //= $seen; # Record owner of the first file we see return unless $owner == $seen; # Validation fails if any file doesn't match recorded owner } return $owner; } sub _move_files { # Move a new set of files in place. The indexes of the source and dest lists of files are expected to correlate directly for the rename. # For example, $source_files->[0] will be renamed to $dest_files->[0]. my ( $self, $source_files, $dest_files ) = @_; logger->die('_move_files() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_move_files() called without expected arguments.') unless ref($source_files) eq 'ARRAY' && ref($dest_files) eq 'ARRAY'; logger->die('_move_files() called without file lists of equal count.') unless scalar @$source_files == scalar @$dest_files; unlink @$dest_files; # Though they would be overwritten by safemv, there's less chance for a mixture of old and new files if we remove all now and then something goes wrong later my $result = 1; while ( my ( $index, $source_file ) = each @$source_files ) { my $dest_file = $dest_files->[$index]; if ( !Cpanel::FileUtils::Move::safemv( '-f', $source_file, $dest_file ) ) { logger->warn("Failed to move $source_file to $dest_file"); $result = 0; # Overall fail if any file doesn't move } } return $result; } sub _set_default_perms { my ( $self, $uid, $files ) = @_; logger->die('_set_default_perms() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_set_default_perms() called without expected arguments.') unless length $uid && ref($files) eq 'ARRAY' && scalar @$files; for my $file (@$files) { if ( !-f $file ) { logger->warn("Missing expected file $file while trying to update permissions"); return 0; # Must bail out if all of the expected files don't exist. } Cpanel::SafetyBits::safe_chmod( $DB_PERMS, $uid, $file ) or logger->warn("Failed to chmod $file"); Cpanel::SafetyBits::Chown::safe_chown_guess_gid( $uid, $file ) or logger->warn("Failed to chown $file to uid $uid"); } return 1; } sub _get_db_files { # Expects a database path (i.e. "$secdatadir/$shortname") without a suffix # Generates list of files with known suffixes appended to database path (does not verify existence) my ( $self, $path ) = @_; logger->die('_get_db_files() is a method call.') unless ref $self eq __PACKAGE__; logger->die('_get_db_files() called without expected arguments.') unless length $path; return map { $path . $_ } @DB_FILE_SUFFIXES; } sub _allowed_owner { # If this is expanded to allow any user, ensure that $owner and its gid exists in Cpanel::PwCache to avoid death by Cpanel::SafetyBits::Chown::safe_chown_guess_gid my ( $self, $owner ) = @_; logger->die('_allowed_owner() is a method call.') unless ref $self eq __PACKAGE__; # undef $owner is not an implementation error here, it simply means the owner couldn't be determined or is intentionally being skipped. return unless defined $owner; my $nobody_uid = $self->{'nobody_uid'} //= ( Cpanel::PwCache::getpwnam('nobody') )[2]; return unless defined $nobody_uid; return 1 if $owner == $nobody_uid; return 0; } sub _secdatadir { my $self = shift; logger->die('_secdatadir() is a method call.') unless ref $self eq __PACKAGE__; $self->{'secdatadir'} //= $DEFAULT_SECDATADIR; logger->die('Unable to determine secdatadir.') unless length $self->{'secdatadir'}; return $self->{'secdatadir'}; } if ( not caller() ) { my $shrink = scripts::shrink_modsec_ip_database->new(); $shrink->as_script; exit 0; } 1; __END__ =head1 NAME /scripts/shrink_modsec_ip_database =head1 USAGE AS A SCRIPT /scripts/shrink_modsec_ip_database -x =head2 AS A LIBRARY This script is internally written as a modulino, which means it can be C<require>'d: use strict; require q{/scripts/shrink_modsec_ip_database}; my $shrink = scripts::shrink_modsec_ip_database->new(); $shrink->run(); =head1 REQUIRED ARGUMENTS None =head1 OPTIONS =over 4 =item -x Use this option to actually run the script, otherwise it will warn and return without doing anything. =back =head1 DESCRIPTION This script is called by C<scripts/maintenance>, and its purpose is to shrink ModSecurity database files by removing expired entries. =head1 DIAGNOSTICS None =head1 EXIT STATUS Exit status is 0 (success) unless an unexpected error occurs. =head1 DEPENDENCIES This script relies on C</usr/sbin/modsec-sdbm-util> to be installed, and in order to be useful, C<ModSecurity> must be installed and be enabled. =head1 INCOMPATIBILITIES None =head1 BUGS AND LIMITATIONS None =head1 LICENSE AND COPYRIGHT Copyright 2022 cPanel, L.L.C.
[+]
..
[-] rebuild_whm_chrome
[edit]
[-] check_mail_spamassassin_compiledregexps_body_0
[edit]
[-] transfer_accounts_as_root
[edit]
[-] cphulkdblacklist
[edit]
[-] fixquotas
[edit]
[-] archive_sync_zones
[edit]
[-] listsubdomains
[edit]
[-] suspendmysqlusers
[edit]
[-] userdata_wildcard_cleanup
[edit]
[-] perlinstaller
[edit]
[-] mkwwwacctconf
[edit]
[-] realrawchpass
[edit]
[-] find_pids_with_inotify_watch_on_path
[edit]
[-] update_mysql_systemd_config
[edit]
[-] oopscheck
[edit]
[-] hackcheck
[edit]
[-] spamboxdisable
[edit]
[-] check_cpanel_pkgs
[edit]
[-] installpkg
[edit]
[-] removeacct
[edit]
[-] initsuexec
[edit]
[-] checkalldomainsmxs
[edit]
[-] mainipcheck
[edit]
[-] restartsrv_nscd
[edit]
[-] cleandns8
[edit]
[-] quickwhoisips
[edit]
[-] make_hostname_unowned
[edit]
[-] perform_sqlite_auto_rebuild_db_maintenance
[edit]
[-] fix_pear_registry
[edit]
[-] importmydnsdb
[edit]
[-] builddovecotconf
[edit]
[-] check_valid_server_hostname
[edit]
[-] cphulkdwhitelist
[edit]
[-] verify_vhost_includes
[edit]
[-] make_config
[edit]
[-] compilerscheck
[edit]
[-] apachelimits
[edit]
[-] restartsrv_unknown
[edit]
[-] purge_old_config_caches
[edit]
[-] checkbashshell
[edit]
[-] cpbackup_transport_file
[edit]
[-] check_unmonitored_enabled_services
[edit]
[-] wwwacct
[edit]
[-] listcheck
[edit]
[-] sync_child_accounts
[edit]
[-] ensure_includes
[edit]
[-] fix_addon_permissions
[edit]
[-] update_spamassassin_config
[edit]
[-] fixmailinglistperms
[edit]
[-] fixwebalizer
[edit]
[-] restartsrv_xinetd
[edit]
[-] gensysinfo
[edit]
[-] buildeximconf
[edit]
[-] resetquotas
[edit]
[-] restartsrv_base
[edit]
[-] disable_sqloptimizer
[edit]
[-] configure_rh_ipv6_firewall_for_cpanel
[edit]
[-] securerailsapps
[edit]
[-] unlink_service_account
[edit]
[-] resetmailmanurls
[edit]
[-] locale_export
[edit]
[-] dovecot_set_defaults.pl
[edit]
[-] updatenow
[edit]
[-] run_plugin_lifecycle
[edit]
[-] set_php_memory_limits
[edit]
[-] linksubemailtomainacct
[edit]
[-] increase_filesystem_limits
[edit]
[-] restartsrv_cpanel_php_fpm
[edit]
[-] try-later
[edit]
[-] restartsrv
[edit]
[-] addpop
[edit]
[-] upcp
[edit]
[-] export_horde_contacts_to_vcf
[edit]
[-] restorecpuserfromcache
[edit]
[-] perlmods
[edit]
[-] upcp-running
[edit]
[-] modify_accounts
[edit]
[-] restartsrv_cpanalyticsd
[edit]
[-] restartsrv_cpanellogd
[edit]
[-] cleansessions
[edit]
[-] delpop
[edit]
[-] sync_contact_emails_to_cpanel_users_files
[edit]
[-] addsystemuser
[edit]
[-] migrate_whmtheme_file_to_userdata
[edit]
[-] rebuildinstalledssldb
[edit]
[-] whoowns
[edit]
[-] fix-cpanel-perl
[edit]
[-] editquota
[edit]
[-] setpostgresconfig
[edit]
[-] killpvhost
[edit]
[-] check_users_my_cnf
[edit]
[-] check_domain_tls_service_domains.pl
[edit]
[-] restorepkg
[edit]
[-] cpdig
[edit]
[-] maintenance
[edit]
[-] securetmp
[edit]
[-] restartsrv_clamd
[edit]
[-] expunge_expired_certificates_from_sslstorage
[edit]
[-] updatenameserverips
[edit]
[-] runstatsonce
[edit]
[-] restartsrv_pdns
[edit]
[-] unsuspendmysqlusers
[edit]
[-] named.rfc1912.zones
[edit]
[-] update_dkim_keys
[edit]
[-] restartsrv_tailwatchd
[edit]
[-] restartsrv_cpipv6
[edit]
[-] realadduser
[edit]
[-] rebuildippool
[edit]
[-] dav_change_hostname
[edit]
[-] restartsrv_ftpd
[edit]
[-] rpmup
[edit]
[-] post_snapshot
[edit]
[-] gencrt
[edit]
[-] xferpoint
[edit]
[-] convert_and_migrate_from_legacy_backup
[edit]
[-] transfermysqlusers
[edit]
[-] unslavenamedconf
[edit]
[-] comparecdb
[edit]
[-] email_hold_maintenance
[edit]
[-] userdirctl
[edit]
[-] install_dovecot_fts
[edit]
[-] grpck
[edit]
[-] ensure_hostname_resolves
[edit]
[-] set_mailman_archive_perms
[edit]
[-] check_cpanel_rpms
[edit]
[-] sshcontrol
[edit]
[-] check_security_advice_changes
[edit]
[-] fastmail
[edit]
[-] fixnamedviews
[edit]
[+]
cpan_sandbox
[-] eximstats_spam_check
[edit]
[-] updatessldomains
[edit]
[-] restartsrv_ftpserver
[edit]
[-] post_sync_cleanup
[edit]
[-] restartsrv_rsyslog
[edit]
[-] proxydomains
[edit]
[-] patch_mail_spamassassin_compiledregexps_body_0
[edit]
[-] convert_accesshash_to_token
[edit]
[-] nixstatsagent.sh
[edit]
[-] restartsrv_exim
[edit]
[-] check_mount_procfs
[edit]
[-] rebuildnsdzones
[edit]
[-] killspamkeys
[edit]
[-] ckillall
[edit]
[-] check_maxmem_against_domains_count
[edit]
[-] pwck
[edit]
[-] uninstall_cpanel_analytics
[edit]
[-] cpservice
[edit]
[-] remote_log_transfer
[edit]
[-] initquotas
[edit]
[-] wwwacct2
[edit]
[-] refresh-dkim-validity-cache
[edit]
[-] spamassassindisable
[edit]
[-] rsync-user-homedir.pl
[edit]
[-] dnscluster
[edit]
[-] convert2dovecot
[edit]
[-] installpostgres
[edit]
[-] copy_user_mail_as_root
[edit]
[-] rebuild_provider_openid_connect_links_db
[edit]
[-] fixrndc
[edit]
[-] restartsrv_sshd
[edit]
[-] enable_spf_dkim_globally
[edit]
[-] restartsrv_syslogd
[edit]
[-] killdns
[edit]
[-] dcpumon-wrapper
[edit]
[-] dumpstor
[edit]
[-] ptycheck
[edit]
[-] initfpsuexec
[edit]
[-] updatesigningkey
[edit]
[-] update_local_rpm_versions
[edit]
[-] expunge_expired_transfer_sessions
[edit]
[-] find_outdated_services
[edit]
[-] ipusage
[edit]
[-] check_unreliable_resolvers
[edit]
[-] restartsrv_pop3
[edit]
[-] restartsrv_postgresql
[edit]
[-] restartsrv_dnsadmin
[edit]
[-] vps_optimizer
[edit]
[-] email_archive_maintenance
[edit]
[-] ensure_crontab_permissions
[edit]
[-] buildhttpdconf
[edit]
[-] cpanpingtest
[edit]
[-] build_mail_sni
[edit]
[-] get_locale_from_legacy_name_info
[edit]
[-] fixrelayd
[edit]
[-] gemwrapper
[edit]
[-] snapshot_prep
[edit]
[-] restartsrv_p0f
[edit]
[-] test_sa_compiled
[edit]
[-] gather_update_logs_setupcrontab
[edit]
[-] installsqlite3
[edit]
[-] autorepair
[edit]
[-] featuremod
[edit]
[-] vzzo-fixer
[edit]
[-] mysqlpasswd
[edit]
[-] ssl_crt_status
[edit]
[-] mailperm
[edit]
[-] restartsrv_named
[edit]
[-] build_bandwidthdb_root_cache_in_background
[edit]
[-] backups_clean_metadata_for_missing_backups
[edit]
[-] realperlinstaller
[edit]
[-] update-packages
[edit]
[-] ftpfetch
[edit]
[-] ftpsfetch
[edit]
[-] import_exim_data
[edit]
[-] restartsrv_cphulkd
[edit]
[-] unsuspendacct
[edit]
[-] setup_greylist_db
[edit]
[-] setupmailserver
[edit]
[-] maildir_converter
[edit]
[-] fixtar
[edit]
[-] cleanphpsessions.php
[edit]
[-] restartsrv_lmtp
[edit]
[-] getremotecpmove
[edit]
[-] biglogcheck
[edit]
[-] chkpaths
[edit]
[-] litespeed-check
[edit]
[-] quota_auto_fix
[edit]
[-] generate_account_suspension_include
[edit]
[-] fixvaliases
[edit]
[-] checknsddirs
[edit]
[-] synctransfers
[edit]
[-] upgrade_bandwidth_dbs
[edit]
[-] phpini_tidy
[edit]
[-] cleanupmysqlprivs
[edit]
[-] restartsrv_imap
[edit]
[-] killdns-dnsadmin
[edit]
[-] ccs-check
[edit]
[-] spamassassin_dbm_cleaner
[edit]
[-] process_pending_cpanel_php_pear_registration
[edit]
[-] setup_modsec_db
[edit]
[-] restartsrv_cpsrvd
[edit]
[-] enable_sqloptimizer
[edit]
[-] slurp_exim_mainlog
[edit]
[-] balance_linked_node_quotas
[edit]
[-] smartcheck
[edit]
[-] smtpmailgidonly
[edit]
[-] notify_expiring_certificates
[edit]
[-] pedquota
[edit]
[-] syslog_check
[edit]
[-] killmysqlwildcard
[edit]
[-] fetchfile
[edit]
[-] setup_systemd_timer_for_plugins
[edit]
[-] postupcp
[edit]
[-] mailscannerupdate
[edit]
[-] MirrorSearch_pingtest
[edit]
[-] cpbackup
[edit]
[-] named.ca
[edit]
[-] build_cpnat
[edit]
[-] cpanelsync
[edit]
[-] mysqlconnectioncheck
[edit]
[-] ensure_dovecot_memory_limits_meet_minimum
[edit]
[-] checkccompiler
[edit]
[-] zoneexists
[edit]
[-] fixheaders
[edit]
[-] validate_sshkey_passphrase
[edit]
[-] rawchpass
[edit]
[-] compilers
[edit]
[-] update_exim_rejects
[edit]
[+]
php_sandbox
[-] restartsrv_crond
[edit]
[-] cpaddonsup
[edit]
[-] create_default_featurelist
[edit]
[-] rebuild_dbmap
[edit]
[-] restartsrv_mysql
[edit]
[-] servicedomains
[edit]
[-] dnsqueuecron
[edit]
[-] build_maxemails_config
[edit]
[-] install_plugin
[edit]
[-] expunge_expired_pkgacct_sessions
[edit]
[-] cleanupinterchange
[edit]
[-] manage_extra_marketing
[edit]
[-] find_and_fix_rpm_issues
[edit]
[-] rebuild_available_rpm_addons_cache
[edit]
[-] httpspamdetect
[edit]
[-] restartsrv_apache
[edit]
[-] restartsrv_mydns
[edit]
[-] convert_whmxfer_to_sqlite
[edit]
[-] jetbackup-check
[edit]
[-] dumpcdb
[edit]
[-] clear_cpaddon_ui_caches
[edit]
[-] update_users_vhosts
[edit]
[-] rebuildhttpdconf
[edit]
[-] generate_maildirsize
[edit]
[-] modify_packages
[edit]
[-] checkusers
[edit]
[-] generate_google_drive_oauth_uri
[edit]
[-] fix-listen-on-localhost
[edit]
[-] exportmydnsdb
[edit]
[-] update_apachectl
[edit]
[-] fixndc
[edit]
[-] sendicq
[edit]
[-] restartsrv_nsd
[edit]
[-] restartsrv_apache_php_fpm
[edit]
[-] cleanphpsessions
[edit]
[-] clear_orphaned_virtfs_mounts
[edit]
[-] check_immutable_files
[edit]
[-] rebuild_available_addons_packages_cache
[edit]
[-] restartsrv_queueprocd
[edit]
[-] updateuserdomains
[edit]
[-] clean_dead_mailman_locks
[edit]
[-] magicloader
[edit]
[-] restartsrv_bind
[edit]
[-] update_existing_mail_quotas_for_account
[edit]
[-] ensure_autoenabled_features
[edit]
[-] fix_dns_zone_ttls
[edit]
[-] unblockip
[edit]
[-] dovecot_maintenance
[edit]
[-] reset_mail_quotas_to_sane_values
[edit]
[-] cpfetch
[edit]
[-] restartsrv_ipaliases
[edit]
[-] convert_mdbox_to_maildir
[edit]
[-] cpuser_service_manager
[edit]
[-] exim_tidydb
[edit]
[-] upcp.static
[edit]
[-] restartsrv_rsyslogd
[edit]
[-] locale_info
[edit]
[-] convert_roundcube_mysql2sqlite
[edit]
[-] transfer_in_progress.pod
[edit]
[-] modsec_vendor
[edit]
[-] backups_list_user_files
[edit]
[-] upgrade_subaccount_databases
[edit]
[-] sysup
[edit]
[-] synccpaddonswithsqlhost
[edit]
[-] simpleps
[edit]
[-] update_sa_config
[edit]
[-] restartsrv_cpdavd
[edit]
[-] enablefileprotect
[edit]
[-] restartsrv_spamd
[edit]
[-] distro_changed_hook
[edit]
[-] install_cpanel_analytics
[edit]
[-] restartsrv_inetd
[edit]
[-] run_if_exists
[edit]
[-] convert_to_dovecot_delivery
[edit]
[-] clean_up_temp_wheel_users
[edit]
[-] fix_reseller_acls
[edit]
[-] update_mailman_cache
[edit]
[-] killmysqluserprivs
[edit]
[-] restartsrv_dovecot
[edit]
[-] transfer_account_as_user
[edit]
[-] restartsrv_proftpd
[edit]
[-] generate_google_drive_credentials
[edit]
[-] hook
[edit]
[-] clean_user_php_sessions
[edit]
[-] restartsrv_pureftpd
[edit]
[-] wpt_license
[edit]
[-] logo.dat
[edit]
[-] isdedicatedip
[edit]
[-] dumpinodes
[edit]
[-] ftpupdate
[edit]
[-] rdate
[edit]
[-] backups_create_metadata
[edit]
[-] link_3rdparty_binaries
[edit]
[-] check_mysql
[edit]
[-] checkexim.pl
[edit]
[-] quickdnslookup
[edit]
[-] updatenow.static
[edit]
[-] transfer_in_progress
[edit]
[-] runweblogs
[edit]
[-] unpkgacct
[edit]
[-] cpanelsync_postprocessor
[edit]
[-] xfer_rcube_uid_resolver.pl
[edit]
[-] export_horde_calendars_to_ics
[edit]
[-] update_users_jail
[edit]
[-] fixetchosts
[edit]
[-] hulk-unban-ip
[edit]
[-] custom_backup_destination.pl.sample
[edit]
[-] restartsrv_mailman
[edit]
[-] checklink
[edit]
[-] add_dns
[edit]
[-] fixtlsversions
[edit]
[-] realchpass
[edit]
[-] quotacheck
[edit]
[-] copy_user_mail_as_user
[edit]
[-] cleandns
[edit]
[-] restartsrv_postgres
[edit]
[-] rebuilduserssldb
[edit]
[-] update_neighbor_netblocks
[edit]
[-] disablefileprotect
[edit]
[-] restartsrv_httpd
[edit]
[-] uninstall_plugin
[edit]
[-] buildnsdconf
[edit]
[-] gather_update_log_stats
[edit]
[-] rfc1912_zones.tar
[edit]
[-] xfertool
[edit]
[-] pkgacct
[edit]
[-] edit_cpanelsync_exclude_list
[edit]
[-] dnssec-cluster-keys
[edit]
[-] chkmydns
[edit]
[-] remove_dovecot_index_files
[edit]
[-] ea4_fresh_install
[edit]
[-] setupnameserver
[edit]
[-] manage_mysql_profiles
[edit]
[-] swapip
[edit]
[-] process_site_templates
[edit]
[-] verify_api_spec_files
[edit]
[-] restartsrv_powerdns
[edit]
[-] regenerate_tokens
[edit]
[-] notify_expiring_certificates_on_linked_nodes
[edit]
[-] adduser
[edit]
[-] restartsrv_eximstats
[edit]
[-] migrate_local_ini_to_php_ini
[edit]
[-] safetybits.pl
[edit]
[-] initacls
[edit]
[-] chpass
[edit]
[-] cpanel_initial_install
[edit]
[-] cpuser_port_authority
[edit]
[-] manage_greylisting
[edit]
[-] patchfdsetsize
[edit]
[-] cleanmsglog
[edit]
[-] suspendacct
[edit]
[-] install_tuxcare_els_php
[edit]
[-] fixmailman
[edit]
[-] secureit
[edit]
[-] optimize_eximstats
[edit]
[-] ipcheck
[edit]
[-] disable_prelink
[edit]
[-] cpan_config
[edit]
[-] rebuilddnsconfig
[edit]
[-] ensure_cpuser_file_ip
[edit]
[-] securemysql
[edit]
[-] ensure_conf_dir_crt_key
[edit]
[-] configure_firewall_for_cpanel
[edit]
[-] setupftpserver
[edit]
[-] eximconfgen
[edit]
[-] custom_backup_destination.pl.skeleton
[edit]
[-] convert_maildir_to_mdbox
[edit]
[-] rebuild_bandwidthdb_root_cache
[edit]
[-] elevate-cpanel
[edit]
[-] fix-web-vhost-configuration
[edit]
[-] primary_virtual_host_migration
[edit]
[-] ensure_vhost_includes
[edit]
[-] purge_modsec_log
[edit]
[-] restartsrv_cpgreylistd
[edit]
[-] sync-mysql-users-from-grants
[edit]
[-] update_known_proxy_ips
[edit]
[-] activesync-invite-reply
[edit]
[-] rescan_user_dovecot_fts
[edit]
[-] sa-update_wrapper
[edit]
[-] adddns
[edit]
[-] whmlogin
[edit]
[-] php_fpm_config
[edit]
[-] shrink_modsec_ip_database
[edit]
[-] updatedomainips
[edit]
[-] restartsrv_chkservd
[edit]
[-] auto-adjust-mysql-limits
[edit]
[-] configure_rh_firewall_for_cpanel
[edit]
[-] updateuserdatacache
[edit]
[-] update_db_cache
[edit]
[-] detect_env_capabilities
[edit]
[-] locale_import
[edit]
[-] modify_featurelist
[edit]
[-] fix_innodb_tables
[edit]
[-] postupcp.cloudlinux-linksafe.bak
[edit]
[-] createacct
[edit]
[-] migrate-pdns-conf
[edit]
[-] ftpquotacheck
[edit]
[-] updatesupportauthorizations
[edit]
[-] reloadnsd
[edit]
[-] cleanquotas
[edit]
[-] dumpquotas
[edit]
[-] forcelocaldomain
[edit]
[-] uninstall_dovecot_fts
[edit]
[-] buildpureftproot
[edit]
[-] verify_pidfile
[edit]
[-] xfer_rcube_schema_migrate.pl
[edit]