/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/reset_cpanel (3205B)
#!/usr/lib/rads/venv/bin/python3 """Resets cPanel passwords on VPS/Dedi""" from os import listdir import sys from pathlib import Path import os import random import string import argparse import logging from cpapis import whmapi1 from rads import color, setup_logging, is_cpuser def api_success(json_response): """deprecated""" try: return int(json_response['status']) == 1 except (TypeError, KeyError, ValueError): pass try: return int(json_response['metadata']['result']) == 1 except (TypeError, KeyError, ValueError): pass try: return int(json_response['result']['status']) == 1 except (TypeError, KeyError, ValueError): try: return int(json_response['result'][0]['status']) == 1 except (TypeError, IndexError, KeyError, ValueError): pass return False def get_args(): """Parse users from commandline, prompt for them, or take option for all""" parser = argparse.ArgumentParser(description=__doc__) group = parser.add_mutually_exclusive_group() # fmt: off group.add_argument( '-u', '--user', dest='users', nargs='*', default=[], help='user(s) to reset password for', ) group.add_argument( '-a', '--all', action="store_true", help='reset ALL cPanel passwords' ) parser.add_argument( '-m', '--message', help='This flag is here for compatibility with sharedrads and ' 'does nothing.', ) # fmt: on args = parser.parse_args() if args.all: return get_cpusers() if args.users: for user in args.users: if not is_cpuser(user): print(f'{user} is not a valid cpanel user') args.users.remove(user) return args.users sys.exit('-u [user [user...]] or -a expected') def get_cpusers(): """get a list of all cPanel users""" cpaneluserdir = '/var/cpanel/users/' cpanelusers = [f for f in listdir(cpaneluserdir) if is_cpuser(f)] return cpanelusers def reset_users_from_list(user_list): """loop through user_list and reset password""" length = 13 chars = '{0.ascii_letters}{0.digits}!@#$%^&*()'.format(string) for editinguser in user_list: random.seed = os.urandom(1024) newpass = ''.join(random.choice(chars) for i in range(length)) print(f"New cPanel Password for {editinguser}: {color.yellow(newpass)}") if api_success( whmapi1('passwd', {"user": editinguser, "password": newpass}) ): print(color.green('success')) else: print(color.red('FAILED')) # clear sessions in whm/cpanel sessions = Path("/var/cpanel/sessions/") for file in (sessions / "raw").glob(f"{editinguser}:*"): file.unlink() for file in (sessions / "cache").glob(f"{editinguser}:*"): file.unlink() def main(): """Main function: setup loging, obtain args, reset passwords""" setup_logging( path='/var/log/suspension.log', loglevel=logging.INFO, print_out=False ) results = get_args() reset_users_from_list(results) if __name__ == "__main__": main()