/opt/dedrads
NameSizeModeActions
account_review/-0555rm
check_software_mods/-0555rm
cms_tools/-0555rm
etc/-0555rm
extras/-0555rm
mailparse/-0555rm
mysql/-0555rm
nlp_scripts/-0555rm
oldrads/-0555rm
perl/-0555rm
provision/-0555rm
python/-0555rm
suspended/-0555rm
__pycache__/-0555rm
account-review7990555editdlrm
allfw62590555editdlrm
alp.py165530555editdlrm
autossl_sync62670555editdlrm
check_apache92050555editdlrm
check_bandwidth45460555editdlrm
check_boxtrapper16840555editdlrm
check_cpu122120555editdlrm
check_crons18270555editdlrm
check_dcpumon19730555editdlrm
check_dns18270555editdlrm
check_domlogs610555editdlrm
check_exim37310555editdlrm
check_hacks226040555editdlrm
check_imap52490555editdlrm
check_io66350555editdlrm
check_max_children163410555editdlrm
check_mem16600555editdlrm
check_misc15100555editdlrm
check_pacct52010555editdlrm
check_php43440555editdlrm
check_pop322950555editdlrm
check_prov.py47140555editdlrm
check_server6960555editdlrm
check_size4900555editdlrm
check_software98490555editdlrm
check_spamd24260555editdlrm
check_traffic19330555editdlrm
check_user18870555editdlrm
clean_exim.py63900555editdlrm
clusterfix53430555editdlrm
cmspass.py39700555editdlrm
cms_check.py98250555editdlrm
cms_counter.py367340555editdlrm
cms_creds7130555editdlrm
cms_dumpdb44850555editdlrm
cms_pw14160555editdlrm
cpanel-api70400555editdlrm
cpanel_postgres_manager.py290040555editdlrm
cpmerge46310555editdlrm
cpumon21950555editdlrm
dcpumon.pl12390555editdlrm
dedcheck181270555editdlrm
dns-sync143860555editdlrm
docroot.py44250555editdlrm
du-tree74500555editdlrm
envinfo.py66330555editdlrm
exclude_rbl.py52490555editdlrm
extract-vhost26910555editdlrm
filescan35660555editdlrm
find_warez14600555editdlrm
first_setup.py191200555editdlrm
fixwpcron.py48220555editdlrm
fix_dns_cluster3530555editdlrm
goaccess12177200555editdlrm
hostsfilemods44670555editdlrm
imap_io23230555editdlrm
innodb_converter.py93430555editdlrm
killall9115300555editdlrm
killdns9410555editdlrm
lastcommcache.sh13740555editdlrm
legal_lock_down.sh74500555editdlrm
lil-cpanel520020555editdlrm
listacct45750555editdlrm
mailscan45440555editdlrm
mail_sources.py74070555editdlrm
megaclisas-status386640555editdlrm
migrate2central.sh144180555editdlrm
modify-account406310555editdlrm
modsec_disable.py114610555editdlrm
monarxctl89120555editdlrm
msp.pl277140555editdlrm
mysql_dstat4740555editdlrm
mysql_selector.py731020555editdlrm
nlp45820555editdlrm
procscrape18630555editdlrm
quarantine110830555editdlrm
radsfunctions.sh8630555editdlrm
recent-cp161480555editdlrm
remote_dump183470555editdlrm
reset_cpanel32050555editdlrm
server-load21920555editdlrm
show-conns201050555editdlrm
show-conns-adv.py546670555editdlrm
sparta.py3824980555editdlrm
sqltop271290555editdlrm
telcheck24110555editdlrm
temprootreset1860555editdlrm
unsuspend_user13070555editdlrm
unsusprunner.sh18400555editdlrm
updatednsadmin5260555editdlrm
update_spf149720555editdlrm
upgrade-check92160555editdlrm
vhost_data.py62210555editdlrm
wp-xray.sh858160555editdlrm
Edit: /opt/dedrads/cpmerge (4631B)
#!/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()