????

Your IP : 18.224.54.120


Current Path : /proc/322176/root/scripts/
Upload File :
Current File : //proc/322176/root/scripts/transfer_account_as_user

#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - scripts/transfer_account_as_user        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::transfer_account_as_user;

use cPstrict;

=encoding utf-8

=head1 USAGE

    transfer_account_as_user --host=the.source --user=hank

=head1 DESCRIPTION

This utility transfers an account from a remote server to the local one,
authenticated as that account on the remote.

The parameters are:

=over

=item * C<--host> - The remote (source) hostname or IP address. Required.

=item * C<--user> - The name of the user to transfer.

=item * C<--session> - (optional) An argument, in C<key=value> format, to give
to the C<create_remote_user_transfer_session> API call. May be given 0 or
more times.

=item * C<--enqueue> - (optional) An argument, in C<key=value> format, to give
to the C<enqueue_transfer_item> API call. May be given 0 or more times.

=back

=head1 AUTHENTICATION

This script will prompt for the user’s password. No other authentication
mechanisms are supported currently.

=head1 SEE ALSO

F</usr/local/cpanel/scripts/transfer_accounts_as_root> is like this script
but authenticates to the source server as root.

=cut

#----------------------------------------------------------------------

use parent qw(
  Cpanel::CLI::TransferAccounts
);

use constant _OPTIONS => (
    __PACKAGE__->SUPER::_OPTIONS(),
    'user=s',
);

__PACKAGE__->new(@ARGV)->run() if !caller;

#----------------------------------------------------------------------

sub run ($self) {
    my ( $host, $username ) = $self->parse_opts();

    my $authn_username = $username;

    my ( $prompt, $prompt_var, @authn_args );

    $prompt     = "Enter “$authn_username”’s password on “$host”:";
    $prompt_var = 'password';

    my $secret = $self->get_secret($prompt);

    push @authn_args, ( $prompt_var => $secret );

    my $guard = $self->create_session_and_aborter(
        'create_remote_user_transfer_session',
        {
            host => $host,
            @authn_args,
        },
    );

    $self->enqueue_users( 'AccountRemoteUser', [$username] );

    $self->do_transfer_and_finish();

    return;
}

1;