MMCT TEAM
Server IP : 103.53.40.154  /  Your IP : 3.12.34.192
Web Server : Apache
System : Linux md-in-35.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : ppcad7no ( 715)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /../scripts/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //../scripts/xfer_rcube_uid_resolver.pl
#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - scripts/xfer_rcube_uid_resolver.pl      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::xfer_rcube_uid_resolver;
use strict;

use Cpanel::Email::RoundCube::DBI;

## if invoked as a script, there is nothing in the call stack
my $invoked_as_script = !caller();
__PACKAGE__->script(@ARGV) if ($invoked_as_script);

sub script {
    ## read password from stdin, for security
    ## see positional argument list below
    my ( $package, @args ) = @_;
    my $dbpassword = scalar(<STDIN>);

    my ( $temp_dbname, $dbhost, $dbuser, $owner, $old_owner ) = @args;

    my $dbh = Cpanel::Email::RoundCube::DBI::mysql_db_connect( $temp_dbname, $dbhost, $dbuser, $dbpassword );

    return do_resolution( $dbh, $temp_dbname, $owner, $old_owner );
}

sub do_resolution {
    my ( $dbh, $temp_dbname, $owner, $old_owner ) = @_;

    my $src_dbh = $dbh->clone( { database => $temp_dbname } );

    my $dest_dbh = $dbh->clone( { database => 'roundcube' } );

    ## note: &uid_solver uses introspective techniques that the DBD sqlite package
    ##   is not really ready for; otherwise, uid_solver could be used to port
    ##   a sqlite database back into mysql with only a change to the $src_dbh!

    ## at this point, src data is in a temp mysql, and schema is "up to date" relative to dest
    ## now, massage the potentially colliding UIDs into dest via $dbh->last_insert_id
    my ( $res, $msg ) = Cpanel::Email::RoundCube::DBI::uid_solver( $src_dbh, $dest_dbh, $owner, $old_owner );

    $src_dbh->disconnect();
    $dest_dbh->disconnect();

    return;
}

1;

MMCT - 2023