/
opt
/
dedrads
/
/opt/dedrads
mkdir
upload
Name
Size
Mode
Actions
account_review/
-
0555
rm
check_software_mods/
-
0555
rm
cms_tools/
-
0555
rm
etc/
-
0555
rm
extras/
-
0555
rm
mailparse/
-
0555
rm
mysql/
-
0555
rm
nlp_scripts/
-
0555
rm
oldrads/
-
0555
rm
perl/
-
0555
rm
provision/
-
0555
rm
python/
-
0555
rm
suspended/
-
0555
rm
__pycache__/
-
0555
rm
account-review
799
0555
edit
dl
rm
allfw
6259
0555
edit
dl
rm
alp.py
16553
0555
edit
dl
rm
autossl_sync
6267
0555
edit
dl
rm
check_apache
9205
0555
edit
dl
rm
check_bandwidth
4546
0555
edit
dl
rm
check_boxtrapper
1684
0555
edit
dl
rm
check_cpu
12212
0555
edit
dl
rm
check_crons
1827
0555
edit
dl
rm
check_dcpumon
1973
0555
edit
dl
rm
check_dns
1827
0555
edit
dl
rm
check_domlogs
61
0555
edit
dl
rm
check_exim
3731
0555
edit
dl
rm
check_hacks
22604
0555
edit
dl
rm
check_imap
5249
0555
edit
dl
rm
check_io
6635
0555
edit
dl
rm
check_max_children
16341
0555
edit
dl
rm
check_mem
1660
0555
edit
dl
rm
check_misc
1510
0555
edit
dl
rm
check_pacct
5201
0555
edit
dl
rm
check_php
4344
0555
edit
dl
rm
check_pop3
2295
0555
edit
dl
rm
check_prov.py
4714
0555
edit
dl
rm
check_server
696
0555
edit
dl
rm
check_size
490
0555
edit
dl
rm
check_software
9849
0555
edit
dl
rm
check_spamd
2426
0555
edit
dl
rm
check_traffic
1933
0555
edit
dl
rm
check_user
1887
0555
edit
dl
rm
clean_exim.py
6390
0555
edit
dl
rm
clusterfix
5343
0555
edit
dl
rm
cmspass.py
3970
0555
edit
dl
rm
cms_check.py
9825
0555
edit
dl
rm
cms_counter.py
36734
0555
edit
dl
rm
cms_creds
713
0555
edit
dl
rm
cms_dumpdb
4485
0555
edit
dl
rm
cms_pw
1416
0555
edit
dl
rm
cpanel-api
7040
0555
edit
dl
rm
cpanel_postgres_manager.py
29004
0555
edit
dl
rm
cpmerge
4631
0555
edit
dl
rm
cpumon
2195
0555
edit
dl
rm
dcpumon.pl
1239
0555
edit
dl
rm
dedcheck
18127
0555
edit
dl
rm
dns-sync
14386
0555
edit
dl
rm
docroot.py
4425
0555
edit
dl
rm
du-tree
7450
0555
edit
dl
rm
envinfo.py
6633
0555
edit
dl
rm
exclude_rbl.py
5249
0555
edit
dl
rm
extract-vhost
2691
0555
edit
dl
rm
filescan
3566
0555
edit
dl
rm
find_warez
1460
0555
edit
dl
rm
first_setup.py
19120
0555
edit
dl
rm
fixwpcron.py
4822
0555
edit
dl
rm
fix_dns_cluster
353
0555
edit
dl
rm
goaccess
1217720
0555
edit
dl
rm
hostsfilemods
4467
0555
edit
dl
rm
imap_io
2323
0555
edit
dl
rm
innodb_converter.py
9343
0555
edit
dl
rm
killall911
530
0555
edit
dl
rm
killdns
941
0555
edit
dl
rm
lastcommcache.sh
1374
0555
edit
dl
rm
legal_lock_down.sh
7450
0555
edit
dl
rm
lil-cpanel
52002
0555
edit
dl
rm
listacct
4575
0555
edit
dl
rm
mailscan
4544
0555
edit
dl
rm
mail_sources.py
7407
0555
edit
dl
rm
megaclisas-status
38664
0555
edit
dl
rm
migrate2central.sh
14418
0555
edit
dl
rm
modify-account
40631
0555
edit
dl
rm
modsec_disable.py
11461
0555
edit
dl
rm
monarxctl
8912
0555
edit
dl
rm
msp.pl
27714
0555
edit
dl
rm
mysql_dstat
474
0555
edit
dl
rm
mysql_selector.py
73102
0555
edit
dl
rm
nlp
4582
0555
edit
dl
rm
procscrape
1863
0555
edit
dl
rm
quarantine
11083
0555
edit
dl
rm
radsfunctions.sh
863
0555
edit
dl
rm
recent-cp
16148
0555
edit
dl
rm
remote_dump
18347
0555
edit
dl
rm
reset_cpanel
3205
0555
edit
dl
rm
server-load
2192
0555
edit
dl
rm
show-conns
20105
0555
edit
dl
rm
show-conns-adv.py
54667
0555
edit
dl
rm
sparta.py
382498
0555
edit
dl
rm
sqltop
27129
0555
edit
dl
rm
telcheck
2411
0555
edit
dl
rm
temprootreset
186
0555
edit
dl
rm
unsuspend_user
1307
0555
edit
dl
rm
unsusprunner.sh
1840
0555
edit
dl
rm
updatednsadmin
526
0555
edit
dl
rm
update_spf
14972
0555
edit
dl
rm
upgrade-check
9216
0555
edit
dl
rm
vhost_data.py
6221
0555
edit
dl
rm
wp-xray.sh
85816
0555
edit
dl
rm
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()
Save
cmd:
run