/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/hostsfilemods (4467B)
#!/usr/lib/rads/venv/bin/python3 __author__ = "NickWe" # This is hostfilemods rewritten from bash to python import argparse import sys # FUNCTIONS def parse_args(): parser = argparse.ArgumentParser(description='Output hosts file entries') group = parser.add_mutually_exclusive_group() group.add_argument( "user", nargs="?", default="", action="store", type=str, help="print hosts entries for specified user", ) group.add_argument( "-a", "--all", action="store_true", default=False, help="output hosts entries for all users", ) group.add_argument( "-l", "--list", action="store_true", default=False, help="list all cPanel users", ) parser.add_argument( "-s", "--separate-line", action="store_true", default=False, help="print www. subdomains on a separate line", ) parser.add_argument( "-r", "--reseller", action="store_true", default=False, help="include hosts for accounts owned by reseller", ) return parser.parse_args() # list all cPanel users def list_users(): user_file = "/etc/trueuserowners" users = [] try: with open(user_file, encoding='utf-8') as raw_users: for user in raw_users: user = user.rstrip("\n") users.append(user.partition(":")[0]) except OSError: print("Error reading file " + user_file) sys.exit(1) return users def get_reseller_children(reseller): user_file = "/etc/trueuserowners" reseller_file = "/var/cpanel/resellers" children = [] try: with open(user_file, encoding="utf-8") as raw_users: with open(reseller_file, encoding="utf-8") as resellers: if reseller not in resellers.read(): print(f"{reseller} is not a reseller!") sys.exit(1) for line in raw_users: if reseller in line: line = line.rstrip("\n") children.append(line.partition(":")[0]) except OSError: print("Error reading file" + user_file) sys.exit(1) return children def obtain_hosts_file_entries(user): userdata_file = "/var/cpanel/users/" + user try: with open(userdata_file, encoding="utf-8") as userdata: domains = [] for line in userdata: line = line.rstrip("\n") if "IP=" in line: ip = line.partition("=")[2] # [2] -> left side if "DNS" in line and not "X" in line: domains.append(line.partition("=")[2]) except OSError: print("Error reading file " + userdata_file) sys.exit(1) return (ip, domains) # separate indicates to print www. lines separately def print_hosts_entries(ip_domains, separate): (ip, domains) = ip_domains for domain in domains: if separate: print(ip + "\t" + domain + "\n" + ip + "\t" + "www." + domain) else: print(ip + "\t" + domain + " " + "www." + domain) # main def main(): args = parse_args() if args.user is None: print("must specify a user or reseller user") sys.exit(1) if args.reseller and args.user: for child in get_reseller_children(args.user): print_hosts_entries( obtain_hosts_file_entries(child), args.separate_line ) elif args.reseller and args.user is None: print("Must specify a reseller!") sys.exit(1) if args.list: print(list_users()) if args.all: # print hosts entries for all users for user in list_users(): print_hosts_entries( obtain_hosts_file_entries(user), args.separate_line ) try: if args.user and not args.reseller: with open("/etc/trueuserowners", encoding="utf-8") as user_file: if args.user not in user_file.read(): print(f"{args.user} is not a valid user!") sys.exit(1) print_hosts_entries( obtain_hosts_file_entries(args.user), args.separate_line ) except OSError: print("Bad input, goodbye") if __name__ == "__main__": main()