#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/xferpoint Copyright 2019 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
use strict;
use warnings;
use Cpanel::AcctUtils::Account ();
use Cpanel::Validate::Domain::Tiny ();
use Cpanel::Hostname ();
use Cpanel::Validate::IP::v4 ();
our $VERSION = '0.5';
if ( $ARGV[0] eq '--version' ) {
print "VERSION: $VERSION\n";
exit;
}
my $user = shift(@ARGV);
my $sourceip = shift;
my $destip = shift;
my $domain = shift;
my $shared_ip = shift;
my @nameservers = @ARGV;
my $hostname = Cpanel::Hostname::gethostname();
if ( !$user || !$sourceip || !$destip || !$domain || !$shared_ip ) {
die "Usage: $0 user sourceip destip domain sharedip [nameserver1 nameserver2 ...]";
}
if ( !Cpanel::AcctUtils::Account::accountexists($user) ) {
die "The user '$user' doesn't exist.\n";
}
foreach my $ip ( $sourceip, $destip, $shared_ip ) {
next if $ip eq -1;
if ( !Cpanel::Validate::IP::v4::is_valid_ipv4($ip) ) {
die "'$ip' is not a valid ip.\n";
}
}
if ( !Cpanel::Validate::Domain::Tiny::validdomainname($domain) ) {
die "'$domain' is not valid as a domain name.\n";
}
if ( @nameservers && scalar @nameservers < 2 ) {
die "There must be at least two nameservers given.\n";
}
print "[xferpoint] server:$hostname user:$user\n";
system '/usr/local/cpanel/scripts/xfertool', '--disallowlogins', $user;
system '/usr/local/cpanel/scripts/xfertool', '--blockdynamiccontent', $user;
system '/usr/local/cpanel/scripts/xfertool', '--setupmaildest', $user, 'secondary';
if ( -x '/usr/local/cpanel/bin/swapip' ) {
system '/usr/local/cpanel/bin/swapip', $sourceip, $destip, $shared_ip, $domain;
}
if (@nameservers) {
foreach my $dns (@nameservers) {
if ( !Cpanel::Validate::Domain::Tiny::validdomainname($dns) ) {
die "$dns is not valid.\n";
}
}
system '/usr/local/cpanel/scripts/xfertool', '--changenameservers', $user, @nameservers;
}
else {
print "[xferpoint] not updating nameservers (none provided)\n";
}
print "[xferpoint] complete\n";
Copyright 2K16 - 2K18 Indonesian Hacker Rulez