PHP 7.4.33
Preview: cpmerge Size: 4.52 KB
//opt/dedrads/cpmerge
#!/usr/lib/rads/venv/bin/python3
"""
This module provides command-line interface (CLI) functionalities for the
application.

It includes functions and classes to parse command-line arguments, handle user
input, and execute appropriate actions based on the commands and options
provided by the user.
"""
import sys
import logging
from argparse import ArgumentParser

# pylint: disable=wrong-import-position,import-error,import-self
sys.path.insert(0, '/usr/lib/dedrads')
from cpmerge import merge, revert_merge, check_target_user, check_users, split

## see merge.py for the majority of the notes.

## logging ##
logger = logging.getLogger("cpmerge")
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler("/var/log/cpmerge.log")
file_handler.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler(sys.stderr)
console_handler.setLevel(logging.INFO)
formatter = logging.Formatter(
    "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
console_formatter = logging.Formatter("%(message)s")
file_handler.setFormatter(formatter)
console_handler.setFormatter(console_formatter)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
## logging ##


def main():
    """Main function"""
    version = '0.9.12'
    parser = ArgumentParser(
        description='Merge single or multiple cPanels into one cPanel account'
    )
    parser.add_argument('--target', '-t', help='User to merge into')
    parser.add_argument('--user', '-u', help='User to merge into target user ')
    parser.add_argument(
        '--all',
        '-a',
        help='Merge all users on the server into the target user',
        action='store_true',
    )
    parser.add_argument(
        '--owner', '-o', help='Merge all users owned by owner into target user'
    )
    parser.add_argument(
        '--list',
        '-l',
        help='list users to merge \n Example: --list \'user1 user2 user3\'',
    )
    parser.add_argument(
        '--no_backup',
        '-nb',
        help='''don\'t backup merged users prior to merging.\n
                cpmerge takes backups by default.''',
        action='store_true',
    )
    parser.add_argument(
        '--no_term',
        '-nt',
        help='don\'t terminate users after merging',
        action='store_true',
    )
    parser.add_argument(
        '--revert',
        '-r',
        help='''revert merge, or split from backups taken by cpmerge
                by target user.''',
    )
    parser.add_argument(
        '--version',
        '-v',
        help='display version',
        action='version',
        version=f'cpmerge {version}',
    )
    parser.add_argument(
        '--split', '-s', help='split a cpanel into multiple cpanels by domain'
    )
    parser.add_argument(
        '--domain',
        '-d',
        help='domain to split. this flag is only used with --split',
    )
    args = parser.parse_args()

    ## instantiate lists for appending ##
    users = []
    owner = []

    if args.split:
        if args.domain:
            domain = args.domain
        else:
            domain = False
        check_target_user(args.split)
        split(args.split, args.no_backup, domain)
    elif args.target:
        target_user = args.target
        check_target_user(target_user)
        if args.user:
            users.append(args.user)
            check_users(users)
            merge(
                target_user=target_user,
                merge_type='list',
                users=users,
                no_backup=args.no_backup,
                no_term=args.no_term,
            )
        elif args.all:
            merge(
                target_user=target_user,
                merge_type='all',
                no_backup=args.no_backup,
                no_term=args.no_term,
            )
        elif args.owner:
            owner.append(args.owner)
            check_users(owner)
            owner = args.owner
            merge(
                target_user=target_user,
                merge_type='owner',
                owner=owner,
                no_backup=args.no_backup,
                no_term=args.no_term,
            )
        elif args.list:
            for user in args.list.split(' '):
                users.append(user)
                check_users(users)
            merge(
                target_user=target_user,
                users=users,
                merge_type='list',
                no_backup=args.no_backup,
                no_term=args.no_term,
            )
    elif args.revert:
        revert_merge(args.revert)

    else:
        parser.print_help()
        sys.exit(1)


if __name__ == '__main__':
    main()

Directory Contents

Dirs: 14 × Files: 95
Name Size Perms Modified Actions
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
cms_tools DIR
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
etc DIR
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
extras DIR
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
mailparse DIR
- dr-xr-xr-x 2026-09-26 06:35:47
Edit Download
mysql DIR
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
oldrads DIR
- dr-xr-xr-x 2025-09-18 19:05:24
Edit Download
perl DIR
- dr-xr-xr-x 2026-08-31 21:56:13
Edit Download
provision DIR
- dr-xr-xr-x 2026-09-26 06:35:47
Edit Download
python DIR
- dr-xr-xr-x 2026-09-01 13:11:29
Edit Download
suspended DIR
- dr-xr-xr-x 2026-08-31 21:56:13
Edit Download
- dr-xr-xr-x 2026-09-01 13:11:34
Edit Download
799 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.11 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
16.17 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.12 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
8.99 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.44 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.64 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
11.93 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.78 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.93 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.78 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
61 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
3.64 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
22.07 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
5.13 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.48 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
15.96 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.62 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.47 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
5.08 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.24 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.24 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.60 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
696 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
490 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
9.62 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.37 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.89 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.84 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.24 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
5.22 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
3.88 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
9.59 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
35.87 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
713 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.38 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.38 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.88 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
28.32 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.52 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.14 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.21 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
17.70 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
14.05 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.32 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
7.28 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.48 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
5.13 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.63 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
3.48 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.43 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
18.67 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.71 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
353 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.16 MB lr-xr-xr-x 2026-08-31 21:56:53
Edit Download
4.36 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.27 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
9.12 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
530 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
941 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.34 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
7.28 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
50.78 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.47 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.44 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
7.23 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
37.76 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
14.08 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
39.68 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
11.19 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
8.70 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
27.06 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
474 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
71.39 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
4.47 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.82 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
10.82 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
863 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
15.77 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
17.92 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
3.13 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.14 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
19.63 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
53.39 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
373.53 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
26.49 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
2.35 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
186 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.28 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
1.80 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
526 B lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
14.62 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
9.00 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
6.08 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
83.80 KB lr-xr-xr-x 2026-08-31 21:56:13
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).