__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/convert_roundcube_mysql2sqlite 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 Script::RCube::Mysql2Sqlite;
use strict;
## no critic (RequireUseWarnings)
use Try::Tiny;
use Cpanel::AccessIds::ReducedPrivileges ();
use Cpanel::Config::LoadCpConf ();
use Cpanel::MysqlUtils ();
use Cpanel::DbUtils ();
use Cpanel::MysqlUtils::Connect ();
use Cpanel::MysqlUtils::Command ();
use Cpanel::MysqlRun ();
use Cpanel::Config::LoadUserDomains ();
use Cpanel::Email::RoundCube ();
use Cpanel::Email::RoundCube::DBI ();
use Cpanel::Quota::Temp ();
use Cpanel::PwCache ();
use Cpanel::Logger ();
use Cpanel::Filesys::Home ();
use File::Basename ();
use File::Copy ();
use File::Path ();
use File::Slurper ();
use DBI;
use XML::Simple ();
use IPC::Open3 ();
$XML::Simple::PREFERRED_PARSER = "XML::SAX::PurePerl";
my $sqlite_table_file = '/usr/local/cpanel/base/3rdparty/roundcube/SQL/sqlite.initial.sql';
my $log_file = '/usr/local/cpanel/logs/roundcube_sqlite_convert_log';
my %opts = ( 'alternate_logfile' => $log_file );
my $logger = Cpanel::Logger->new( \%opts );
my $mysql_dbname = 'roundcube';
my $dbh;
# If this updates, then do_all_rcube_xml_to_db() needs to be updated to match
my @dumptables = qw(users identities contacts contactgroups contactgroupmembers calendars caldav_calendars events caldav_events attachments caldav_attachments itipinvitations responses);
my $time = time();
## if invoked as a script, there is nothing in the call stack
my $invoked_as_script = !caller();
__PACKAGE__->script(@ARGV) if ($invoked_as_script);
my $mysql_plus_sqlite;
sub script {
my ( $package, $opt_user, $opt_dbname ) = @_;
my $cpconf = Cpanel::Config::LoadCpConf::loadcpconf();
my $db_type = 'mysql';
if ( exists $cpconf->{'roundcube_db'} ) {
$db_type = 'sqlite' if $cpconf->{'roundcube_db'} eq 'sqlite';
$mysql_plus_sqlite = $cpconf->{'roundcube_db'} eq 'mysql_plus_sqlite';
}
if ( defined $opt_user ) {
## the optional user arg feature is currently *only* called as a script;
## otherwise, all these exits would check $invoked_as_script
## Transfers.pm is the only user of $opt_user, which it uses in conjunction with $opt_user;
## this changes the global variable $opt_dbname just in time to be used in &init_check
if ( defined $opt_dbname ) {
$mysql_dbname = $opt_dbname;
}
if ( $db_type eq 'sqlite' && init_check($cpconf) ) {
my $wasSuccess = convert_mysql_roundcube_to_sqlite($opt_user);
if ($wasSuccess) {
## Transfers.pm operates over a different dbname, and is responsible for the
## removal of the temporary database
unless ( defined $opt_dbname ) {
Cpanel::Email::RoundCube::archive_and_drop_mysql_roundcube($logger);
}
return 1;
}
die "Conversion for user '$opt_user' was not successful.\n";
}
## SOMEDAY @GOLIVE: update-roundcube-sqlite-db gets moved to update-roundcube-db. Update this message and the conditional @GOIVE.
die "The optional user argument is to be used only when Roundcube has been converted to sqlite. Use bin/update-roundcube-sqlite-db Exiting.\n";
}
## Has the roundcube conversion already happened?
## note: this check is here, and not in init_check, because Transfers.pm calls into this
## from a different context. The src server uses MySQL but the dest machine has done
## the sqlite conversion.
if ( $db_type eq 'sqlite' ) {
$logger->info("Roundcube conversion already occurred, bailing out.");
if ($invoked_as_script) {
exit(0);
}
return 1;
}
unless ( init_check($cpconf) ) {
if ($invoked_as_script) {
exit(0);
}
return 1;
}
my %TRUEDOMAINS;
Cpanel::Config::LoadUserDomains::loadtrueuserdomains( \%TRUEDOMAINS );
my @users = sort values %TRUEDOMAINS;
my $success_cnt = 0;
my $success_verify = scalar @users;
for my $user (@users) {
$success_cnt += convert_mysql_roundcube_to_sqlite($user);
}
unless ( $success_cnt == $success_verify ) {
$logger->warn("Roundcube Mysql to sqlite conversion was not completely successful. Please check $log_file for details.");
if ($invoked_as_script) {
exit(1);
}
return;
}
## Conversion is a success, so switch Roundcube configuration to use SQLite before dropping the database.
my $DIR = '/usr/local/cpanel/base/3rdparty';
Cpanel::Email::RoundCube::generate_roundcube_config_sqlite( $DIR, $logger );
## if the conversion was a complete success (as checked above), we can safely archive and
## delete the MySQL roundcube database. This will prevent future problems with transfers,
## and in fact is the final solution for the original Roundcube case 12162!
## already asserted via &init_check
my $archive_success = Cpanel::Email::RoundCube::archive_and_drop_mysql_roundcube($logger);
require Cpanel::Config::CpConfGuard;
my $cpconf_guard = Cpanel::Config::CpConfGuard->new();
$cpconf->{'roundcube_db'} = $cpconf_guard->{'data'}->{'roundcube_db'} = 'sqlite';
$cpconf_guard->save();
if ($invoked_as_script) {
Cpanel::Email::RoundCube::restart_cpsrvd();
exit(0);
}
return 1;
}
sub convert_mysql_roundcube_to_sqlite {
my ($user) = @_;
my @domains = Cpanel::Email::RoundCube::collect_domains($user);
my @uid_name_pairs = collect_roundcube_user_info( \@domains, $user );
## returning 1: no conversion necessary
return 1 unless ( scalar @uid_name_pairs );
## e.g. '/home'
my $best_mnt_point = Cpanel::Filesys::Home::get_homematch_with_most_free_space();
my $tmpdir_root_base = "$best_mnt_point/roundcube_convert";
if ( -d $tmpdir_root_base ) {
rename( $tmpdir_root_base, "$tmpdir_root_base.$time" );
}
mkdir($tmpdir_root_base);
my $tmpdir_root_sys = "$tmpdir_root_base/$user";
mkdir($tmpdir_root_sys);
my @pwinfo = Cpanel::PwCache::getpwnam($user);
my ( $mmuid, $mmgid, $homedir ) = @pwinfo[ 2, 3, 7 ];
my $tmpdir_emailuser_base = "$homedir/tmp/roundcube_convert";
my $success_cnt = 0;
my %has_sqlite_trapper_keeper;
for my $email_user_info (@uid_name_pairs) {
my ( $uid, $email_user ) = @$email_user_info;
if ($mysql_plus_sqlite) {
my $db_path = _roundcube_db_path( $user, $homedir, $email_user );
$has_sqlite_trapper_keeper{$db_path} = -f $db_path;
next if $has_sqlite_trapper_keeper{$db_path};
}
my $tmpdir_root_sys_emailuser = "$tmpdir_root_sys/$email_user";
mkdir($tmpdir_root_sys_emailuser);
do_mysqldumps_for_user( $uid, $tmpdir_root_sys_emailuser );
}
## ensures that $best/rcube/$sysuser/$emailuser is readable by $sysuser,
## so that $sysuser can move it to their $homedir after the setuid
my $tempquota = Cpanel::Quota::Temp->new( user => $user, log => 1 );
$tempquota->disable();
my $rv_chmod = system("chmod -R 700 $tmpdir_root_sys");
my $rv_chown = system("chown -Rf $mmuid:$mmgid $tmpdir_root_sys");
for my $email_user_info (@uid_name_pairs) {
my ( $uid, $email_user ) = @$email_user_info;
if ($mysql_plus_sqlite) {
my $db_path = _roundcube_db_path( $user, $homedir, $email_user );
if ( $has_sqlite_trapper_keeper{$db_path} ) {
$logger->info("$email_user already has an SQLite DB, skipping...");
$success_cnt++;
next;
}
}
chdir($tmpdir_root_base);
my $tmpdir_root_sys_emailuser = "$tmpdir_root_sys/$email_user";
my $rv_convert = xml_to_sqlite( $user, $tmpdir_root_sys_emailuser, $tmpdir_emailuser_base, $email_user, $homedir );
unless ($rv_convert) {
$logger->warn("Conversion was not successful for user '$user'.");
}
$success_cnt += $rv_convert;
## note: no need to "rmdir($tmpdir_root_sys_emailuser)", as this dir was moved
## to $homedir/tmp/rcube/$emailuser (during the setuid)
## SOMEDAY @GOLIVE: remove the mysql roundcube database (steal mysql/roundcube backup/archive
## clauses from update-roundcube-db, the mysql version)
}
$tempquota->restore();
rmdir($tmpdir_root_sys);
rmdir($tmpdir_root_base);
return $success_cnt == scalar(@uid_name_pairs);
}
sub collect_roundcube_user_info {
my ( $ar_domains, $user ) = @_;
my $regexp = '@(' . join( '|', map { s/\./\\./gr } @$ar_domains ) . ')$';
my @ids;
try {
@ids = $dbh->selectall_array( "SELECT user_id, username FROM users WHERE username REGEXP ? or username = ?", {}, $regexp, $user );
};
return @ids;
}
## Stolen from pkgacct; needs to be modularized!
## SOMEDAY: this version has converged; move pkgacct version to module, and get rid of below
sub mysqldumpdb {
my ($args) = @_;
my @options = @{ $args->{'options'} };
my $db = $args->{'db'};
my $table = $args->{'table'};
my $file = $args->{'file'};
my $file_mode = $args->{'append'} ? '>>' : '>';
# for testing
my @extra_options = _get_extra_options();
my $mysqldump = Cpanel::DbUtils::find_mysqldump();
my @db = ($db);
if ($table) {
push @db, $table;
}
my $pid = IPC::Open3::open3( my $w, my $r, '', $mysqldump, @extra_options, @options, @db );
my $first_line = 1;
if ( open( my $fh, $file_mode, $file ) ) {
while (<$r>) {
if ( $first_line && ( !$_ || m/^mysqldump:/ ) ) {
warn join( '.', @db ) . ': ' . $_;
close $w;
close $r;
waitpid( $pid, 0 );
$first_line = 0;
my $mysqlcheck = Cpanel::DbUtils::find_mysqlcheck();
system( $mysqlcheck, '--repair', @extra_options, @db );
$pid = IPC::Open3::open3( $w, $r, '', $mysqldump, @extra_options, @options, @db );
}
else {
print {$fh} $_;
}
}
}
close $w;
close $r;
waitpid( $pid, 0 );
return;
}
sub do_mysqldumps_for_user {
my ( $uid, $tmp_convertdir ) = @_;
for my $tbl (@dumptables) {
## these two tables do not key off user_id
next if grep { $tbl eq $_ } qw{contactgroupmembers events ical_events caldav_events attachments ical_attachments caldav_attachments caldav_calendars};
## XML output, not suppressing table structure, with a where clause on user_id list
my @opts = ( '--xml', '-w', qq{user_id = $uid} );
mysqldumpdb(
{
'options' => [@opts],
'db' => $mysql_dbname,
'file' => "$tmp_convertdir/rcube.$tbl.xml",
'table' => $tbl
}
);
}
## contactgroupmembers is gathered in two steps, otherwise would be a LEFT JOIN that
## &mysqldumpdb can not currently support
my $contacts = _get_ids_from_col( 'contactgroups', 'contactgroup_id', $uid, 'user_id' );
_dump_stuff_in( 'contactgroupmembers', 'contactgroup_id', $contacts, $tmp_convertdir ) if scalar(@$contacts);
# Handle events & attachments for calendaring, as those are identified by
# calendar & event respectively.
my $cals = _get_ids_from_col( "calendars", 'calendar_id', $uid, 'user_id' );
next if !scalar(@$cals);
my @events2export;
my @attachments2export;
foreach my $cal (@$cals) {
my $events = _get_ids_from_col( "events", 'event_id', $cal, 'calendar_id' );
# Can't have attachments if no events exist to attach em to, so
# next here is appropriate.
next if !scalar(@$events);
push @events2export, @$events;
my $attachments = _get_ids_from_col( "attachments", 'attachment_id', $events, 'event_id' );
next if !scalar(@$attachments);
push @attachments2export, @$attachments;
}
_dump_stuff_in( "events", 'event_id', \@events2export, $tmp_convertdir ) if @events2export;
_dump_stuff_in( "attachments", 'attachment_id', \@attachments2export, $tmp_convertdir ) if @attachments2export;
return undef;
}
# Only here so that I don't "repeat myself".
sub _get_ids_from_col {
my ( $tbl, $col, $search_term, $filter_on, $filter_mode ) = @_;
my @ids;
try {
# Quoting anything other than values here is actually harmful.
# Don't do it as such. Same for IN statement here.
my $where_clause = "WHERE $filter_on = ?";
if ( ref $search_term eq 'ARRAY' ) {
my $count = scalar(@$search_term);
die "Bad call to _get_ids_from_col: no search term specified!" if !$count;
my $qs = ( '?,' x ( $count - 1 ) ) . '?';
$where_clause = "WHERE $filter_on IN ($qs)";
@ids = map { $_->[0] } $dbh->selectall_array( "SELECT $col FROM $tbl $where_clause", {}, @$search_term );
}
else {
@ids = map { $_->[0] } $dbh->selectall_array( "SELECT $col FROM $tbl $where_clause", {}, $search_term );
}
}
catch {
$logger->warn( "Attempt to find necessary data from $col in $tbl failed: " . $dbh->errstr() );
};
return \@ids;
}
# Only here so that I don't "repeat myself".
sub _dump_stuff_in {
my ( $tbl, $col, $in, $tmp_convertdir ) = @_;
# It is possible that we have a very large number of ID's.
# If so, we need to do this in chunks.
my $chunk_size = 1000;
my @chunks;
while ( $in->@* ) {
push @chunks, [ splice( $in->@*, 0, $chunk_size ) ];
}
my $file_num = 0;
foreach my $chunk (@chunks) {
my $f_name = $file_num ? "$tmp_convertdir/rcube.$tbl.$file_num.xml" : "$tmp_convertdir/rcube.$tbl.xml";
my $csv = join( ',', $chunk->@* );
mysqldumpdb(
{
'options' => [ '--xml', '-w', qq{$col IN ($csv)} ],
'db' => $mysql_dbname,
'file' => $f_name,
'table' => $tbl,
}
);
$file_num++;
}
return;
}
sub create_rcube_sqlite_tables {
my ($dbh) = @_;
Cpanel::Email::RoundCube::DBI::ensure_schema_update( $dbh, 'sqlite' );
return undef;
}
# This used to do all sorts of things like telling rcube_xml_to_db what needed
# quoting, what needed to be set to NULL, etc. -- thankfully all that is
# absolutely unnecessary with sqlite3.
sub do_all_rcube_xml_to_db {
my ( $dbh, $xmldir ) = @_;
my $success_cnt = 0;
## verify the number of XML docs to convert to SQL
my $success_verify = scalar(@dumptables);
{
## note: there is a disparity in the sqlite.initial.sql, and the "table_structure" for "users";
## preferences is not NULLABLE.
my @_cols = qw(user_id username mail_host created last_login language preferences);
$success_cnt += rcube_xml_to_db( $xmldir, 'users', $dbh, \@_cols );
}
{
my @_cols = qw( identity_id user_id changed del standard name organization email
reply-to bcc signature html_signature);
$success_cnt += rcube_xml_to_db( $xmldir, 'identities', $dbh, \@_cols );
}
{
my @_cols = qw(contact_id user_id changed del name email firstname surname vcard);
$success_cnt += rcube_xml_to_db( $xmldir, 'contacts', $dbh, \@_cols );
}
## new contactgroups table
{
my @_cols = qw( contactgroup_id user_id changed del name );
$success_cnt += rcube_xml_to_db( $xmldir, 'contactgroups', $dbh, \@_cols );
}
## new contactgroupmembers table
## guard clause: contactgroupmembers is gathered conditionally, so it is the only file which
## may not exist
if ( -e _xml_file( $xmldir, 'contactgroupmembers' ) ) {
my @_cols = qw( contactgroup_id contact_id created );
$success_cnt += rcube_xml_to_db( $xmldir, 'contactgroupmembers', $dbh, \@_cols );
}
else {
$success_cnt++;
}
# Restore calendar data
foreach my $cal_tbl (qw{calendars caldav_calendars}) {
unless ( -e _xml_file( $xmldir, $cal_tbl ) ) {
$success_cnt++;
next;
}
my @_cols = qw( calendar_id user_id name color showalarms );
push( @_cols, qw{ical_url ical_user ical_pass ical_last_change} ) if $cal_tbl eq 'ical_calendars';
push( @_cols, qw{readonly caldav_url caldav_tag caldav_user caldav_pass caldav_oauth_provider caldav_last_change} ) if $cal_tbl eq 'caldav_calendars';
$success_cnt += rcube_xml_to_db( $xmldir, $cal_tbl, $dbh, \@_cols );
}
foreach my $evt_tbl (qw{events caldav_events}) {
unless ( -e _xml_file( $xmldir, $evt_tbl ) ) {
$success_cnt++;
next;
}
my @_cols = qw( event_id calendar_id recurrence_id uid instance isexception created changed sequence start end recurrence title description location categories url all_day free_busy priority sensitivity status alarms attendees notifyat );
push( @_cols, qw{ical_url ical_last_change} ) if $evt_tbl eq 'ical_events';
push( @_cols, qw{caldav_url caldav_tag caldav_last_change} ) if $evt_tbl eq 'caldav_events';
$success_cnt += rcube_xml_to_db( $xmldir, $evt_tbl, $dbh, \@_cols );
}
foreach my $atc_tbl (qw{attachments caldav_attachments}) {
unless ( -e _xml_file( $xmldir, $atc_tbl ) ) {
$success_cnt++;
next;
}
my @_cols = qw( attachment_id event_id filename mimetype size data );
$success_cnt += rcube_xml_to_db( $xmldir, $atc_tbl, $dbh, \@_cols );
}
if ( -e _xml_file( $xmldir, 'itipinvitations' ) ) {
my @_cols = qw(token event_uid user_id event expires cancelled);
$success_cnt += rcube_xml_to_db( $xmldir, 'itipinvitations', $dbh, \@_cols );
}
else {
$success_cnt++;
}
## Restore responses table, if available
if ( -e _xml_file( $xmldir, 'responses' ) ) {
my @_cols = qw( response_id user_id name data is_html changed del );
$success_cnt += rcube_xml_to_db( $xmldir, 'responses', $dbh, \@_cols );
}
else {
$success_cnt++;
}
return $success_cnt == $success_verify;
}
sub _xml_file {
my ( $xmldir, $tbl ) = @_;
return "$xmldir/rcube.$tbl.xml";
}
sub _get_all_xml_files {
my ( $xmldir, $tbl ) = @_;
opendir( my $dh, $xmldir ) or die "Cannot open directory $xmldir: $!";
my @files = map { "$xmldir/$_" } grep { /^rcube\.$tbl\.(?:[0-9]+\.)?xml$/ } readdir($dh);
return @files;
}
sub rcube_xml_to_db {
my ( $xmldir, $tbl, $dbh, $ar_cols ) = @_;
my @xml_fnames = _get_all_xml_files( $xmldir, $tbl );
my %common_opts = ( ForceArray => 1, KeyAttr => [], ContentKey => '__content' );
foreach my $xml_fname (@xml_fnames) {
## $ref->{database}->[0]->{table_data}->[0]->{row}->[$x]->{field}->[$x]->{__content}
my $ref;
my $err;
try {
$ref = XML::Simple::XMLin( $xml_fname, %common_opts );
}
catch {
$err = $_;
};
if ($err) {
$logger->warn("Failed to load xml for $tbl: $err");
return;
}
my $rows = $ref->{'database'}->[0]->{'table_data'}->[0]->{'row'};
## FWIW, Perl does not complain if $rows is undef, when called in a for loop context.
for my $row (@$rows) {
# XXX Placeholders don't work on columns, but stuff with dashes
# still needs quoting. As such, quote all col names.
# Sorry, couldn't find a way around it.
my $update_hr = { map { $dbh->quote_identifier( $_->{'name'} ) => $_->{'__content'} || '' } @{ $row->{'field'} } };
my $rv = $dbh->do( rcube_make_sql( $tbl, $update_hr ) );
unless ($rv) {
$logger->warn( "Conversion was not successful: " . $dbh->errstr() );
return;
}
}
}
return 1;
}
sub rcube_make_sql {
my ( $table, $update_hr ) = @_;
# Lets hope these actually are nonzero
my @values = values(%$update_hr);
my $qs = ( '?,' x ( scalar(@values) - 1 ) ) . '?';
return (
"INSERT OR REPLACE INTO $table (" . join( ",", keys(%$update_hr) ) . ") VALUES ($qs)",
undef,
@values,
);
}
sub check_mysqlup {
## note: this call is cached with a ttl of 600
my $isrunning = Cpanel::MysqlRun::running();
if ($isrunning) {
return 1;
}
return undef;
}
sub ensure_roundcube_tables {
my ($dbh) = @_;
my %tables = map { $_ => undef } $dbh->tables();
# system table is created during a migration
my @expected = qw(session cache system);
push( @expected, @dumptables );
for my $exp (@expected) {
next if $exp =~ /^caldav_|^ical_/; ## ignoring as of 120
if ( !exists $tables{$exp} && !exists $tables{qq{"main"."$exp"}} ) {
$logger->warn("ERROR: missing $exp table");
return;
}
}
return 1;
}
sub init_check {
my ($cpconf) = @_;
## Ensure root
return unless ( 0 == $> );
unless ( -e $sqlite_table_file ) {
$logger->info("Roundcube is not installed; conversion is irrelevant.");
return;
}
if ( exists $cpconf->{'skiproundcube'} and $cpconf->{'skiproundcube'} ) {
$logger->info("Roundcube should be skipped, bailing out.");
return;
}
my $mysqlup = check_mysqlup();
unless ($mysqlup) {
$logger->warn("Mysql not currently running, bailing out.");
return;
}
## Does this installation use Roundcube/MySQL?
unless ( Cpanel::MysqlUtils::Command::db_exists($mysql_dbname) ) {
$logger->warn("mysql database $mysql_dbname is missing");
return;
}
my $error;
try {
my $dbc = Cpanel::MysqlUtils::Connect->new( database => $mysql_dbname );
$dbh = $dbc->db_handle();
}
catch {
$error = $_;
};
if ($error) {
$logger->warn("Failed to connect to MySQL database '$mysql_dbname'.");
return;
}
return 1;
}
##############################################################
# These functions allow tests to use a temporary MySQL server
sub _get_extra_options_string {
if ( scalar _get_extra_options() ) {
return join( ' ', _get_extra_options() );
}
return;
}
sub _get_extra_options {
return @Cpanel::MysqlUtils::_EXTRA_MYSQL_ARGS;
}
#
##############################################################
sub xml_to_sqlite {
my ( $user, $tmpdir_root, $tmpdir_convert_base, $email_user, $homedir ) = @_;
my $code_ref = _closure_maker( $user, $tmpdir_root, $tmpdir_convert_base, $email_user, $homedir );
#fixup a user who's purposefully deleted their "etc" dir
Cpanel::AccessIds::ReducedPrivileges::call_as_user( sub { File::Path::make_path( File::Basename::dirname( _roundcube_db_path( $user, $homedir, $email_user ) ), { chmod => 0750 } ); }, $user, 'mail' );
my $rv = Cpanel::AccessIds::ReducedPrivileges::call_as_user( $code_ref, $user );
return $rv;
}
sub _roundcube_db_path {
my ( $system_user, $homedir, $mail_account ) = @_;
my ( $mail_user, $mail_domain ) = split( '@', $mail_account );
my $db_path = ( defined $mail_domain ) ? "$homedir/etc/$mail_domain/$mail_user.rcube.db" : "$homedir/etc/$mail_user.rcube.db";
return $db_path;
}
## defining as a closure, as ::run_as_user does not currently handle sub args
sub _closure_maker {
my ( $system_user, $tmpdir_root, $tmpdir_convert_base, $email_user, $homedir ) = @_;
my $code_ref = sub {
my $tmp_convertdir = "$tmpdir_convert_base/$email_user";
if ( -d $tmp_convertdir ) {
rename( $tmp_convertdir, "$tmp_convertdir.$time" );
}
# Copy the XML files over to the user's tempdir.
# Hopefully these are simple renames. But directories may be on different
# mount points requiring a copy.
File::Path::make_path($tmp_convertdir);
for my $table (@dumptables) {
my @all_src = _get_all_xml_files( $tmpdir_root, $table );
foreach my $src (@all_src) {
if ( -e $src ) {
my $filename = File::Basename::basename($src);
my $dest = "$tmp_convertdir/$filename";
File::Copy::move( $src, $dest );
}
}
}
# Clean up empty source directory.
# This will fail if the above moves failed.
rmdir($tmpdir_root);
## note: similar clause in cpsrvd to set up $ENV{'_RCUBE'}
my ( $mail_user, $mail_domain ) = split( '@', $email_user );
my $rcube_sqlite_loc8 = _roundcube_db_path( $system_user, $homedir, $email_user );
if ( -e $rcube_sqlite_loc8 ) {
rename( $rcube_sqlite_loc8, "$rcube_sqlite_loc8.$time" );
}
my $dbh = DBI->connect( "dbi:SQLite:dbname=$rcube_sqlite_loc8", "", "" ) or do {
$logger->info("Connection error to $rcube_sqlite_loc8: $!");
return;
};
## note: $dbh->{sqlite_version} is confirmed 2.8.15
create_rcube_sqlite_tables($dbh);
return unless ensure_roundcube_tables($dbh);
unless ( do_all_rcube_xml_to_db( $dbh, $tmp_convertdir ) ) {
$logger->info("Conversion of roundcube XML dump to sqlite database failed");
return;
}
$dbh->disconnect();
chmod( 0600, $rcube_sqlite_loc8 );
## the return values on these rm calls are not critical
## only remove the /tmp directory if the XML converion has been successful thus far
try {
File::Path::remove_tree($tmp_convertdir);
};
## attempt to rmdir, which will intentionally fail if any of the converts did not succeed
rmdir($tmpdir_convert_base);
return 1;
};
return $code_ref;
}
1;
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| cpan_sandbox | Folder | 0755 |
|
|
| php_sandbox | Folder | 0755 |
|
|
| MirrorSearch_pingtest | File | 2.38 KB | 0755 |
|
| activesync-invite-reply | File | 1.69 KB | 0755 |
|
| add_dns | File | 2.36 KB | 0755 |
|
| adddns | File | 2.36 KB | 0755 |
|
| addpop | File | 6.08 KB | 0755 |
|
| addsystemuser | File | 3.27 KB | 0755 |
|
| adduser | File | 92 B | 0755 |
|
| agent360.sh | File | 16.03 KB | 0700 |
|
| apachelimits | File | 4.31 KB | 0755 |
|
| archive_sync_zones | File | 3.05 KB | 0755 |
|
| auto-adjust-mysql-limits | File | 1.81 KB | 0755 |
|
| autorepair | File | 1.24 KB | 0755 |
|
| backups_clean_metadata_for_missing_backups | File | 1.57 KB | 0755 |
|
| backups_create_metadata | File | 15.75 KB | 0755 |
|
| backups_list_user_files | File | 4.56 KB | 0755 |
|
| balance_linked_node_quotas | File | 2.58 KB | 0755 |
|
| biglogcheck | File | 1.69 KB | 0755 |
|
| build_bandwidthdb_root_cache_in_background | File | 1.52 KB | 0755 |
|
| build_cpnat | File | 3.41 KB | 0755 |
|
| build_mail_sni | File | 3.87 KB | 0755 |
|
| build_maxemails_config | File | 1.14 KB | 0755 |
|
| builddovecotconf | File | 7.8 KB | 0755 |
|
| buildeximconf | File | 7 KB | 0755 |
|
| buildhttpdconf | File | 2.6 KB | 0755 |
|
| buildpureftproot | File | 539 B | 0755 |
|
| ccs-check | File | 4.91 KB | 0755 |
|
| check_cpanel_pkgs | File | 10.75 KB | 0755 |
|
| check_domain_tls_service_domains.pl | File | 6.68 KB | 0755 |
|
| check_immutable_files | File | 5.49 KB | 0755 |
|
| check_mail_spamassassin_compiledregexps_body_0 | File | 187 B | 0755 |
|
| check_maxmem_against_domains_count | File | 3.57 KB | 0755 |
|
| check_mount_procfs | File | 2.02 KB | 0755 |
|
| check_mysql | File | 5.56 KB | 0755 |
|
| check_plugin_pkgs | File | 2.45 KB | 0755 |
|
| check_security_advice_changes | File | 8.28 KB | 0755 |
|
| check_unmonitored_enabled_services | File | 4.56 KB | 0755 |
|
| check_unreliable_resolvers | File | 3.59 KB | 0755 |
|
| check_users_my_cnf | File | 6.05 KB | 0755 |
|
| check_valid_server_hostname | File | 7.66 KB | 0755 |
|
| checkalldomainsmxs | File | 2.4 KB | 0755 |
|
| checkbashshell | File | 1.18 KB | 0755 |
|
| checkccompiler | File | 1.22 KB | 0755 |
|
| checkexim.pl | File | 3.1 KB | 0755 |
|
| checklink | File | 1.29 KB | 0755 |
|
| checkusers | File | 856 B | 0755 |
|
| chkpaths | File | 141 B | 0755 |
|
| chpass | File | 416 B | 0755 |
|
| ckillall | File | 1.11 KB | 0755 |
|
| clean_dead_mailman_locks | File | 2.09 KB | 0755 |
|
| clean_up_temp_wheel_users | File | 2.44 KB | 0755 |
|
| clean_user_php_sessions | File | 4.76 KB | 0755 |
|
| cleandns | File | 13.11 KB | 0755 |
|
| cleandns8 | File | 417 B | 0755 |
|
| cleanmsglog | File | 735 B | 0755 |
|
| cleanphpsessions | File | 932 B | 0755 |
|
| cleanphpsessions.php | File | 658 B | 0644 |
|
| cleanquotas | File | 1.61 KB | 0755 |
|
| cleansessions | File | 5.89 KB | 0755 |
|
| cleanupinterchange | File | 2.64 KB | 0755 |
|
| cleanupmysqlprivs | File | 773 B | 0755 |
|
| clear_cpaddon_ui_caches | File | 1.27 KB | 0755 |
|
| clear_orphaned_virtfs_mounts | File | 3.56 KB | 0755 |
|
| comparecdb | File | 1.52 KB | 0755 |
|
| compilers | File | 2.86 KB | 0755 |
|
| compilerscheck | File | 999 B | 0755 |
|
| configure_firewall_for_cpanel | File | 520 B | 0755 |
|
| configure_rh_firewall_for_cpanel | File | 520 B | 0755 |
|
| configure_rh_ipv6_firewall_for_cpanel | File | 520 B | 0755 |
|
| convert2dovecot | File | 682 B | 0755 |
|
| convert_accesshash_to_token | File | 4.07 KB | 0755 |
|
| convert_and_migrate_from_legacy_backup | File | 1.97 KB | 0755 |
|
| convert_maildir_to_mdbox | File | 1.66 KB | 0755 |
|
| convert_mdbox_to_maildir | File | 1.66 KB | 0755 |
|
| convert_roundcube_mysql2sqlite | File | 26.12 KB | 0755 |
|
| convert_to_dovecot_delivery | File | 4.33 KB | 0755 |
|
| convert_whmxfer_to_sqlite | File | 1.46 KB | 0755 |
|
| copy_user_mail_as_root | File | 1.25 KB | 0755 |
|
| copy_user_mail_as_user | File | 1.34 KB | 0755 |
|
| cpaddonsup | File | 3.25 KB | 0755 |
|
| cpan_config | File | 2.8 KB | 0755 |
|
| cpanel_initial_install | File | 67.81 KB | 0755 |
|
| cpanelsync | File | 28.31 KB | 0755 |
|
| cpanelsync_postprocessor | File | 1.62 KB | 0755 |
|
| cpanpingtest | File | 965 B | 0755 |
|
| cpbackup | File | 44.79 KB | 0755 |
|
| cpbackup_transport_file | File | 5.65 KB | 0755 |
|
| cpdig | File | 2.09 KB | 0755 |
|
| cpfetch | File | 1.23 KB | 0755 |
|
| cphulkdblacklist | File | 433 B | 0755 |
|
| cphulkdwhitelist | File | 1.3 KB | 0755 |
|
| cpservice | File | 2.87 KB | 0755 |
|
| cpuser_port_authority | File | 19.29 KB | 0755 |
|
| cpuser_service_manager | File | 10.85 KB | 0755 |
|
| create_default_featurelist | File | 11.61 KB | 0700 |
|
| createacct | File | 29.3 MB | 0700 |
|
| custom_backup_destination.pl.sample | File | 5.06 KB | 0755 |
|
| custom_backup_destination.pl.skeleton | File | 2.84 KB | 0755 |
|
| dcpumon-wrapper | File | 850 B | 0755 |
|
| delpop | File | 6.2 KB | 0755 |
|
| detect_env_capabilities | File | 508 B | 0755 |
|
| disable_prelink | File | 2.77 KB | 0755 |
|
| disable_sqloptimizer | File | 1.49 KB | 0755 |
|
| disablefileprotect | File | 2.19 KB | 0755 |
|
| distro_changed_hook | File | 1.16 KB | 0755 |
|
| dnscluster | File | 4.44 KB | 0755 |
|
| dnsqueuecron | File | 1.29 KB | 0755 |
|
| dnssec-cluster-keys | File | 3.75 KB | 0755 |
|
| dovecot_maintenance | File | 7.66 KB | 0755 |
|
| dovecot_set_defaults.pl | File | 984 B | 0755 |
|
| dumpcdb | File | 866 B | 0755 |
|
| dumpinodes | File | 687 B | 0755 |
|
| dumpquotas | File | 616 B | 0755 |
|
| dumpstor | File | 913 B | 0755 |
|
| ea4_fresh_install | File | 2.64 KB | 0755 |
|
| edit_cpanelsync_exclude_list | File | 2.58 KB | 0755 |
|
| editquota | File | 3.43 KB | 0755 |
|
| elevate-cpanel | File | 405.07 KB | 0700 |
|
| email_archive_maintenance | File | 6.15 KB | 0755 |
|
| email_hold_maintenance | File | 1.46 KB | 0755 |
|
| enable_spf_dkim_globally | File | 8.83 KB | 0755 |
|
| enable_sqloptimizer | File | 1.57 KB | 0755 |
|
| enablefileprotect | File | 2.1 KB | 0755 |
|
| ensure_autoenabled_features | File | 3.18 MB | 0700 |
|
| ensure_conf_dir_crt_key | File | 4.82 KB | 0755 |
|
| ensure_cpuser_file_ip | File | 2.55 KB | 0755 |
|
| ensure_crontab_permissions | File | 1.08 KB | 0755 |
|
| ensure_dovecot_memory_limits_meet_minimum | File | 3.13 KB | 0755 |
|
| ensure_hostname_resolves | File | 2.51 KB | 0755 |
|
| ensure_includes | File | 601 B | 0755 |
|
| ensure_vhost_includes | File | 13.53 KB | 0755 |
|
| exim_tidydb | File | 2.96 KB | 0755 |
|
| eximconfgen | File | 1.32 KB | 0755 |
|
| eximstats_spam_check | File | 867 B | 0755 |
|
| expunge_expired_certificates_from_sslstorage | File | 3.56 KB | 0755 |
|
| expunge_expired_pkgacct_sessions | File | 852 B | 0755 |
|
| expunge_expired_transfer_sessions | File | 1.06 KB | 0755 |
|
| fastmail | File | 5.16 KB | 0755 |
|
| featuremod | File | 1.92 KB | 0755 |
|
| fetchfile | File | 422 B | 0755 |
|
| find_and_fix_rpm_issues | File | 6.99 KB | 0755 |
|
| find_outdated_services | File | 6.06 KB | 0755 |
|
| find_pids_with_inotify_watch_on_path | File | 3.66 KB | 0755 |
|
| fix-cpanel-perl | File | 28.44 KB | 0755 |
|
| fix-listen-on-localhost | File | 3.52 KB | 0755 |
|
| fix-web-vhost-configuration | File | 6.15 KB | 0755 |
|
| fix_addon_permissions | File | 7.69 KB | 0755 |
|
| fix_dns_zone_ttls | File | 1.34 KB | 0755 |
|
| fix_innodb_tables | File | 4.05 KB | 0755 |
|
| fix_reseller_acls | File | 10.7 KB | 0755 |
|
| fixetchosts | File | 4.32 KB | 0755 |
|
| fixheaders | File | 572 B | 0755 |
|
| fixmailinglistperms | File | 1008 B | 0755 |
|
| fixmailman | File | 2.09 KB | 0755 |
|
| fixnamedviews | File | 1.22 KB | 0755 |
|
| fixndc | File | 413 B | 0755 |
|
| fixquotas | File | 18.39 KB | 0755 |
|
| fixrelayd | File | 1.74 KB | 0755 |
|
| fixrndc | File | 16.39 KB | 0755 |
|
| fixtar | File | 503 B | 0755 |
|
| fixtlsversions | File | 4.7 KB | 0755 |
|
| fixvaliases | File | 2 KB | 0755 |
|
| fixwebalizer | File | 966 B | 0755 |
|
| forcelocaldomain | File | 895 B | 0755 |
|
| ftpfetch | File | 2.2 KB | 0755 |
|
| ftpquotacheck | File | 8.31 KB | 0755 |
|
| ftpsfetch | File | 2.36 KB | 0755 |
|
| ftpupdate | File | 261 B | 0755 |
|
| gather_update_log_stats | File | 4.25 KB | 0700 |
|
| gather_update_logs_setupcrontab | File | 5.45 KB | 0700 |
|
| gemwrapper | File | 1.74 KB | 0755 |
|
| gencrt | File | 6.26 KB | 0755 |
|
| generate_account_suspension_include | File | 5.7 KB | 0755 |
|
| generate_google_drive_credentials | File | 1.11 KB | 0755 |
|
| generate_google_drive_oauth_uri | File | 984 B | 0755 |
|
| generate_maildirsize | File | 13.94 KB | 0755 |
|
| gensysinfo | File | 1.16 KB | 0755 |
|
| get_locale_from_legacy_name_info | File | 1.99 KB | 0755 |
|
| getremotecpmove | File | 12.67 KB | 0755 |
|
| grpck | File | 1.19 KB | 0755 |
|
| hackcheck | File | 3.02 KB | 0755 |
|
| hook | File | 1.45 KB | 0755 |
|
| httpspamdetect | File | 2.66 KB | 0755 |
|
| hulk-unban-ip | File | 4.11 MB | 0700 |
|
| import_exim_data | File | 8.39 KB | 0755 |
|
| increase_filesystem_limits | File | 891 B | 0755 |
|
| initacls | File | 4.99 KB | 0755 |
|
| initfpsuexec | File | 444 B | 0755 |
|
| initialize_360monitoring | File | 2.76 KB | 0700 |
|
| initquotas | File | 19.47 KB | 0755 |
|
| initsuexec | File | 4.03 KB | 0755 |
|
| install_cpanel_analytics | File | 1.93 KB | 0755 |
|
| install_dovecot_fts | File | 1.57 KB | 0755 |
|
| install_plugin | File | 2.8 KB | 0755 |
|
| install_tuxcare_els_php | File | 1.84 KB | 0755 |
|
| installpkg | File | 575 B | 0755 |
|
| installpostgres | File | 6.56 KB | 0755 |
|
| installsqlite3 | File | 1.82 KB | 0755 |
|
| ipcheck | File | 3.93 KB | 0755 |
|
| ipusage | File | 7.45 KB | 0755 |
|
| isdedicatedip | File | 602 B | 0755 |
|
| jetbackup-check | File | 3.69 KB | 0755 |
|
| killdns | File | 422 B | 0755 |
|
| killdns-dnsadmin | File | 1.15 KB | 0755 |
|
| killmysqluserprivs | File | 433 B | 0755 |
|
| killmysqlwildcard | File | 1.15 KB | 0755 |
|
| killpvhost | File | 853 B | 0755 |
|
| killspamkeys | File | 937 B | 0755 |
|
| link_3rdparty_binaries | File | 1.24 KB | 0755 |
|
| linksubemailtomainacct | File | 3.17 KB | 0755 |
|
| listcheck | File | 538 B | 0755 |
|
| listsubdomains | File | 1.05 KB | 0755 |
|
| litespeed-check | File | 3.86 KB | 0755 |
|
| locale_export | File | 5.21 KB | 0755 |
|
| locale_import | File | 4.35 KB | 0755 |
|
| locale_info | File | 3.99 KB | 0755 |
|
| logo.dat | File | 205 B | 0644 |
|
| magicloader | File | 1.94 KB | 0755 |
|
| maildir_converter | File | 6.08 KB | 0755 |
|
| mailperm | File | 16.53 KB | 0755 |
|
| mailscannerupdate | File | 2.42 KB | 0755 |
|
| mainipcheck | File | 10 KB | 0755 |
|
| maintenance | File | 51.87 KB | 0755 |
|
| make_config | File | 407 B | 0644 |
|
| make_hostname_unowned | File | 1.16 KB | 0755 |
|
| manage_extra_marketing | File | 12.76 KB | 0700 |
|
| manage_greylisting | File | 16.19 KB | 0755 |
|
| manage_mysql_profiles | File | 16.33 KB | 0755 |
|
| migrate_ccs_to_cpdavd | File | 47.06 KB | 0755 |
|
| migrate_local_ini_to_php_ini | File | 7.41 KB | 0755 |
|
| migrate_whmtheme_file_to_userdata | File | 2.95 KB | 0755 |
|
| mkwwwacctconf | File | 2.33 KB | 0755 |
|
| modify_accounts | File | 4.07 KB | 0755 |
|
| modify_featurelist | File | 9.22 KB | 0700 |
|
| modify_packages | File | 3.64 KB | 0755 |
|
| modsec_vendor | File | 15.63 KB | 0755 |
|
| mysqlconnectioncheck | File | 6.72 KB | 0755 |
|
| mysqlpasswd | File | 4.14 KB | 0755 |
|
| named.ca | File | 1.57 KB | 0644 |
|
| named.rfc1912.zones | File | 774 B | 0644 |
|
| notify_expiring_certificates | File | 9.37 KB | 0755 |
|
| notify_expiring_certificates_on_linked_nodes | File | 1.33 KB | 0755 |
|
| oopscheck | File | 1.12 KB | 0755 |
|
| optimize_eximstats | File | 3.88 KB | 0755 |
|
| patch_mail_spamassassin_compiledregexps_body_0 | File | 2.39 KB | 0755 |
|
| patchfdsetsize | File | 2.72 KB | 0755 |
|
| pedquota | File | 2.26 KB | 0755 |
|
| perform_sqlite_auto_rebuild_db_maintenance | File | 1.98 KB | 0755 |
|
| perlinstaller | File | 528 B | 0755 |
|
| perlmods | File | 1.18 KB | 0755 |
|
| php_fpm_config | File | 9.73 KB | 0755 |
|
| phpini_tidy | File | 687 B | 0755 |
|
| pkgacct | File | 88.2 KB | 0755 |
|
| post_snapshot | File | 2.09 KB | 0755 |
|
| post_sync_cleanup | File | 6.09 KB | 0755 |
|
| primary_virtual_host_migration | File | 2.44 KB | 0755 |
|
| process_pending_cpanel_php_pear_registration | File | 2.73 KB | 0755 |
|
| process_site_templates | File | 7.27 KB | 0755 |
|
| proxydomains | File | 9.59 KB | 0755 |
|
| ptycheck | File | 724 B | 0755 |
|
| purge_modsec_log | File | 1.53 KB | 0755 |
|
| purge_old_config_caches | File | 2.08 KB | 0755 |
|
| pwck | File | 708 B | 0755 |
|
| quickdnslookup | File | 1.13 KB | 0755 |
|
| quickwhoisips | File | 2.29 KB | 0755 |
|
| quota_auto_fix | File | 1.41 KB | 0755 |
|
| quotacheck | File | 22.36 KB | 0755 |
|
| rawchpass | File | 460 B | 0755 |
|
| rdate | File | 4.8 KB | 0755 |
|
| realadduser | File | 5.61 KB | 0755 |
|
| realchpass | File | 3.26 KB | 0755 |
|
| realperlinstaller | File | 5.67 KB | 0755 |
|
| realrawchpass | File | 425 B | 0755 |
|
| rebuild_available_addons_packages_cache | File | 1.27 KB | 0755 |
|
| rebuild_available_rpm_addons_cache | File | 1.27 KB | 0755 |
|
| rebuild_bandwidthdb_root_cache | File | 1.45 KB | 0755 |
|
| rebuild_dbmap | File | 5.8 KB | 0755 |
|
| rebuild_provider_openid_connect_links_db | File | 1.01 KB | 0755 |
|
| rebuild_whm_chrome | File | 2.22 KB | 0755 |
|
| rebuilddnsconfig | File | 25.5 KB | 0755 |
|
| rebuildhttpdconf | File | 2.6 KB | 0755 |
|
| rebuildinstalledssldb | File | 2.85 KB | 0755 |
|
| rebuildippool | File | 509 B | 0755 |
|
| rebuilduserssldb | File | 948 B | 0755 |
|
| refresh-dkim-validity-cache | File | 5.97 KB | 0755 |
|
| regenerate_tokens | File | 2.18 KB | 0755 |
|
| remote_log_transfer | File | 11.6 KB | 0755 |
|
| remove_dovecot_index_files | File | 5.89 KB | 0755 |
|
| removeacct | File | 27.37 MB | 0700 |
|
| rescan_user_dovecot_fts | File | 2.98 KB | 0755 |
|
| reset_mail_quotas_to_sane_values | File | 6.82 KB | 0755 |
|
| resetmailmanurls | File | 2.03 KB | 0755 |
|
| resetquotas | File | 4.61 KB | 0755 |
|
| restartsrv | File | 3.19 KB | 0755 |
|
| restartsrv_apache | File | 422 B | 0755 |
|
| restartsrv_apache_php_fpm | File | 10.77 MB | 0755 |
|
| restartsrv_base | File | 10.77 MB | 0755 |
|
| restartsrv_bind | File | 10.77 MB | 0755 |
|
| restartsrv_chkservd | File | 427 B | 0755 |
|
| restartsrv_clamd | File | 10.77 MB | 0755 |
|
| restartsrv_cpanel_php_fpm | File | 10.77 MB | 0755 |
|
| restartsrv_cpanellogd | File | 10.77 MB | 0755 |
|
| restartsrv_cpdavd | File | 10.77 MB | 0755 |
|
| restartsrv_cpgreylistd | File | 10.77 MB | 0755 |
|
| restartsrv_cphulkd | File | 10.77 MB | 0755 |
|
| restartsrv_cpipv6 | File | 10.77 MB | 0755 |
|
| restartsrv_cpsrvd | File | 10.77 MB | 0755 |
|
| restartsrv_crond | File | 10.77 MB | 0755 |
|
| restartsrv_dnsadmin | File | 10.77 MB | 0755 |
|
| restartsrv_dovecot | File | 10.77 MB | 0755 |
|
| restartsrv_exim | File | 10.77 MB | 0755 |
|
| restartsrv_eximstats | File | 504 B | 0755 |
|
| restartsrv_ftpd | File | 426 B | 0755 |
|
| restartsrv_ftpserver | File | 911 B | 0755 |
|
| restartsrv_httpd | File | 10.77 MB | 0755 |
|
| restartsrv_imap | File | 437 B | 0755 |
|
| restartsrv_inetd | File | 2.47 KB | 0755 |
|
| restartsrv_ipaliases | File | 10.77 MB | 0755 |
|
| restartsrv_lmtp | File | 437 B | 0755 |
|
| restartsrv_mailman | File | 10.77 MB | 0755 |
|
| restartsrv_mysql | File | 10.77 MB | 0755 |
|
| restartsrv_named | File | 579 B | 0755 |
|
| restartsrv_nscd | File | 10.77 MB | 0755 |
|
| restartsrv_p0f | File | 10.77 MB | 0755 |
|
| restartsrv_pdns | File | 10.77 MB | 0755 |
|
| restartsrv_pop3 | File | 437 B | 0755 |
|
| restartsrv_postgres | File | 427 B | 0755 |
|
| restartsrv_postgresql | File | 10.77 MB | 0755 |
|
| restartsrv_powerdns | File | 442 B | 0755 |
|
| restartsrv_proftpd | File | 10.77 MB | 0755 |
|
| restartsrv_pureftpd | File | 10.77 MB | 0755 |
|
| restartsrv_queueprocd | File | 10.77 MB | 0755 |
|
| restartsrv_rsyslog | File | 10.77 MB | 0755 |
|
| restartsrv_rsyslogd | File | 437 B | 0755 |
|
| restartsrv_spamd | File | 10.77 MB | 0755 |
|
| restartsrv_sshd | File | 10.77 MB | 0755 |
|
| restartsrv_syslogd | File | 2.4 KB | 0755 |
|
| restartsrv_tailwatchd | File | 10.77 MB | 0755 |
|
| restartsrv_unknown | File | 10.77 MB | 0755 |
|
| restartsrv_xinetd | File | 422 B | 0755 |
|
| restorecpuserfromcache | File | 1.96 KB | 0755 |
|
| restorepkg | File | 47.21 MB | 0700 |
|
| rfc1912_zones.tar | File | 10 KB | 0644 |
|
| rpmup | File | 5.07 KB | 0755 |
|
| rsync-user-homedir.pl | File | 5.76 KB | 0755 |
|
| run_if_exists | File | 512 B | 0755 |
|
| run_plugin_lifecycle | File | 3.66 KB | 0700 |
|
| runstatsonce | File | 440 B | 0755 |
|
| runweblogs | File | 1.02 KB | 0755 |
|
| sa-update_wrapper | File | 3.34 KB | 0755 |
|
| safetybits.pl | File | 844 B | 0755 |
|
| secureit | File | 4.72 KB | 0755 |
|
| securemysql | File | 4.4 KB | 0755 |
|
| securerailsapps | File | 3.58 KB | 0755 |
|
| securetmp | File | 16.76 KB | 0755 |
|
| sendicq | File | 474 B | 0755 |
|
| servicedomains | File | 9.59 KB | 0755 |
|
| set_mailman_archive_perms | File | 1.75 KB | 0755 |
|
| setpostgresconfig | File | 6.04 KB | 0755 |
|
| setup_greylist_db | File | 16.19 KB | 0755 |
|
| setup_modsec_db | File | 1.3 KB | 0755 |
|
| setup_systemd_timer_for_plugins | File | 3.92 KB | 0700 |
|
| setupftpserver | File | 10.47 KB | 0755 |
|
| setupmailserver | File | 9.39 KB | 0755 |
|
| setupnameserver | File | 12.6 KB | 0755 |
|
| shrink_modsec_ip_database | File | 12.97 KB | 0755 |
|
| simpleps | File | 3.05 KB | 0755 |
|
| slurp_exim_mainlog | File | 5.78 KB | 0755 |
|
| smartcheck | File | 15.13 KB | 0755 |
|
| smtpmailgidonly | File | 8.15 KB | 0755 |
|
| snapshot_prep | File | 5.88 KB | 0755 |
|
| spamassassin_dbm_cleaner | File | 5.85 KB | 0755 |
|
| spamassassindisable | File | 3.74 KB | 0755 |
|
| spamboxdisable | File | 2.27 KB | 0755 |
|
| sshcontrol | File | 14.38 KB | 0755 |
|
| ssl_crt_status | File | 3.84 KB | 0755 |
|
| suspendacct | File | 18.08 KB | 0755 |
|
| suspendmysqlusers | File | 4.78 KB | 0755 |
|
| swapip | File | 3.82 KB | 0755 |
|
| sync-mysql-users-from-grants | File | 1.2 KB | 0755 |
|
| sync_child_accounts | File | 1.77 KB | 0755 |
|
| sync_contact_emails_to_cpanel_users_files | File | 1.14 KB | 0755 |
|
| synccpaddonswithsqlhost | File | 6.59 KB | 0755 |
|
| synctransfers | File | 1.92 KB | 0755 |
|
| syslog_check | File | 1.36 KB | 0755 |
|
| sysup | File | 645 B | 0755 |
|
| test_sa_compiled | File | 1.07 KB | 0755 |
|
| transfer_account_as_user | File | 2.34 KB | 0755 |
|
| transfer_accounts_as_root | File | 4.76 KB | 0755 |
|
| transfer_in_progress | File | 3.08 KB | 0755 |
|
| transfer_in_progress.pod | File | 312 B | 0644 |
|
| transfermysqlusers | File | 10.12 MB | 0700 |
|
| try-later | File | 7.95 KB | 0755 |
|
| unblockip | File | 667 B | 0755 |
|
| uninstall_cpanel_analytics | File | 1.2 KB | 0755 |
|
| uninstall_dovecot_fts | File | 562 B | 0755 |
|
| uninstall_plugin | File | 2.84 KB | 0755 |
|
| unlink_service_account | File | 2.62 KB | 0755 |
|
| unpkgacct | File | 4.6 KB | 0755 |
|
| unslavenamedconf | File | 863 B | 0755 |
|
| unsuspendacct | File | 17.96 KB | 0755 |
|
| unsuspendmysqlusers | File | 7.1 KB | 0755 |
|
| upcp | File | 31.97 KB | 0755 |
|
| upcp-running | File | 2.7 KB | 0755 |
|
| upcp.static | File | 731.4 KB | 0755 |
|
| update-packages | File | 5.07 KB | 0755 |
|
| update_apachectl | File | 480 B | 0755 |
|
| update_db_cache | File | 430 B | 0755 |
|
| update_dkim_keys | File | 1.45 KB | 0755 |
|
| update_exim_rejects | File | 1.21 KB | 0755 |
|
| update_existing_mail_quotas_for_account | File | 4.78 KB | 0755 |
|
| update_feature_flags | File | 957 B | 0755 |
|
| update_freebusy_data | File | 5.25 KB | 0755 |
|
| update_known_proxy_ips | File | 1002 B | 0755 |
|
| update_local_rpm_versions | File | 4.56 KB | 0755 |
|
| update_mailman_cache | File | 8.34 KB | 0755 |
|
| update_mysql_systemd_config | File | 1.07 KB | 0755 |
|
| update_neighbor_netblocks | File | 487 B | 0755 |
|
| update_sa_config | File | 2.14 KB | 0755 |
|
| update_spamassassin_config | File | 10.73 KB | 0755 |
|
| update_users_jail | File | 691 B | 0755 |
|
| update_users_vhosts | File | 801 B | 0755 |
|
| updatedomainips | File | 605 B | 0755 |
|
| updatenameserverips | File | 1.66 KB | 0755 |
|
| updatenow | File | 5.18 KB | 0755 |
|
| updatenow.static | File | 2.02 MB | 0755 |
|
| updatesigningkey | File | 1.95 KB | 0755 |
|
| updatessldomains | File | 1.81 KB | 0755 |
|
| updatesupportauthorizations | File | 2.49 KB | 0755 |
|
| updateuserdatacache | File | 2.47 KB | 0755 |
|
| updateuserdomains | File | 774 B | 0755 |
|
| upgrade_bandwidth_dbs | File | 2.22 KB | 0755 |
|
| upgrade_subaccount_databases | File | 2.73 KB | 0755 |
|
| userdata_wildcard_cleanup | File | 5.74 KB | 0755 |
|
| userdirctl | File | 5.01 KB | 0755 |
|
| validate_sshkey_passphrase | File | 1.21 KB | 0755 |
|
| verify_api_spec_files | File | 757 B | 0755 |
|
| verify_pidfile | File | 1.96 KB | 0755 |
|
| verify_vhost_includes | File | 7.34 KB | 0755 |
|
| vps_optimizer | File | 7.82 KB | 0755 |
|
| vzzo-fixer | File | 725 B | 0755 |
|
| whmlogin | File | 2.33 KB | 0755 |
|
| whoowns | File | 1.13 KB | 0755 |
|
| wwwacct | File | 29.3 MB | 0700 |
|
| wwwacct2 | File | 88 B | 0755 |
|
| xfer_rcube_schema_migrate.pl | File | 2.4 KB | 0755 |
|
| xfer_rcube_uid_resolver.pl | File | 1.8 KB | 0755 |
|
| xferpoint | File | 3.13 KB | 0755 |
|
| xfertool | File | 16.23 KB | 0755 |
|
| zoneexists | File | 800 B | 0755 |
|