LittleDemon WebShell


Linux sh00002.bigrock.com 5.14.0-687.29.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 23 16:18:48 EDT 2026 x86_64
Path : /scripts/
File Upload :
Command :
Current File : //scripts/unlink_service_account

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

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

use strict;
use warnings;
use Cpanel::AcctUtils::DomainOwner::Tiny ();
use Cpanel::JSON                         ();
use Cpanel::SafeRun::Errors              ();
use Cpanel::Usage                        ();

exit( run(@ARGV) ) unless caller();

sub run {
    my (@args) = @_;

    my ( $user, $service, $dismiss );
    my $opts = {
        'user'    => \$user,
        'service' => \$service,
        'dismiss' => \$dismiss,
    };

    Cpanel::Usage::wrap_options( \@args, \&usage, $opts );
    usage() unless ( $user && $service );
    my ( $local, $domain ) = split( /\@/, $user, 2 );
    usage() unless ( $local && $domain );

    my $owner = Cpanel::AcctUtils::DomainOwner::Tiny::getdomainowner( $domain, { default => '' } );
    if ( !$owner ) {
        print "Cannot find the owner of $domain, try rebuilding /etc/userdomains first with /usr/local/cpanel/scripts/updateuserdomains\n";
        return 1;
    }

    # Use bin/uapi instead of Cpanel::API::execute because this script is uncompiled, and some of the
    # API code we need is unshipped.
    my $json = Cpanel::SafeRun::Errors::saferunallerrors(
        '/usr/local/cpanel/bin/uapi',
        !$< ? ( '--user', $owner ) : (),    # if we're running as root, we need to tell it which user to run the API call for
        '--output',    'json',
        'UserManager', 'unlink_service_account',
        map { join '=', @$_ } ( [ username => $local ], [ domain => $domain ], [ service => $service ], [ dismiss => $dismiss ] )
    );
    my $response = Cpanel::JSON::Load($json);

    if ( !$response->{result}{status} ) {
        print "$_\n" foreach ( @{ $response->{result}{errors} } );
        return 1;
    }

    return 0;
}

sub usage {
    my $prog = $0;
    print <<USAGE;
$0 [options] - Unlink a service account from a sub-account.

This script may be run either as root or by a cPanel user.

OPTIONS
    --user USER\@DOMAIN
        Full login of the sub-account.
    --service SERVICE
        Service to unlink from the user (ftp, webdisk, or email)
    --dismiss
        Also dismiss the merge prompt, so this account will not show up as as merge candidate

Sample usages:
    > $0 --user test\@domain1.example --service ftp
    > $0 --user test3\@domain1.example --service email
USAGE
    exit 0;
}

1;

LittleDemon - FACEBOOK
[ KELUAR ]
Page not found – Sparkplug Films
Small totara tree on ridge above Long Point

Page not found

The page you are looking for doesn't exist, or it has been moved. Please try searching using the form below.